Merge lp:~stewart/percona-server/5.5.31 into lp:percona-server/5.5

Proposed by Stewart Smith
Status: Merged
Approved by: Laurynas Biveinis
Approved revision: no longer in the source branch.
Merged at revision: 517
Proposed branch: lp:~stewart/percona-server/5.5.31
Merge into: lp:percona-server/5.5
Diff against target: 147486 lines (+70734/-68859)
260 files modified
Percona-Server/BUILD/compile-alpha-debug (+2/-1)
Percona-Server/BUILD/compile-amd64-debug-max (+2/-1)
Percona-Server/BUILD/compile-amd64-max (+2/-1)
Percona-Server/BUILD/compile-darwin-mwcc (+2/-1)
Percona-Server/BUILD/compile-hpux11-parisc2-aCC (+2/-1)
Percona-Server/BUILD/compile-irix-mips64-mipspro (+2/-1)
Percona-Server/BUILD/compile-ndb-autotest (+1/-1)
Percona-Server/BUILD/compile-pentium (+2/-1)
Percona-Server/BUILD/compile-pentium-debug-max-no-embedded (+2/-1)
Percona-Server/BUILD/compile-pentium-debug-max-no-ndb (+1/-1)
Percona-Server/BUILD/compile-pentium-max (+2/-1)
Percona-Server/BUILD/compile-pentium-pgcc (+2/-1)
Percona-Server/BUILD/compile-ppc-debug (+2/-1)
Percona-Server/BUILD/compile-ppc-debug-max (+2/-1)
Percona-Server/BUILD/compile-ppc-debug-max-no-ndb (+2/-1)
Percona-Server/BUILD/compile-ppc-max (+2/-1)
Percona-Server/BUILD/compile-solaris-sparc-debug (+2/-1)
Percona-Server/BUILD/compile-solaris-sparc-purify (+2/-1)
Percona-Server/VERSION (+1/-1)
Percona-Server/client/client_priv.h (+1/-1)
Percona-Server/client/completion_hash.h (+2/-1)
Percona-Server/client/echo.c (+2/-1)
Percona-Server/client/get_password.c (+2/-1)
Percona-Server/client/mysqlcheck.c (+61/-27)
Percona-Server/client/mysqldump.c (+1/-1)
Percona-Server/client/sql_string.cc (+2/-2)
Percona-Server/cmake/configure.pl (+1/-1)
Percona-Server/cmake/create_initial_db.cmake.in (+1/-1)
Percona-Server/cmake/make_dist.cmake.in (+1/-1)
Percona-Server/cmake/mysql_version.cmake (+1/-1)
Percona-Server/cmake/package_name.cmake (+1/-1)
Percona-Server/cmake/plugin.cmake (+1/-1)
Percona-Server/cmake/ssl.cmake (+1/-1)
Percona-Server/cmake/zlib.cmake (+6/-2)
Percona-Server/configure.cmake (+1/-1)
Percona-Server/extra/charset2html.c (+2/-1)
Percona-Server/extra/yassl/CMakeLists.txt (+1/-1)
Percona-Server/extra/yassl/examples/client/client.cpp (+1/-1)
Percona-Server/extra/yassl/examples/echoclient/echoclient.cpp (+1/-1)
Percona-Server/extra/yassl/examples/echoserver/echoserver.cpp (+1/-1)
Percona-Server/extra/yassl/examples/server/server.cpp (+1/-1)
Percona-Server/extra/yassl/include/buffer.hpp (+1/-1)
Percona-Server/extra/yassl/include/cert_wrapper.hpp (+1/-2)
Percona-Server/extra/yassl/include/lock.hpp (+1/-1)
Percona-Server/extra/yassl/include/openssl/prefix_ssl.h (+1/-2)
Percona-Server/extra/yassl/include/socket_wrapper.hpp (+1/-1)
Percona-Server/extra/yassl/include/yassl_error.hpp (+3/-3)
Percona-Server/extra/yassl/include/yassl_imp.hpp (+1/-2)
Percona-Server/extra/yassl/include/yassl_int.hpp (+1/-1)
Percona-Server/extra/yassl/include/yassl_types.hpp (+6/-3)
Percona-Server/extra/yassl/src/buffer.cpp (+1/-2)
Percona-Server/extra/yassl/src/cert_wrapper.cpp (+1/-2)
Percona-Server/extra/yassl/src/crypto_wrapper.cpp (+1/-1)
Percona-Server/extra/yassl/src/handshake.cpp (+36/-2)
Percona-Server/extra/yassl/src/lock.cpp (+1/-1)
Percona-Server/extra/yassl/src/make.bat (+1/-1)
Percona-Server/extra/yassl/src/socket_wrapper.cpp (+1/-1)
Percona-Server/extra/yassl/src/ssl.cpp (+1/-2)
Percona-Server/extra/yassl/src/template_instnt.cpp (+2/-1)
Percona-Server/extra/yassl/src/yassl.cpp (+1/-1)
Percona-Server/extra/yassl/src/yassl_error.cpp (+5/-1)
Percona-Server/extra/yassl/src/yassl_imp.cpp (+172/-26)
Percona-Server/extra/yassl/taocrypt/benchmark/benchmark.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/benchmark/make.bat (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/aes.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/asn.hpp (+1/-2)
Percona-Server/extra/yassl/taocrypt/include/block.hpp (+1/-2)
Percona-Server/extra/yassl/taocrypt/include/blowfish.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/des.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/hash.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/hc128.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/integer.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/kernelc.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/misc.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/modes.hpp (+1/-2)
Percona-Server/extra/yassl/taocrypt/include/pwdbased.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/rabbit.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/rsa.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/runtime.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/include/types.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/mySTL/stdexcept.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/mySTL/vector.hpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/aes.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/aestables.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/algebra.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/arc4.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/blowfish.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/coding.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/dsa.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/hash.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/hc128.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/make.bat (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/md4.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/md5.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/misc.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/rabbit.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/random.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/ripemd.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/rsa.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/sha.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/template_instnt.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/src/twofish.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/test/make.bat (+1/-1)
Percona-Server/extra/yassl/taocrypt/test/memory.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/test/test.cpp (+1/-1)
Percona-Server/extra/yassl/testsuite/make.bat (+1/-1)
Percona-Server/extra/yassl/testsuite/test.hpp (+1/-1)
Percona-Server/extra/yassl/testsuite/testsuite.cpp (+1/-1)
Percona-Server/include/base64.h (+2/-1)
Percona-Server/include/ft_global.h (+1/-1)
Percona-Server/include/m_ctype.h (+3/-1)
Percona-Server/include/m_string.h (+1/-1)
Percona-Server/include/my_md5.h (+2/-1)
Percona-Server/include/my_sys.h (+1/-1)
Percona-Server/include/my_user.h (+2/-1)
Percona-Server/include/my_xml.h (+2/-1)
Percona-Server/include/myisampack.h (+1/-1)
Percona-Server/include/mysql.h (+1/-1)
Percona-Server/include/mysql/service_my_snprintf.h (+1/-1)
Percona-Server/include/mysql/thread_pool_priv.h (+1/-1)
Percona-Server/include/mysql_time.h (+2/-1)
Percona-Server/include/mysql_version.h.in (+2/-1)
Percona-Server/include/welcome_copyright_notice.h (+1/-1)
Percona-Server/libmysql/libmysql.c (+8/-1)
Percona-Server/mysql-test/collections/default.experimental (+1/-0)
Percona-Server/mysql-test/include/get_relay_log_pos.inc (+1/-1)
Percona-Server/mysql-test/include/rpl_init.inc (+0/-3)
Percona-Server/mysql-test/mysql-test-run.pl (+23/-4)
Percona-Server/mysql-test/r/cast.result (+18/-0)
Percona-Server/mysql-test/r/ctype_utf8mb4.result (+18/-0)
Percona-Server/mysql-test/r/join_outer.result (+32/-0)
Percona-Server/mysql-test/r/partition.result (+2/-2)
Percona-Server/mysql-test/r/percona_server_variables_debug.result (+1/-0)
Percona-Server/mysql-test/r/show_check.result (+9/-9)
Percona-Server/mysql-test/suite/binlog/r/binlog_spurious_ddl_errors.result (+1/-0)
Percona-Server/mysql-test/suite/binlog/t/binlog_spurious_ddl_errors.test (+3/-1)
Percona-Server/mysql-test/suite/binlog/t/disabled.def (+1/-1)
Percona-Server/mysql-test/suite/innodb/r/innodb_bug14147491.result (+15/-4)
Percona-Server/mysql-test/suite/innodb/t/innodb_bug12400341.test (+4/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_bug14147491.test (+45/-9)
Percona-Server/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result (+11605/-11605)
Percona-Server/mysql-test/suite/parts/r/partition_alter1_1_innodb.result (+32/-32)
Percona-Server/mysql-test/suite/parts/r/partition_alter1_2_innodb.result (+21002/-21002)
Percona-Server/mysql-test/suite/parts/r/partition_alter2_1_1_innodb.result (+40/-40)
Percona-Server/mysql-test/suite/parts/r/partition_alter2_1_2_innodb.result (+40/-40)
Percona-Server/mysql-test/suite/parts/r/partition_alter2_2_1_innodb.result (+11354/-11354)
Percona-Server/mysql-test/suite/parts/r/partition_alter2_2_2_innodb.result (+40/-40)
Percona-Server/mysql-test/suite/parts/r/partition_alter4_innodb.result (+208/-208)
Percona-Server/mysql-test/suite/parts/r/partition_basic_innodb.result (+23390/-23390)
Percona-Server/mysql-test/suite/parts/r/partition_engine_innodb.result (+11/-11)
Percona-Server/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result (+12/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_row_until.result (+12/-10)
Percona-Server/mysql-test/suite/rpl/r/rpl_stm_until.result (+1/-11)
Percona-Server/mysql-test/suite/rpl/t/disabled.def (+0/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test (+12/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_row_until.test (+52/-25)
Percona-Server/mysql-test/suite/rpl/t/rpl_stm_until.test (+2/-33)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_buffer_pool_evict_basic.result (+7/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_buffer_pool_evict_basic.test (+10/-0)
Percona-Server/mysql-test/t/cast.test (+13/-0)
Percona-Server/mysql-test/t/ctype_utf8mb4.test (+15/-0)
Percona-Server/mysql-test/t/join_outer.test (+30/-0)
Percona-Server/mysql-test/t/mysql_plugin.test (+16/-50)
Percona-Server/mysys/errors.c (+2/-2)
Percona-Server/mysys/mf_keycache.c (+2/-1)
Percona-Server/mysys/my_lockmem.c (+1/-1)
Percona-Server/mysys/my_malloc.c (+9/-3)
Percona-Server/mysys/my_once.c (+1/-1)
Percona-Server/mysys/my_write.c (+3/-3)
Percona-Server/mysys/thr_alarm.c (+8/-14)
Percona-Server/packaging/WiX/mysql_server.wxs.in (+5/-2)
Percona-Server/packaging/rpm-uln/mysql.spec.sh (+18/-11)
Percona-Server/regex/my_regex.h (+1/-1)
Percona-Server/regex/regcomp.c (+1/-1)
Percona-Server/scripts/mysql_system_tables_data.sql (+9/-5)
Percona-Server/sql/CMakeLists.txt (+3/-9)
Percona-Server/sql/db.opt (+2/-0)
Percona-Server/sql/ha_partition.cc (+469/-25)
Percona-Server/sql/ha_partition.h (+16/-4)
Percona-Server/sql/handler.cc (+16/-2)
Percona-Server/sql/item.cc (+2/-2)
Percona-Server/sql/item.h (+19/-1)
Percona-Server/sql/item_cmpfunc.cc (+4/-3)
Percona-Server/sql/item_func.cc (+2/-2)
Percona-Server/sql/item_func.h (+12/-9)
Percona-Server/sql/item_sum.cc (+4/-0)
Percona-Server/sql/key.cc (+72/-44)
Percona-Server/sql/key.h (+3/-1)
Percona-Server/sql/log_event.cc (+11/-5)
Percona-Server/sql/log_event.h (+28/-2)
Percona-Server/sql/mysqld.cc (+25/-6)
Percona-Server/sql/mysqld.h (+1/-0)
Percona-Server/sql/opt_range.cc (+91/-19)
Percona-Server/sql/partition_element.h (+3/-4)
Percona-Server/sql/partition_info.cc (+286/-2)
Percona-Server/sql/partition_info.h (+16/-1)
Percona-Server/sql/rpl_utility.cc (+1/-0)
Percona-Server/sql/set_var.cc (+7/-10)
Percona-Server/sql/set_var.h (+23/-7)
Percona-Server/sql/sp_head.cc (+2/-1)
Percona-Server/sql/sql_acl.cc (+2/-1)
Percona-Server/sql/sql_admin.cc (+3/-2)
Percona-Server/sql/sql_admin.h (+3/-1)
Percona-Server/sql/sql_binlog.cc (+1/-1)
Percona-Server/sql/sql_class.cc (+12/-6)
Percona-Server/sql/sql_handler.cc (+10/-5)
Percona-Server/sql/sql_partition.cc (+200/-19)
Percona-Server/sql/sql_partition.h (+3/-2)
Percona-Server/sql/sql_partition_admin.cc (+3/-1)
Percona-Server/sql/sql_prepare.cc (+4/-3)
Percona-Server/sql/sql_repl.cc (+17/-33)
Percona-Server/sql/sql_select.cc (+4/-3)
Percona-Server/sql/sql_show.cc (+23/-15)
Percona-Server/sql/sql_string.cc (+1/-1)
Percona-Server/sql/sql_table.cc (+7/-4)
Percona-Server/sql/sql_view.cc (+9/-3)
Percona-Server/sql/sql_yacc.yy (+22/-3)
Percona-Server/sql/sys_vars.cc (+1/-1)
Percona-Server/storage/innobase/btr/btr0cur.c (+27/-20)
Percona-Server/storage/innobase/buf/buf0buf.c (+14/-2)
Percona-Server/storage/innobase/buf/buf0rea.c (+1/-1)
Percona-Server/storage/innobase/dict/dict0crea.c (+9/-0)
Percona-Server/storage/innobase/dict/dict0dict.c (+13/-3)
Percona-Server/storage/innobase/dyn/dyn0dyn.c (+4/-4)
Percona-Server/storage/innobase/handler/ha_innodb.cc (+110/-2)
Percona-Server/storage/innobase/handler/i_s.cc (+2/-1)
Percona-Server/storage/innobase/ibuf/ibuf0ibuf.c (+11/-1)
Percona-Server/storage/innobase/include/db0err.h (+1/-0)
Percona-Server/storage/innobase/include/dyn0dyn.h (+50/-38)
Percona-Server/storage/innobase/include/dyn0dyn.ic (+42/-101)
Percona-Server/storage/innobase/include/ha_prototypes.h (+11/-0)
Percona-Server/storage/innobase/include/mtr0mtr.h (+6/-4)
Percona-Server/storage/innobase/include/page0zip.ic (+3/-3)
Percona-Server/storage/innobase/include/ut0dbg.h (+0/-40)
Percona-Server/storage/innobase/lock/lock0lock.c (+5/-0)
Percona-Server/storage/innobase/mtr/mtr0mtr.c (+80/-77)
Percona-Server/storage/innobase/page/page0zip.c (+6/-5)
Percona-Server/storage/innobase/row/row0mysql.c (+1/-1)
Percona-Server/storage/innobase/row/row0sel.c (+5/-1)
Percona-Server/storage/innobase/srv/srv0srv.c (+27/-15)
Percona-Server/storage/innobase/sync/sync0arr.c (+4/-4)
Percona-Server/storage/innobase/trx/trx0sys.c (+1/-1)
Percona-Server/storage/innobase/ut/ut0dbg.c (+1/-33)
Percona-Server/storage/innobase/ut/ut0ut.c (+2/-0)
Percona-Server/storage/myisam/mi_write.c (+8/-5)
Percona-Server/storage/myisam/myisampack.c (+2/-1)
Percona-Server/storage/perfschema/pfs_engine_table.cc (+4/-4)
Percona-Server/storage/perfschema/pfs_global.cc (+2/-2)
Percona-Server/storage/perfschema/pfs_global.h (+2/-2)
Percona-Server/strings/ctype-bin.c (+20/-7)
Percona-Server/strings/ctype-mb.c (+39/-12)
Percona-Server/strings/ctype-simple.c (+20/-6)
Percona-Server/strings/ctype-uca.c (+19/-7)
Percona-Server/strings/ctype-utf8.c (+23/-10)
Percona-Server/strings/ctype.c (+2/-0)
Percona-Server/strings/decimal.c (+2/-2)
Percona-Server/support-files/MySQL-shared-compat.spec.sh (+1/-1)
Percona-Server/support-files/mysql.spec.sh (+124/-57)
Percona-Server/unittest/mysys/my_vsnprintf-t.c (+3/-1)
Percona-Server/vio/viossl.c (+3/-0)
To merge this branch: bzr merge lp:~stewart/percona-server/5.5.31
Reviewer Review Type Date Requested Status
Laurynas Biveinis (community) Approve
Review via email: mp+163837@code.launchpad.net

This proposal supersedes a proposal from 2013-05-14.

Description of the change

This was very trivial merge - a few places where code had been added around the same place where we added some, but nothing more than a few lines.

http://jenkins.percona.com/view/PS%205.5/job/percona-server-5.5-param/732/

some failures due to lacking libeatmydata on some build machines :(

To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote : Posted in a previous version of this proposal
review: Needs Information
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote : Posted in a previous version of this proposal
review: Needs Fixing
Revision history for this message
Stewart Smith (stewart) wrote : Posted in a previous version of this proposal

Laurynas Biveinis <email address hidden> writes:
> Review: Needs Information
>
> Please make sure that items in
> https://blueprints.launchpad.net/percona-server/+spec/rebase-mysql-5.5.31
> are addressed.

Ovias looked into things:
http://www.mysqlperformanceblog.com/2013/01/13/cve-2012-4414-in-mysql-5-5-29-and-percona-server-5-5-29/#comments

Which appears that we can't swap it out yet :(

--
Stewart Smith

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote : Posted in a previous version of this proposal

Upstream has added RETURN_IF_INNODB_NOT_STARTED where we already had one:

@@ -3496,6 +3498,7 @@
  mutex_t* block_mutex;

  DBUG_ENTER("i_s_innodb_fill_buffer_lru");
+ RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);

  RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);

review: Needs Fixing
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote : Posted in a previous version of this proposal

I missed that bug 1072573 needs fixing on 5.1, thus please make separate 5.1/5.5/5.6 MPs.

Please compact all the remaining commits to a single one.

review: Needs Fixing
Revision history for this message
Stewart Smith (stewart) wrote : Posted in a previous version of this proposal

> I missed that bug 1072573 needs fixing on 5.1, thus please make separate
> 5.1/5.5/5.6 MPs.
>
> Please compact all the remaining commits to a single one.

Done. resubmitting this merge, with 1072573 in sep merge reqs

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

Let's see if we can merge this to the trunk only after 5.6.11 has been merged.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Percona-Server/BUILD/compile-alpha-debug'
--- Percona-Server/BUILD/compile-alpha-debug 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-alpha-debug 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2000, 2005 MySQL AB3# Copyright (c) 2000, 2001, 2005-2007 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-amd64-debug-max'
--- Percona-Server/BUILD/compile-amd64-debug-max 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-amd64-debug-max 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2005 MySQL AB3# Copyright (c) 2005, 2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-amd64-max'
--- Percona-Server/BUILD/compile-amd64-max 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-amd64-max 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2005 MySQL AB3# Copyright (c) 2005, 2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-darwin-mwcc'
--- Percona-Server/BUILD/compile-darwin-mwcc 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-darwin-mwcc 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2005 MySQL AB3# Copyright (c) 2005, 2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-hpux11-parisc2-aCC'
--- Percona-Server/BUILD/compile-hpux11-parisc2-aCC 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-hpux11-parisc2-aCC 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#!/bin/sh1#!/bin/sh
22
3# Copyright (C) 2004, 2005 MySQL AB3# Copyright (c) 2004, 2005, 2007 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-irix-mips64-mipspro'
--- Percona-Server/BUILD/compile-irix-mips64-mipspro 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-irix-mips64-mipspro 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#!/bin/sh1#!/bin/sh
22
3# Copyright (C) 2004, 2005 MySQL AB3# Copyright (c) 2004, 2005, 2007 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-ndb-autotest'
--- Percona-Server/BUILD/compile-ndb-autotest 2010-12-29 00:26:31 +0000
+++ Percona-Server/BUILD/compile-ndb-autotest 2013-05-15 05:12:25 +0000
@@ -1,6 +1,6 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2006 MySQL AB3# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
4# 4#
5# This program is free software; you can redistribute it and/or modify5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by6# it under the terms of the GNU General Public License as published by
77
=== modified file 'Percona-Server/BUILD/compile-pentium'
--- Percona-Server/BUILD/compile-pentium 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-pentium 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2000, 2002 MySQL AB3# Copyright (c) 2000-2002, 2007 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-pentium-debug-max-no-embedded'
--- Percona-Server/BUILD/compile-pentium-debug-max-no-embedded 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-pentium-debug-max-no-embedded 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2004, 2005 MySQL AB3# Copyright (c) 2004-2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-pentium-debug-max-no-ndb'
--- Percona-Server/BUILD/compile-pentium-debug-max-no-ndb 2010-12-29 00:26:31 +0000
+++ Percona-Server/BUILD/compile-pentium-debug-max-no-ndb 2013-05-15 05:12:25 +0000
@@ -1,6 +1,6 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2005, 2007 MySQL AB3# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
4# 4#
5# This program is free software; you can redistribute it and/or modify5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by6# it under the terms of the GNU General Public License as published by
77
=== modified file 'Percona-Server/BUILD/compile-pentium-max'
--- Percona-Server/BUILD/compile-pentium-max 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-pentium-max 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2001, 2005 MySQL AB3# Copyright (c) 2001-2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-pentium-pgcc'
--- Percona-Server/BUILD/compile-pentium-pgcc 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-pentium-pgcc 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2000, 2005 MySQL AB3# Copyright (c) 2000, 2001, 2005, 2007 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-ppc-debug'
--- Percona-Server/BUILD/compile-ppc-debug 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-ppc-debug 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2004 MySQL AB3# Copyright (c) 2004, 2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-ppc-debug-max'
--- Percona-Server/BUILD/compile-ppc-debug-max 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-ppc-debug-max 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2004, 2005 MySQL AB3# Copyright (c) 2004-2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-ppc-debug-max-no-ndb'
--- Percona-Server/BUILD/compile-ppc-debug-max-no-ndb 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-ppc-debug-max-no-ndb 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2005 MySQL AB3# Copyright (c) 2005, 2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-ppc-max'
--- Percona-Server/BUILD/compile-ppc-max 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-ppc-max 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2004, 2005 MySQL AB3# Copyright (c) 2004-2006 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-solaris-sparc-debug'
--- Percona-Server/BUILD/compile-solaris-sparc-debug 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-solaris-sparc-debug 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#!/bin/sh1#!/bin/sh
22
3# Copyright (C) 2001, 2005 MySQL AB3# Copyright (c) 2001, 2002, 2005-2007 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/BUILD/compile-solaris-sparc-purify'
--- Percona-Server/BUILD/compile-solaris-sparc-purify 2010-12-28 23:47:05 +0000
+++ Percona-Server/BUILD/compile-solaris-sparc-purify 2013-05-15 05:12:25 +0000
@@ -1,6 +1,7 @@
1#! /bin/sh1#! /bin/sh
22
3# Copyright (C) 2000, 2005 MySQL AB3# Copyright (c) 2000-2002, 2005-2007 MySQL AB
4# Use is subject to license terms
4# 5#
5# This program is free software; you can redistribute it and/or modify6# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by7# it under the terms of the GNU General Public License as published by
78
=== modified file 'Percona-Server/VERSION'
--- Percona-Server/VERSION 2013-02-18 04:48:10 +0000
+++ Percona-Server/VERSION 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1MYSQL_VERSION_MAJOR=51MYSQL_VERSION_MAJOR=5
2MYSQL_VERSION_MINOR=52MYSQL_VERSION_MINOR=5
3MYSQL_VERSION_PATCH=303MYSQL_VERSION_PATCH=31
4MYSQL_VERSION_EXTRA=4MYSQL_VERSION_EXTRA=
55
=== modified file 'Percona-Server/client/client_priv.h'
--- Percona-Server/client/client_priv.h 2012-08-07 06:10:00 +0000
+++ Percona-Server/client/client_priv.h 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/client/completion_hash.h'
--- Percona-Server/client/completion_hash.h 2010-12-28 18:57:23 +0000
+++ Percona-Server/client/completion_hash.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright (C) 2000-2002 MySQL AB1/* Copyright (c) 2000-2002, 2006 MySQL AB
2 Use is subject to license terms
23
3 This program is free software; you can redistribute it and/or4 This program is free software; you can redistribute it and/or
4 modify it under the terms of the GNU Library General Public5 modify it under the terms of the GNU Library General Public
56
=== modified file 'Percona-Server/client/echo.c'
--- Percona-Server/client/echo.c 2007-03-20 17:31:49 +0000
+++ Percona-Server/client/echo.c 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright (C) 2000 MySQL AB1/* Copyright (c) 2000, 2007 MySQL AB
2 Use is subject to license terms
23
3 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
56
=== modified file 'Percona-Server/client/get_password.c'
--- Percona-Server/client/get_password.c 2008-02-19 17:45:11 +0000
+++ Percona-Server/client/get_password.c 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright (C) 2000 MySQL AB1/* Copyright (c) 2000, 2001, 2003, 2006, 2008 MySQL AB
2 Use is subject to license terms
23
3 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
56
=== modified file 'Percona-Server/client/mysqlcheck.c'
--- Percona-Server/client/mysqlcheck.c 2012-08-07 13:37:13 +0000
+++ Percona-Server/client/mysqlcheck.c 2013-05-15 05:12:25 +0000
@@ -15,7 +15,7 @@
15 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA15 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16*/16*/
1717
18#define CHECK_VERSION "2.5.0"18#define CHECK_VERSION "2.5.1"
1919
20#include "client_priv.h"20#include "client_priv.h"
21#include <m_ctype.h>21#include <m_ctype.h>
@@ -29,6 +29,10 @@
29#define EX_USAGE 129#define EX_USAGE 1
30#define EX_MYSQLERR 230#define EX_MYSQLERR 2
3131
32/* ALTER instead of repair. */
33#define MAX_ALTER_STR_SIZE 128 * 1024
34#define KEY_PARTITIONING_CHANGED_STR "KEY () partitioning changed"
35
32static MYSQL mysql_connection, *sock = 0;36static MYSQL mysql_connection, *sock = 0;
33static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0,37static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0,
34 opt_compress = 0, opt_databases = 0, opt_fast = 0,38 opt_compress = 0, opt_databases = 0, opt_fast = 0,
@@ -44,7 +48,7 @@
44 *default_charset= 0, *current_host= 0;48 *default_charset= 0, *current_host= 0;
45static char *opt_plugin_dir= 0, *opt_default_auth= 0;49static char *opt_plugin_dir= 0, *opt_default_auth= 0;
46static int first_error = 0;50static int first_error = 0;
47DYNAMIC_ARRAY tables4repair, tables4rebuild;51DYNAMIC_ARRAY tables4repair, tables4rebuild, alter_table_cmds;
48#ifdef HAVE_SMEM52#ifdef HAVE_SMEM
49static char *shared_memory_base_name=0;53static char *shared_memory_base_name=0;
50#endif54#endif
@@ -591,6 +595,17 @@
591} /* process_all_tables_in_db */595} /* process_all_tables_in_db */
592596
593597
598static int run_query(const char *query)
599{
600 if (mysql_query(sock, query))
601 {
602 fprintf(stderr, "Failed to %s\n", query);
603 fprintf(stderr, "Error: %s\n", mysql_error(sock));
604 return 1;
605 }
606 return 0;
607}
608
594609
595static int fix_table_storage_name(const char *name)610static int fix_table_storage_name(const char *name)
596{611{
@@ -599,12 +614,7 @@
599 if (strncmp(name, "#mysql50#", 9))614 if (strncmp(name, "#mysql50#", 9))
600 return 1;615 return 1;
601 sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9);616 sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9);
602 if (mysql_query(sock, qbuf))617 rc= run_query(qbuf);
603 {
604 fprintf(stderr, "Failed to %s\n", qbuf);
605 fprintf(stderr, "Error: %s\n", mysql_error(sock));
606 rc= 1;
607 }
608 if (verbose)618 if (verbose)
609 printf("%-50s %s\n", name, rc ? "FAILED" : "OK");619 printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
610 return rc;620 return rc;
@@ -617,12 +627,7 @@
617 if (strncmp(name, "#mysql50#", 9))627 if (strncmp(name, "#mysql50#", 9))
618 return 1;628 return 1;
619 sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name);629 sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name);
620 if (mysql_query(sock, qbuf))630 rc= run_query(qbuf);
621 {
622 fprintf(stderr, "Failed to %s\n", qbuf);
623 fprintf(stderr, "Error: %s\n", mysql_error(sock));
624 rc= 1;
625 }
626 if (verbose)631 if (verbose)
627 printf("%-50s %s\n", name, rc ? "FAILED" : "OK");632 printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
628 return rc;633 return rc;
@@ -685,13 +690,7 @@
685static int disable_binlog()690static int disable_binlog()
686{691{
687 const char *stmt= "SET SQL_LOG_BIN=0";692 const char *stmt= "SET SQL_LOG_BIN=0";
688 if (mysql_query(sock, stmt))693 return run_query(stmt);
689 {
690 fprintf(stderr, "Failed to %s\n", stmt);
691 fprintf(stderr, "Error: %s\n", mysql_error(sock));
692 return 1;
693 }
694 return 0;
695}694}
696695
697static int handle_request_for_tables(char *tables, uint length)696static int handle_request_for_tables(char *tables, uint length)
@@ -761,12 +760,14 @@
761 MYSQL_RES *res;760 MYSQL_RES *res;
762 MYSQL_ROW row;761 MYSQL_ROW row;
763 char prev[NAME_LEN*2+2];762 char prev[NAME_LEN*2+2];
763 char prev_alter[MAX_ALTER_STR_SIZE];
764 uint i;764 uint i;
765 my_bool found_error=0, table_rebuild=0;765 my_bool found_error=0, table_rebuild=0;
766766
767 res = mysql_use_result(sock);767 res = mysql_use_result(sock);
768768
769 prev[0] = '\0';769 prev[0] = '\0';
770 prev_alter[0]= 0;
770 for (i = 0; (row = mysql_fetch_row(res)); i++)771 for (i = 0; (row = mysql_fetch_row(res)); i++)
771 {772 {
772 int changed = strcmp(prev, row[0]);773 int changed = strcmp(prev, row[0]);
@@ -783,12 +784,18 @@
783 strcmp(row[3],"OK"))784 strcmp(row[3],"OK"))
784 {785 {
785 if (table_rebuild)786 if (table_rebuild)
786 insert_dynamic(&tables4rebuild, (uchar*) prev);787 {
788 if (prev_alter[0])
789 insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
790 else
791 insert_dynamic(&tables4rebuild, (uchar*) prev);
792 }
787 else793 else
788 insert_dynamic(&tables4repair, (uchar*) prev);794 insert_dynamic(&tables4repair, (uchar*) prev);
789 }795 }
790 found_error=0;796 found_error=0;
791 table_rebuild=0;797 table_rebuild=0;
798 prev_alter[0]= 0;
792 if (opt_silent)799 if (opt_silent)
793 continue;800 continue;
794 }801 }
@@ -797,11 +804,30 @@
797 else if (!status && changed)804 else if (!status && changed)
798 {805 {
799 printf("%s\n%-9s: %s", row[0], row[2], row[3]);806 printf("%s\n%-9s: %s", row[0], row[2], row[3]);
800 if (strcmp(row[2],"note"))807 if (opt_auto_repair && strcmp(row[2],"note"))
801 {808 {
802 found_error=1;809 const char *alter_txt= strstr(row[3], "ALTER TABLE");
803 if (opt_auto_repair && strstr(row[3], "ALTER TABLE") != NULL)810 found_error=1;
811 if (alter_txt)
812 {
804 table_rebuild=1;813 table_rebuild=1;
814 if (!strncmp(row[3], KEY_PARTITIONING_CHANGED_STR,
815 strlen(KEY_PARTITIONING_CHANGED_STR)) &&
816 strstr(alter_txt, "PARTITION BY"))
817 {
818 if (strlen(alter_txt) >= MAX_ALTER_STR_SIZE)
819 {
820 printf("Error: Alter command too long (>= %d),"
821 " please do \"%s\" or dump/reload to fix it!\n",
822 MAX_ALTER_STR_SIZE,
823 alter_txt);
824 table_rebuild= 0;
825 prev_alter[0]= 0;
826 }
827 else
828 strcpy(prev_alter, alter_txt);
829 }
830 }
805 }831 }
806 }832 }
807 else833 else
@@ -813,7 +839,12 @@
813 if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)839 if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)
814 {840 {
815 if (table_rebuild)841 if (table_rebuild)
816 insert_dynamic(&tables4rebuild, (uchar*) prev);842 {
843 if (prev_alter[0])
844 insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
845 else
846 insert_dynamic(&tables4rebuild, (uchar*) prev);
847 }
817 else848 else
818 insert_dynamic(&tables4repair, (uchar*) prev);849 insert_dynamic(&tables4repair, (uchar*) prev);
819 }850 }
@@ -915,7 +946,8 @@
915946
916 if (opt_auto_repair &&947 if (opt_auto_repair &&
917 (my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64) ||948 (my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64) ||
918 my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,64)))949 my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,64) ||
950 my_init_dynamic_array(&alter_table_cmds, MAX_ALTER_STR_SIZE, 0, 1)))
919 {951 {
920 first_error = 1;952 first_error = 1;
921 goto end;953 goto end;
@@ -943,6 +975,8 @@
943 }975 }
944 for (i = 0; i < tables4rebuild.elements ; i++)976 for (i = 0; i < tables4rebuild.elements ; i++)
945 rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, i));977 rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, i));
978 for (i = 0; i < alter_table_cmds.elements ; i++)
979 run_query((char*) dynamic_array_ptr(&alter_table_cmds, i));
946 }980 }
947 end:981 end:
948 dbDisconnect(current_host);982 dbDisconnect(current_host);
949983
=== modified file 'Percona-Server/client/mysqldump.c'
--- Percona-Server/client/mysqldump.c 2013-04-09 21:37:02 +0000
+++ Percona-Server/client/mysqldump.c 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/client/sql_string.cc'
--- Percona-Server/client/sql_string.cc 2012-10-10 20:32:32 +0000
+++ Percona-Server/client/sql_string.cc 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
@@ -735,7 +735,7 @@
735{735{
736 if (from->Alloced_length >= from_length)736 if (from->Alloced_length >= from_length)
737 return from;737 return from;
738 if (from->alloced || !to || from == to)738 if ((from->alloced && (from->Alloced_length != 0)) || !to || from == to)
739 {739 {
740 (void) from->realloc(from_length);740 (void) from->realloc(from_length);
741 return from;741 return from;
742742
=== modified file 'Percona-Server/cmake/configure.pl'
--- Percona-Server/cmake/configure.pl 2012-09-07 08:12:32 +0000
+++ Percona-Server/cmake/configure.pl 2013-05-15 05:12:25 +0000
@@ -1,6 +1,6 @@
1#!/usr/bin/perl1#!/usr/bin/perl
22
3# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.3# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
4# 4#
5# This program is free software; you can redistribute it and/or modify5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by6# it under the terms of the GNU General Public License as published by
77
=== modified file 'Percona-Server/cmake/create_initial_db.cmake.in'
--- Percona-Server/cmake/create_initial_db.cmake.in 2012-10-03 14:05:07 +0000
+++ Percona-Server/cmake/create_initial_db.cmake.in 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.1# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
2# 2#
3# This program is free software; you can redistribute it and/or modify3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by4# it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/cmake/make_dist.cmake.in'
--- Percona-Server/cmake/make_dist.cmake.in 2012-03-22 15:16:11 +0000
+++ Percona-Server/cmake/make_dist.cmake.in 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.1# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
2# 2#
3# This program is free software; you can redistribute it and/or modify3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by4# it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/cmake/mysql_version.cmake'
--- Percona-Server/cmake/mysql_version.cmake 2012-10-23 11:41:34 +0000
+++ Percona-Server/cmake/mysql_version.cmake 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.1# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
2# 2#
3# This program is free software; you can redistribute it and/or modify3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by4# it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/cmake/package_name.cmake'
--- Percona-Server/cmake/package_name.cmake 2012-10-23 11:41:34 +0000
+++ Percona-Server/cmake/package_name.cmake 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.1# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
2#2#
3# This program is free software; you can redistribute it and/or modify3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by4# it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/cmake/plugin.cmake'
--- Percona-Server/cmake/plugin.cmake 2012-10-24 15:06:43 +0000
+++ Percona-Server/cmake/plugin.cmake 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.1# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
2# 2#
3# This program is free software; you can redistribute it and/or modify3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by4# it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/cmake/ssl.cmake'
--- Percona-Server/cmake/ssl.cmake 2012-07-24 13:15:58 +0000
+++ Percona-Server/cmake/ssl.cmake 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.1# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
2# 2#
3# This program is free software; you can redistribute it and/or modify3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by4# it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/cmake/zlib.cmake'
--- Percona-Server/cmake/zlib.cmake 2011-06-30 15:46:53 +0000
+++ Percona-Server/cmake/zlib.cmake 2013-05-15 05:12:25 +0000
@@ -57,13 +57,17 @@
57 INCLUDE(CheckFunctionExists)57 INCLUDE(CheckFunctionExists)
58 SET(CMAKE_REQUIRED_LIBRARIES z)58 SET(CMAKE_REQUIRED_LIBRARIES z)
59 CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32)59 CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32)
60 CHECK_FUNCTION_EXISTS(compressBound HAVE_COMPRESSBOUND)
61 CHECK_FUNCTION_EXISTS(deflateBound HAVE_DEFLATEBOUND)
60 SET(CMAKE_REQUIRED_LIBRARIES)62 SET(CMAKE_REQUIRED_LIBRARIES)
61 IF(HAVE_CRC32)63 IF(HAVE_CRC32 AND HAVE_COMPRESSBOUND AND HAVE_DEFLATEBOUND)
62 SET(ZLIB_LIBRARY z CACHE INTERNAL "System zlib library")64 SET(ZLIB_LIBRARY z CACHE INTERNAL "System zlib library")
63 SET(WITH_ZLIB "system" CACHE STRING "Which zlib to use (possible values are 'bundled' or 'system')")65 SET(WITH_ZLIB "system" CACHE STRING
66 "Which zlib to use (possible values are 'bundled' or 'system')")
64 SET(ZLIB_SOURCES "")67 SET(ZLIB_SOURCES "")
65 ELSE()68 ELSE()
66 SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable")69 SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable")
70 MESSAGE(STATUS "system zlib found but not usable")
67 ENDIF()71 ENDIF()
68 ENDIF()72 ENDIF()
69 IF(NOT ZLIB_FOUND)73 IF(NOT ZLIB_FOUND)
7074
=== modified file 'Percona-Server/configure.cmake'
--- Percona-Server/configure.cmake 2013-02-06 07:02:45 +0000
+++ Percona-Server/configure.cmake 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
11
2# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.2# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
3# 3#
4# This program is free software; you can redistribute it and/or modify4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by5# it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/charset2html.c'
--- Percona-Server/extra/charset2html.c 2008-03-29 14:15:06 +0000
+++ Percona-Server/extra/charset2html.c 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright (C) 2000 MySQL AB1/* Copyright (c) 2000, 2002-2004, 2007, 2008 MySQL AB
2 Use is subject to license terms
23
3 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
56
=== modified file 'Percona-Server/extra/yassl/CMakeLists.txt'
--- Percona-Server/extra/yassl/CMakeLists.txt 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/CMakeLists.txt 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.1# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
2# 2#
3# This program is free software; you can redistribute it and/or modify3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by4# it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/extra/yassl/examples/client/client.cpp'
--- Percona-Server/extra/yassl/examples/client/client.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/examples/client/client.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2006 MySQL AB2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/examples/echoclient/echoclient.cpp'
--- Percona-Server/extra/yassl/examples/echoclient/echoclient.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/examples/echoclient/echoclient.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2006 MySQL AB2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/examples/echoserver/echoserver.cpp'
--- Percona-Server/extra/yassl/examples/echoserver/echoserver.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/examples/echoserver/echoserver.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2006 MySQL AB2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/examples/server/server.cpp'
--- Percona-Server/extra/yassl/examples/server/server.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/examples/server/server.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2006 MySQL AB2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/include/buffer.hpp'
--- Percona-Server/extra/yassl/include/buffer.hpp 2012-02-13 11:40:12 +0000
+++ Percona-Server/extra/yassl/include/buffer.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/include/cert_wrapper.hpp'
--- Percona-Server/extra/yassl/include/cert_wrapper.hpp 2012-02-10 09:41:54 +0000
+++ Percona-Server/extra/yassl/include/cert_wrapper.hpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/include/lock.hpp'
--- Percona-Server/extra/yassl/include/lock.hpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/include/lock.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/include/openssl/prefix_ssl.h'
--- Percona-Server/extra/yassl/include/openssl/prefix_ssl.h 2012-02-10 09:39:51 +0000
+++ Percona-Server/extra/yassl/include/openssl/prefix_ssl.h 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2006, 2007 MySQL AB, 2008 Sun Microsystems, Inc.2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/include/socket_wrapper.hpp'
--- Percona-Server/extra/yassl/include/socket_wrapper.hpp 2012-02-13 11:40:12 +0000
+++ Percona-Server/extra/yassl/include/socket_wrapper.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/include/yassl_error.hpp'
--- Percona-Server/extra/yassl/include/yassl_error.hpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/include/yassl_error.hpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2010 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
@@ -53,7 +52,8 @@
53 badVersion_error = 117,52 badVersion_error = 117,
54 compress_error = 118,53 compress_error = 118,
55 decompress_error = 119,54 decompress_error = 119,
56 pms_version_error = 12055 pms_version_error = 120,
56 sanityCipher_error = 121
5757
58 // !!!! add error message to .cpp !!!!58 // !!!! add error message to .cpp !!!!
5959
6060
=== modified file 'Percona-Server/extra/yassl/include/yassl_imp.hpp'
--- Percona-Server/extra/yassl/include/yassl_imp.hpp 2012-02-10 09:41:54 +0000
+++ Percona-Server/extra/yassl/include/yassl_imp.hpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/include/yassl_int.hpp'
--- Percona-Server/extra/yassl/include/yassl_int.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/include/yassl_int.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/include/yassl_types.hpp'
--- Percona-Server/extra/yassl/include/yassl_types.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/include/yassl_types.hpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
@@ -220,7 +219,11 @@
220const int MAX_RECORD_SIZE = 16384; // 2^14, max size by standard219const int MAX_RECORD_SIZE = 16384; // 2^14, max size by standard
221const int COMPRESS_EXTRA = 1024; // extra compression possible addition220const int COMPRESS_EXTRA = 1024; // extra compression possible addition
222const int SESSION_FLUSH_COUNT = 256; // when to flush session cache221const int SESSION_FLUSH_COUNT = 256; // when to flush session cache
223222const int MAX_PAD_SIZE = 256; // max TLS padding size
223const int COMPRESS_CONSTANT = 13; // compression calculation constant
224const int COMPRESS_UPPER = 55; // compression calculation numerator
225const int COMPRESS_LOWER = 64; // compression calculation denominator
226const int COMPRESS_DUMMY_SIZE = 64; // compression dummy round size
224227
225typedef uint8 Cipher; // first byte is always 0x00 for SSLv3 & TLS228typedef uint8 Cipher; // first byte is always 0x00 for SSLv3 & TLS
226229
227230
=== modified file 'Percona-Server/extra/yassl/src/buffer.cpp'
--- Percona-Server/extra/yassl/src/buffer.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/src/buffer.cpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/src/cert_wrapper.cpp'
--- Percona-Server/extra/yassl/src/cert_wrapper.cpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/src/cert_wrapper.cpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2008, 2009 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/src/crypto_wrapper.cpp'
--- Percona-Server/extra/yassl/src/crypto_wrapper.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/src/crypto_wrapper.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/src/handshake.cpp'
--- Percona-Server/extra/yassl/src/handshake.cpp 2012-12-13 04:49:14 +0000
+++ Percona-Server/extra/yassl/src/handshake.cpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2008 MySQL AB, 2009 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
@@ -221,12 +220,45 @@
221}220}
222221
223222
223// sanity checks on encrypted message size
224static int sanity_check_message(SSL& ssl, uint msgSz)
225{
226 uint minSz = 0;
227
228 if (ssl.getSecurity().get_parms().cipher_type_ == block) {
229 uint blockSz = ssl.getCrypto().get_cipher().get_blockSize();
230 if (msgSz % blockSz)
231 return -1;
232
233 minSz = ssl.getSecurity().get_parms().hash_size_ + 1; // pad byte too
234 if (blockSz > minSz)
235 minSz = blockSz;
236
237 if (ssl.isTLSv1_1())
238 minSz += blockSz; // explicit IV
239 }
240 else { // stream
241 minSz = ssl.getSecurity().get_parms().hash_size_;
242 }
243
244 if (msgSz < minSz)
245 return -1;
246
247 return 0;
248}
249
250
224// decrypt input message in place, store size in case needed later251// decrypt input message in place, store size in case needed later
225void decrypt_message(SSL& ssl, input_buffer& input, uint sz)252void decrypt_message(SSL& ssl, input_buffer& input, uint sz)
226{253{
227 input_buffer plain(sz);254 input_buffer plain(sz);
228 opaque* cipher = input.get_buffer() + input.get_current();255 opaque* cipher = input.get_buffer() + input.get_current();
229256
257 if (sanity_check_message(ssl, sz) != 0) {
258 ssl.SetError(sanityCipher_error);
259 return;
260 }
261
230 ssl.useCrypto().use_cipher().decrypt(plain.get_buffer(), cipher, sz);262 ssl.useCrypto().use_cipher().decrypt(plain.get_buffer(), cipher, sz);
231 memcpy(cipher, plain.get_buffer(), sz);263 memcpy(cipher, plain.get_buffer(), sz);
232 ssl.useSecurity().use_parms().encrypt_size_ = sz;264 ssl.useSecurity().use_parms().encrypt_size_ = sz;
@@ -774,6 +806,8 @@
774 return 0;806 return 0;
775 }807 }
776 decrypt_message(ssl, buffer, hdr.length_);808 decrypt_message(ssl, buffer, hdr.length_);
809 if (ssl.GetError())
810 return 0;
777 }811 }
778 812
779 mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_));813 mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_));
780814
=== modified file 'Percona-Server/extra/yassl/src/lock.cpp'
--- Percona-Server/extra/yassl/src/lock.cpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/src/lock.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/src/make.bat'
--- Percona-Server/extra/yassl/src/make.bat 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/src/make.bat 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1REM Copyright (C) 2006, 2007 MySQL AB1REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
2REM 2REM
3REM This program is free software; you can redistribute it and/or modify3REM This program is free software; you can redistribute it and/or modify
4REM it under the terms of the GNU General Public License as published by4REM it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/extra/yassl/src/socket_wrapper.cpp'
--- Percona-Server/extra/yassl/src/socket_wrapper.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/src/socket_wrapper.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/src/ssl.cpp'
--- Percona-Server/extra/yassl/src/ssl.cpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/src/ssl.cpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2008-2010 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/src/template_instnt.cpp'
--- Percona-Server/extra/yassl/src/template_instnt.cpp 2009-05-15 12:57:51 +0000
+++ Percona-Server/extra/yassl/src/template_instnt.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,6 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000-2008 MySQL AB
3 Use is subject to license terms
34
4 This program is free software; you can redistribute it and/or modify5 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by6 it under the terms of the GNU General Public License as published by
67
=== modified file 'Percona-Server/extra/yassl/src/yassl.cpp'
--- Percona-Server/extra/yassl/src/yassl.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/src/yassl.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/src/yassl_error.cpp'
--- Percona-Server/extra/yassl/src/yassl_error.cpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/src/yassl_error.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
@@ -144,6 +144,10 @@
144 strncpy(buffer, "bad PreMasterSecret version error", max);144 strncpy(buffer, "bad PreMasterSecret version error", max);
145 break;145 break;
146146
147 case sanityCipher_error :
148 strncpy(buffer, "sanity check on cipher text size error", max);
149 break;
150
147 // openssl errors151 // openssl errors
148 case SSL_ERROR_WANT_READ :152 case SSL_ERROR_WANT_READ :
149 strncpy(buffer, "the read operation would block", max);153 strncpy(buffer, "the read operation would block", max);
150154
=== modified file 'Percona-Server/extra/yassl/src/yassl_imp.cpp'
--- Percona-Server/extra/yassl/src/yassl_imp.cpp 2012-03-02 12:23:52 +0000
+++ Percona-Server/extra/yassl/src/yassl_imp.cpp 2013-05-15 05:12:25 +0000
@@ -972,30 +972,193 @@
972}972}
973973
974974
975// check all bytes for equality
976static int constant_compare(const byte* a, const byte* b, int len)
977{
978 int good = 0;
979 int bad = 0;
980
981 for (int i = 0; i < len; i++) {
982 if (a[i] == b[i])
983 good++;
984 else
985 bad++;
986 }
987
988 if (good == len)
989 return 0;
990 else
991 return 0 - bad; // failure
992}
993
994
995// check bytes for pad value
996static int pad_check(const byte* input, byte pad, int len)
997{
998 int good = 0;
999 int bad = 0;
1000
1001 for (int i = 0; i < len; i++) {
1002 if (input[i] == pad)
1003 good++;
1004 else
1005 bad++;
1006 }
1007
1008 if (good == len)
1009 return 0;
1010 else
1011 return 0 - bad; // failure
1012}
1013
1014
1015// get number of compression rounds
1016static inline int get_rounds(int pLen, int padLen, int t)
1017{
1018 int roundL1 = 1; // round ups
1019 int roundL2 = 1;
1020
1021 int L1 = COMPRESS_CONSTANT + pLen - t;
1022 int L2 = COMPRESS_CONSTANT + pLen - padLen - 1 - t;
1023
1024 L1 -= COMPRESS_UPPER;
1025 L2 -= COMPRESS_UPPER;
1026
1027 if ( (L1 % COMPRESS_LOWER) == 0)
1028 roundL1 = 0;
1029 if ( (L2 % COMPRESS_LOWER) == 0)
1030 roundL2 = 0;
1031
1032 L1 /= COMPRESS_LOWER;
1033 L2 /= COMPRESS_LOWER;
1034
1035 L1 += roundL1;
1036 L2 += roundL2;
1037
1038 return L1 - L2;
1039}
1040
1041
1042// do compression rounds on dummy data
1043static inline void compress_rounds(SSL& ssl, int rounds, const byte* dummy)
1044{
1045 if (rounds) {
1046 Digest* digest = NULL;
1047
1048 MACAlgorithm ma = ssl.getSecurity().get_parms().mac_algorithm_;
1049 if (ma == sha)
1050 digest = NEW_YS SHA;
1051 else if (ma == md5)
1052 digest = NEW_YS MD5;
1053 else if (ma == rmd)
1054 digest = NEW_YS RMD;
1055 else
1056 return;
1057
1058 for (int i = 0; i < rounds; i++)
1059 digest->update(dummy, COMPRESS_LOWER);
1060
1061 ysDelete(digest);
1062 }
1063}
1064
1065
1066// timing resistant pad verification
1067static int timing_verify(SSL& ssl, const byte* input, int padLen, int t,
1068 int pLen)
1069{
1070 byte verify[SHA_LEN];
1071 byte dummy[MAX_PAD_SIZE];
1072
1073 memset(dummy, 1, sizeof(dummy));
1074
1075 if ( (t + padLen + 1) > pLen) {
1076 pad_check(dummy, (byte)padLen, MAX_PAD_SIZE);
1077 if (ssl.isTLS())
1078 TLS_hmac(ssl, verify, input, pLen - t, application_data, 1);
1079 else
1080 hmac(ssl, verify, input, pLen - t, application_data, 1);
1081 constant_compare(verify, input + pLen - t, t);
1082
1083 return -1;
1084 }
1085
1086 if (pad_check(input + pLen - (padLen + 1), (byte)padLen, padLen + 1) != 0) {
1087 pad_check(dummy, (byte)padLen, MAX_PAD_SIZE - padLen - 1);
1088 if (ssl.isTLS())
1089 TLS_hmac(ssl, verify, input, pLen - t, application_data, 1);
1090 else
1091 hmac(ssl, verify, input, pLen - t, application_data, 1);
1092 constant_compare(verify, input + pLen - t, t);
1093
1094 return -1;
1095 }
1096
1097 pad_check(dummy, (byte)padLen, MAX_PAD_SIZE - padLen - 1);
1098 if (ssl.isTLS())
1099 TLS_hmac(ssl, verify, input, pLen - padLen - 1 - t, application_data,1);
1100 else
1101 hmac(ssl, verify, input, pLen - padLen - 1 - t, application_data, 1);
1102
1103 compress_rounds(ssl, get_rounds(pLen, padLen, t), dummy);
1104
1105 if (constant_compare(verify, input + (pLen - padLen - 1 - t), t) != 0)
1106 return -1;
1107
1108 return 0;
1109}
1110
1111
975// Process handler for Data1112// Process handler for Data
976void Data::Process(input_buffer& input, SSL& ssl)1113void Data::Process(input_buffer& input, SSL& ssl)
977{1114{
978 int msgSz = ssl.getSecurity().get_parms().encrypt_size_;1115 int msgSz = ssl.getSecurity().get_parms().encrypt_size_;
979 int pad = 0, padSz = 0;1116 int pad = 0, padSz = 0;
980 int ivExtra = 0;1117 int ivExtra = 0;
1118 int digestSz = ssl.getCrypto().get_digest().get_digestSize();
1119 const byte* rawData = input.get_buffer() + input.get_current();
1120 opaque verify[SHA_LEN];
9811121
982 if (ssl.getSecurity().get_parms().cipher_type_ == block) {1122 if (ssl.getSecurity().get_parms().cipher_type_ == block) {
983 if (ssl.isTLSv1_1()) // IV1123 if (ssl.isTLSv1_1()) // IV
984 ivExtra = ssl.getCrypto().get_cipher().get_blockSize();1124 ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
985 pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1);1125 pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1);
986 padSz = 1;1126 padSz = 1;
987 }1127
988 int digestSz = ssl.getCrypto().get_digest().get_digestSize();1128 if (ssl.isTLS()) {
1129 if (timing_verify(ssl, rawData, pad,digestSz, msgSz-ivExtra) != 0) {
1130 ssl.SetError(verify_error);
1131 return;
1132 }
1133 }
1134 else { // SSLv3, some don't do this padding right
1135 int sz3 = msgSz - digestSz - pad - 1;
1136 hmac(ssl, verify, rawData, sz3, application_data, true);
1137 if (constant_compare(verify, rawData + sz3, digestSz) != 0) {
1138 ssl.SetError(verify_error);
1139 return;
1140 }
1141 }
1142 }
1143 else { // stream
1144 int streamSz = msgSz - digestSz;
1145 if (ssl.isTLS())
1146 TLS_hmac(ssl, verify, rawData, streamSz, application_data, true);
1147 else
1148 hmac(ssl, verify, rawData, streamSz, application_data, true);
1149 if (constant_compare(verify, rawData + streamSz, digestSz) != 0) {
1150 ssl.SetError(verify_error);
1151 return;
1152 }
1153 }
1154
989 int dataSz = msgSz - ivExtra - digestSz - pad - padSz;1155 int dataSz = msgSz - ivExtra - digestSz - pad - padSz;
990 opaque verify[SHA_LEN];
9911156
992 if (dataSz < 0) {1157 if (dataSz < 0) {
993 ssl.SetError(bad_input);1158 ssl.SetError(bad_input);
994 return;1159 return;
995 }1160 }
9961161
997 const byte* rawData = input.get_buffer() + input.get_current();
998
999 // read data1162 // read data
1000 if (dataSz) { // could be compressed1163 if (dataSz) { // could be compressed
1001 if (ssl.CompressionOn()) {1164 if (ssl.CompressionOn()) {
@@ -1013,27 +1176,10 @@
1013 input.read(data->get_buffer(), dataSz);1176 input.read(data->get_buffer(), dataSz);
1014 data->add_size(dataSz);1177 data->add_size(dataSz);
1015 }1178 }
10161179 }
1017 if (ssl.isTLS())1180
1018 TLS_hmac(ssl, verify, rawData, dataSz, application_data, true);1181 // advance past mac and fill
1019 else1182 input.set_current(input.get_current() + digestSz + pad + padSz);
1020 hmac(ssl, verify, rawData, dataSz, application_data, true);
1021 }
1022
1023 // read mac and skip fill
1024 opaque mac[SHA_LEN];
1025 input.read(mac, digestSz);
1026 input.set_current(input.get_current() + pad + padSz);
1027
1028 // verify
1029 if (dataSz) {
1030 if (memcmp(mac, verify, digestSz)) {
1031 ssl.SetError(verify_error);
1032 return;
1033 }
1034 }
1035 else
1036 ssl.get_SEQIncrement(true); // even though no data, increment verify
1037}1183}
10381184
10391185
10401186
=== modified file 'Percona-Server/extra/yassl/taocrypt/benchmark/benchmark.cpp'
--- Percona-Server/extra/yassl/taocrypt/benchmark/benchmark.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/benchmark/benchmark.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2006, 2007 MySQL AB2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/benchmark/make.bat'
--- Percona-Server/extra/yassl/taocrypt/benchmark/make.bat 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/benchmark/make.bat 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1REM Copyright (C) 2006, 2007 MySQL AB1REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
2REM 2REM
3REM This program is free software; you can redistribute it and/or modify3REM This program is free software; you can redistribute it and/or modify
4REM it under the terms of the GNU General Public License as published by4REM it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/aes.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/aes.hpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/aes.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/asn.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/asn.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/asn.hpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2010 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/block.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/block.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/block.hpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/blowfish.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/blowfish.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/blowfish.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/des.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/des.hpp 2012-02-13 11:40:12 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/des.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/hash.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/hash.hpp 2012-02-13 11:40:12 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/hash.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/hc128.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/hc128.hpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/hc128.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 3
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/integer.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/integer.hpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/integer.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/kernelc.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/kernelc.hpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/kernelc.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/misc.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/misc.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/misc.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/modes.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/modes.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/modes.hpp 2013-05-15 05:12:25 +0000
@@ -1,6 +1,5 @@
1/*1/*
2 Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 Use is subject to license terms.
43
5 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
76
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/pwdbased.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/pwdbased.hpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/pwdbased.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/rabbit.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/rabbit.hpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/rabbit.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 3
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/rsa.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/rsa.hpp 2012-02-13 11:40:12 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/rsa.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/runtime.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/runtime.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/runtime.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/include/types.hpp'
--- Percona-Server/extra/yassl/taocrypt/include/types.hpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/include/types.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/mySTL/stdexcept.hpp'
--- Percona-Server/extra/yassl/taocrypt/mySTL/stdexcept.hpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/mySTL/stdexcept.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/mySTL/vector.hpp'
--- Percona-Server/extra/yassl/taocrypt/mySTL/vector.hpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/mySTL/vector.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/aes.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/aes.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/aes.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/aestables.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/aestables.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/aestables.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/algebra.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/algebra.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/algebra.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/arc4.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/arc4.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/arc4.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/blowfish.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/blowfish.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/blowfish.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/coding.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/coding.cpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/coding.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/dsa.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/dsa.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/dsa.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/hash.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/hash.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/hash.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/hc128.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/hc128.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/hc128.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 3
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/make.bat'
--- Percona-Server/extra/yassl/taocrypt/src/make.bat 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/make.bat 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1REM Copyright (C) 2006, 2007 MySQL AB1REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
2REM 2REM
3REM This program is free software; you can redistribute it and/or modify3REM This program is free software; you can redistribute it and/or modify
4REM it under the terms of the GNU General Public License as published by4REM it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/md4.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/md4.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/md4.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/md5.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/md5.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/md5.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/misc.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/misc.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/misc.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/rabbit.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/rabbit.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/rabbit.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 3
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/random.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/random.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/random.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/ripemd.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/ripemd.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/ripemd.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/rsa.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/rsa.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/rsa.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/sha.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/sha.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/sha.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/template_instnt.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/template_instnt.cpp 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/template_instnt.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2000-2007 MySQL AB2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/src/twofish.cpp'
--- Percona-Server/extra/yassl/taocrypt/src/twofish.cpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/taocrypt/src/twofish.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/test/make.bat'
--- Percona-Server/extra/yassl/taocrypt/test/make.bat 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/taocrypt/test/make.bat 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1REM Copyright (C) 2006, 2007 MySQL AB1REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
2REM 2REM
3REM This program is free software; you can redistribute it and/or modify3REM This program is free software; you can redistribute it and/or modify
4REM it under the terms of the GNU General Public License as published by4REM it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/extra/yassl/taocrypt/test/memory.cpp'
--- Percona-Server/extra/yassl/taocrypt/test/memory.cpp 2012-11-21 13:44:15 +0000
+++ Percona-Server/extra/yassl/taocrypt/test/memory.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/taocrypt/test/test.cpp'
--- Percona-Server/extra/yassl/taocrypt/test/test.cpp 2012-02-13 11:40:12 +0000
+++ Percona-Server/extra/yassl/taocrypt/test/test.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2006, 2007 MySQL AB2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/testsuite/make.bat'
--- Percona-Server/extra/yassl/testsuite/make.bat 2012-02-10 14:33:27 +0000
+++ Percona-Server/extra/yassl/testsuite/make.bat 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1REM Copyright (C) 2006, 2007 MySQL AB1REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
2REM 2REM
3REM This program is free software; you can redistribute it and/or modify3REM This program is free software; you can redistribute it and/or modify
4REM it under the terms of the GNU General Public License as published by4REM it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/extra/yassl/testsuite/test.hpp'
--- Percona-Server/extra/yassl/testsuite/test.hpp 2012-02-13 12:44:54 +0000
+++ Percona-Server/extra/yassl/testsuite/test.hpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/extra/yassl/testsuite/testsuite.cpp'
--- Percona-Server/extra/yassl/testsuite/testsuite.cpp 2012-02-13 11:40:12 +0000
+++ Percona-Server/extra/yassl/testsuite/testsuite.cpp 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (C) 2006, 2007 MySQL AB2 Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/include/base64.h'
--- Percona-Server/include/base64.h 2006-12-23 19:20:40 +0000
+++ Percona-Server/include/base64.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright (C) 2003 MySQL AB1/* Copyright (c) 2003-2006 MySQL AB
2 Use is subject to license terms
23
3 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
56
=== modified file 'Percona-Server/include/ft_global.h'
--- Percona-Server/include/ft_global.h 2011-06-30 15:46:53 +0000
+++ Percona-Server/include/ft_global.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1/* Copyright (c) 2000-2007 MySQL AB, 2009 Sun Microsystems, Inc.1/* Copyright (c) 2000-2005, 2007 MySQL AB, 2009 Sun Microsystems, Inc.
2 Use is subject to license terms.2 Use is subject to license terms.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
55
=== modified file 'Percona-Server/include/m_ctype.h'
--- Percona-Server/include/m_ctype.h 2012-02-16 09:48:16 +0000
+++ Percona-Server/include/m_ctype.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1/* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.1/* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
22
3 This program is free software; you can redistribute it and/or modify3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by4 it under the terms of the GNU General Public License as published by
@@ -149,6 +149,8 @@
149struct charset_info_st;149struct charset_info_st;
150150
151151
152extern int (*my_string_stack_guard)(int);
153
152/* See strings/CHARSET_INFO.txt for information about this structure */154/* See strings/CHARSET_INFO.txt for information about this structure */
153typedef struct my_collation_handler_st155typedef struct my_collation_handler_st
154{156{
155157
=== modified file 'Percona-Server/include/m_string.h'
--- Percona-Server/include/m_string.h 2013-02-24 13:36:00 +0000
+++ Percona-Server/include/m_string.h 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/include/my_md5.h'
--- Percona-Server/include/my_md5.h 2009-09-23 21:32:31 +0000
+++ Percona-Server/include/my_md5.h 2013-05-15 05:12:25 +0000
@@ -1,7 +1,8 @@
1#ifndef MY_MD5_INCLUDED1#ifndef MY_MD5_INCLUDED
2#define MY_MD5_INCLUDED2#define MY_MD5_INCLUDED
33
4/* Copyright (C) 2000 MySQL AB4/* Copyright (c) 2000, 2001, 2007 MySQL AB, 2009 Sun Microsystems, Inc.
5 Use is subject to license terms
56
6 This program is free software; you can redistribute it and/or modify7 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by8 it under the terms of the GNU General Public License as published by
89
=== modified file 'Percona-Server/include/my_sys.h'
--- Percona-Server/include/my_sys.h 2013-03-05 12:16:18 +0000
+++ Percona-Server/include/my_sys.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.1/* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
22
3 This program is free software; you can redistribute it and/or modify3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by4 it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/include/my_user.h'
--- Percona-Server/include/my_user.h 2007-05-10 09:59:39 +0000
+++ Percona-Server/include/my_user.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright (C) 2005 MySQL AB1/* Copyright (c) 2005-2007 MySQL AB
2 Use is subject to license terms
23
3 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
56
=== modified file 'Percona-Server/include/my_xml.h'
--- Percona-Server/include/my_xml.h 2007-05-10 09:59:39 +0000
+++ Percona-Server/include/my_xml.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright (C) 2000 MySQL AB1/* Copyright (c) 2000, 2002, 2003, 2005, 2007 MySQL AB
2 Use is subject to license terms
23
3 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
56
=== modified file 'Percona-Server/include/myisampack.h'
--- Percona-Server/include/myisampack.h 2011-06-30 15:46:53 +0000
+++ Percona-Server/include/myisampack.h 2013-05-15 05:12:25 +0000
@@ -1,7 +1,7 @@
1#ifndef MYISAMPACK_INCLUDED1#ifndef MYISAMPACK_INCLUDED
2#define MYISAMPACK_INCLUDED2#define MYISAMPACK_INCLUDED
33
4/* Copyright (c) 2000-2002, 2004, 2006 MySQL AB, 2009 Sun Microsystems, Inc.4/* Copyright (c) 2000-2002, 2004 MySQL AB, 2009 Sun Microsystems, Inc.
5 Use is subject to license terms.5 Use is subject to license terms.
66
7 This program is free software; you can redistribute it and/or modify7 This program is free software; you can redistribute it and/or modify
88
=== modified file 'Percona-Server/include/mysql.h'
--- Percona-Server/include/mysql.h 2012-07-05 06:55:20 +0000
+++ Percona-Server/include/mysql.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.1/* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
22
3 This program is free software; you can redistribute it and/or modify3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by4 it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/include/mysql/service_my_snprintf.h'
--- Percona-Server/include/mysql/service_my_snprintf.h 2012-12-10 08:55:08 +0000
+++ Percona-Server/include/mysql/service_my_snprintf.h 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1#ifndef MYSQL_SERVICE_MY_SNPRINTF_INCLUDED1#ifndef MYSQL_SERVICE_MY_SNPRINTF_INCLUDED
2/* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.2/* Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/include/mysql/thread_pool_priv.h'
--- Percona-Server/include/mysql/thread_pool_priv.h 2012-11-09 09:24:35 +0000
+++ Percona-Server/include/mysql/thread_pool_priv.h 2013-05-15 05:12:25 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.2 Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
33
4 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
66
=== modified file 'Percona-Server/include/mysql_time.h'
--- Percona-Server/include/mysql_time.h 2006-12-31 00:02:27 +0000
+++ Percona-Server/include/mysql_time.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright (C) 2004 MySQL AB1/* Copyright (c) 2004, 2006 MySQL AB
2 Use is subject to license terms
23
3 This program is free software; you can redistribute it and/or modify4 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by5 it under the terms of the GNU General Public License as published by
56
=== modified file 'Percona-Server/include/mysql_version.h.in'
--- Percona-Server/include/mysql_version.h.in 2007-09-13 14:19:46 +0000
+++ Percona-Server/include/mysql_version.h.in 2013-05-15 05:12:25 +0000
@@ -1,4 +1,5 @@
1/* Copyright Abandoned 1996, 1999, 2001 MySQL AB1/* Copyright (c) 1996, 1999-2004, 2007 MySQL AB
2 Use is subject to license terms
2 This file is public domain and comes with NO WARRANTY of any kind */3 This file is public domain and comes with NO WARRANTY of any kind */
34
4/* Version numbers for protocol & mysqld */5/* Version numbers for protocol & mysqld */
56
=== modified file 'Percona-Server/include/welcome_copyright_notice.h'
--- Percona-Server/include/welcome_copyright_notice.h 2013-01-01 02:36:10 +0000
+++ Percona-Server/include/welcome_copyright_notice.h 2013-05-15 05:12:25 +0000
@@ -1,4 +1,4 @@
1/* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.1/* Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
22
3 This program is free software; you can redistribute it and/or modify3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by4 it under the terms of the GNU General Public License as published by
55
=== modified file 'Percona-Server/libmysql/libmysql.c'
--- Percona-Server/libmysql/libmysql.c 2013-03-22 03:29:56 +0000
+++ Percona-Server/libmysql/libmysql.c 2013-05-15 05:12:25 +0000
@@ -2107,7 +2107,14 @@
2107 DBUG_RETURN(1);2107 DBUG_RETURN(1);
2108 }2108 }
21092109
2110 net_clear(net, 1); /* Sets net->write_pos */2110 if (net->vio)
2111 net_clear(net, 1); /* Sets net->write_pos */
2112 else
2113 {
2114 set_stmt_errmsg(stmt, net);
2115 DBUG_RETURN(1);
2116 }
2117
2111 /* Reserve place for null-marker bytes */2118 /* Reserve place for null-marker bytes */
2112 null_count= (stmt->param_count+7) /8;2119 null_count= (stmt->param_count+7) /8;
2113 if (my_realloc_str(net, null_count + 1))2120 if (my_realloc_str(net, null_count + 1))
21142121
=== modified file 'Percona-Server/mysql-test/collections/default.experimental'
--- Percona-Server/mysql-test/collections/default.experimental 2012-11-15 14:52:51 +0000
+++ Percona-Server/mysql-test/collections/default.experimental 2013-05-15 05:12:25 +0000
@@ -6,6 +6,7 @@
6funcs_1.charset_collation_1 # depends on compile-time decisions6funcs_1.charset_collation_1 # depends on compile-time decisions
77
8main.func_math @freebsd # Bug#11751977 2010-05-04 alik main.func_math fails on FreeBSD in PB28main.func_math @freebsd # Bug#11751977 2010-05-04 alik main.func_math fails on FreeBSD in PB2
9main.kill @solaris # Bug#16064876 2013-01-02 prthirum main.kill fails on sol10 sparc64
9main.lock_multi_bug38499 # Bug#11755645 2009-09-19 alik main.lock_multi_bug38499 times out sporadically10main.lock_multi_bug38499 # Bug#11755645 2009-09-19 alik main.lock_multi_bug38499 times out sporadically
10main.outfile_loaddata @solaris # Bug#11755168 2010-01-20 alik Test "outfile_loaddata" fails (reproducible)11main.outfile_loaddata @solaris # Bug#11755168 2010-01-20 alik Test "outfile_loaddata" fails (reproducible)
11main.signal_demo3 @solaris # Bug#11753919 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun12main.signal_demo3 @solaris # Bug#11753919 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
1213
=== modified file 'Percona-Server/mysql-test/include/get_relay_log_pos.inc'
--- Percona-Server/mysql-test/include/get_relay_log_pos.inc 2010-10-21 07:37:10 +0000
+++ Percona-Server/mysql-test/include/get_relay_log_pos.inc 2013-05-15 05:12:25 +0000
@@ -40,7 +40,6 @@
40# '# .... end_log_pos 46'40# '# .... end_log_pos 46'
41eval LOAD DATA LOCAL INFILE '$_tmp_file' INTO TABLE mysqlbinlog_events41eval LOAD DATA LOCAL INFILE '$_tmp_file' INTO TABLE mysqlbinlog_events
42 LINES STARTING BY '#' (c2) SET c1 = NULL;42 LINES STARTING BY '#' (c2) SET c1 = NULL;
43--enable_warnings
4443
45# Event pos in relay log file is inserted into table events_at44# Event pos in relay log file is inserted into table events_at
46CREATE TEMPORARY TABLE events_at(c1 INT AUTO_INCREMENT KEY, c2 varchar(256))45CREATE TEMPORARY TABLE events_at(c1 INT AUTO_INCREMENT KEY, c2 varchar(256))
@@ -49,6 +48,7 @@
49# Event pos in master log file is inserted into table events_pos48# Event pos in master log file is inserted into table events_pos
50CREATE TEMPORARY TABLE events_pos(c1 INT AUTO_INCREMENT KEY, c2 varchar(256))49CREATE TEMPORARY TABLE events_pos(c1 INT AUTO_INCREMENT KEY, c2 varchar(256))
51 SELECT c2 FROM mysqlbinlog_events WHERE c2 LIKE '% end_log_pos %' ORDER BY c1;50 SELECT c2 FROM mysqlbinlog_events WHERE c2 LIKE '% end_log_pos %' ORDER BY c1;
51--enable_warnings
5252
53# events_at events_pos53# events_at events_pos
54# c1------c2-------------------------- c1------c2------------------------54# c1------c2-------------------------- c1------c2------------------------
5555
=== modified file 'Percona-Server/mysql-test/include/rpl_init.inc'
--- Percona-Server/mysql-test/include/rpl_init.inc 2010-12-20 14:15:01 +0000
+++ Percona-Server/mysql-test/include/rpl_init.inc 2013-05-15 05:12:25 +0000
@@ -7,7 +7,6 @@
7# well as extra connections server_1_1, server_2_1, ...,7# well as extra connections server_1_1, server_2_1, ...,
8# server_N_1. server_I and server_I_1 are connections to the same8# server_N_1. server_I and server_I_1 are connections to the same
9# server.9# server.
10# - Sets up @@auto_increment_increment and @@auto_increment_increment.
11# - Verifies that @@server_id of all servers are different.10# - Verifies that @@server_id of all servers are different.
12# - Calls RESET MASTER, RESET SLAVE, USE test, CHANGE MASTER, START SLAVE.11# - Calls RESET MASTER, RESET SLAVE, USE test, CHANGE MASTER, START SLAVE.
13# - Sets the connection to server_1 before exiting.12# - Sets the connection to server_1 before exiting.
@@ -179,8 +178,6 @@
179 RESET MASTER;178 RESET MASTER;
180 RESET SLAVE;179 RESET SLAVE;
181 }180 }
182 eval SET auto_increment_increment= $rpl_server_count;
183 eval SET auto_increment_offset= $_rpl_server;
184181
185 --dec $_rpl_server182 --dec $_rpl_server
186}183}
187184
=== modified file 'Percona-Server/mysql-test/mysql-test-run.pl'
--- Percona-Server/mysql-test/mysql-test-run.pl 2013-02-18 04:48:10 +0000
+++ Percona-Server/mysql-test/mysql-test-run.pl 2013-05-15 05:12:25 +0000
@@ -700,9 +700,11 @@
700 mtr_report("\nRetrying test $tname, ".700 mtr_report("\nRetrying test $tname, ".
701 "attempt($retries/$opt_retry)...\n");701 "attempt($retries/$opt_retry)...\n");
702 #saving the log file as filename.failed in case of retry702 #saving the log file as filename.failed in case of retry
703 my $worker_logdir= $result->{savedir};703 if ( $result->is_failed() ) {
704 my $log_file_name=dirname($worker_logdir)."/".$result->{shortname}.".log";704 my $worker_logdir= $result->{savedir};
705 rename $log_file_name,$log_file_name.".failed";705 my $log_file_name=dirname($worker_logdir)."/".$result->{shortname}.".log";
706 rename $log_file_name,$log_file_name.".failed";
707 }
706 delete($result->{result});708 delete($result->{result});
707 $result->{retries}= $retries+1;709 $result->{retries}= $retries+1;
708 $result->write_test($sock, 'TESTCASE');710 $result->write_test($sock, 'TESTCASE');
@@ -3844,6 +3846,7 @@
38443846
3845sub run_testcase ($) {3847sub run_testcase ($) {
3846 my $tinfo= shift;3848 my $tinfo= shift;
3849 my $print_freq=20;
38473850
3848 mtr_verbose("Running test:", $tinfo->{name});3851 mtr_verbose("Running test:", $tinfo->{name});
3849 resfile_report_test($tinfo) if $opt_resfile;3852 resfile_report_test($tinfo) if $opt_resfile;
@@ -4003,6 +4006,7 @@
4003 my $test= start_mysqltest($tinfo);4006 my $test= start_mysqltest($tinfo);
4004 # Set only when we have to keep waiting after expectedly died server4007 # Set only when we have to keep waiting after expectedly died server
4005 my $keep_waiting_proc = 0;4008 my $keep_waiting_proc = 0;
4009 my $print_timeout= start_timer($print_freq * 60);
40064010
4007 while (1)4011 while (1)
4008 {4012 {
@@ -4027,7 +4031,22 @@
4027 }4031 }
4028 if (! $keep_waiting_proc)4032 if (! $keep_waiting_proc)
4029 {4033 {
4030 $proc= My::SafeProcess->wait_any_timeout($test_timeout);4034 if($test_timeout > $print_timeout)
4035 {
4036 $proc= My::SafeProcess->wait_any_timeout($print_timeout);
4037 if ( $proc->{timeout} )
4038 {
4039 #print out that the test is still on
4040 mtr_print("Test still running: $tinfo->{name}");
4041 #reset the timer
4042 $print_timeout= start_timer($print_freq * 60);
4043 next;
4044 }
4045 }
4046 else
4047 {
4048 $proc= My::SafeProcess->wait_any_timeout($test_timeout);
4049 }
4031 }4050 }
40324051
4033 # Will be restored if we need to keep waiting4052 # Will be restored if we need to keep waiting
40344053
=== modified file 'Percona-Server/mysql-test/r/cast.result'
--- Percona-Server/mysql-test/r/cast.result 2012-02-22 10:20:52 +0000
+++ Percona-Server/mysql-test/r/cast.result 2013-05-15 05:12:25 +0000
@@ -477,4 +477,22 @@
477AND CAST(a AS BINARY)=x'65736D697468';477AND CAST(a AS BINARY)=x'65736D697468';
478a478a
479DROP TABLE t1;479DROP TABLE t1;
480#
481# Bug#13581962 HIGH MEMORY USAGE ATTEMPT, THEN CRASH WITH
482# LONGTEXT, UNION, USER VARIABLE
483# Bug#14096619 UNABLE TO RESTORE DATABASE DUMP
484#
485CREATE TABLE t1 AS SELECT CONCAT(CAST(REPEAT('9', 1000) AS SIGNED)),
486CONCAT(CAST(REPEAT('9', 1000) AS UNSIGNED));
487Warnings:
488Warning 1292 Truncated incorrect INTEGER value: '99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'
489Warning 1292 Truncated incorrect INTEGER value: '99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'
490SHOW CREATE TABLE t1;
491Table Create Table
492t1 CREATE TABLE `t1` (
493 `CONCAT(CAST(REPEAT('9', 1000) AS SIGNED))` varchar(21) NOT NULL DEFAULT '',
494 `CONCAT(CAST(REPEAT('9', 1000) AS UNSIGNED))` varchar(21) NOT NULL DEFAULT ''
495) ENGINE=MyISAM DEFAULT CHARSET=latin1
496DROP TABLE t1;
497# End of test for Bug#13581962, Bug#14096619
480End of 5.1 tests498End of 5.1 tests
481499
=== modified file 'Percona-Server/mysql-test/r/ctype_utf8mb4.result'
--- Percona-Server/mysql-test/r/ctype_utf8mb4.result 2010-09-28 15:15:58 +0000
+++ Percona-Server/mysql-test/r/ctype_utf8mb4.result 2013-05-15 05:12:25 +0000
@@ -2539,6 +2539,24 @@
2539) ENGINE=MyISAM DEFAULT CHARSET=latin12539) ENGINE=MyISAM DEFAULT CHARSET=latin1
2540DROP TABLE t1, t2;2540DROP TABLE t1, t2;
2541#2541#
2542# Bug#13581962 HIGH MEMORY USAGE ATTEMPT, THEN CRASH WITH
2543# LONGTEXT, UNION, USER VARIABLE
2544# Bug#14096619 UNABLE TO RESTORE DATABASE DUMP
2545#
2546CREATE TABLE t1(f1 LONGTEXT CHARACTER SET utf8mb4);
2547INSERT INTO t1 VALUES ('a');
2548SELECT @a:= CAST(f1 AS SIGNED) FROM t1
2549UNION ALL
2550SELECT CAST(f1 AS SIGNED) FROM t1;
2551@a:= CAST(f1 AS SIGNED)
25520
25530
2554Warnings:
2555Warning 1292 Truncated incorrect INTEGER value: 'a'
2556Warning 1292 Truncated incorrect INTEGER value: 'a'
2557DROP TABLE t1;
2558# End of test for Bug#13581962,Bug#14096619
2559#
2542# End of 5.5 tests2560# End of 5.5 tests
2543#2561#
2544#2562#
25452563
=== modified file 'Percona-Server/mysql-test/r/join_outer.result'
--- Percona-Server/mysql-test/r/join_outer.result 2012-02-07 16:32:04 +0000
+++ Percona-Server/mysql-test/r/join_outer.result 2013-05-15 05:12:25 +0000
@@ -1702,4 +1702,36 @@
1702f1702f
1703117031
1704DROP TABLE t1;1704DROP TABLE t1;
1705#
1706# Bug#13068506 - QUERY WITH GROUP BY ON NON-AGGR COLUMN RETURNS
1707# WRONG RESULT
1708#
1709CREATE TABLE t1 (i1 int);
1710INSERT INTO t1 VALUES (100), (101);
1711CREATE TABLE t2 (i2 int, i3 int);
1712INSERT INTO t2 VALUES (20,1),(10,2);
1713CREATE TABLE t3 (i4 int(11));
1714INSERT INTO t3 VALUES (1),(2);
1715
1716SELECT (
1717SELECT MAX( t2.i2 )
1718FROM t3 RIGHT JOIN t2 ON ( t2.i3 = 2 )
1719WHERE t2.i3 <> t1.i1
1720) AS field1
1721FROM t1;;
1722field1
172320
172420
1725
1726SELECT (
1727SELECT MAX( t2.i2 )
1728FROM t3 RIGHT JOIN t2 ON ( t2.i3 = 2 )
1729WHERE t2.i3 <> t1.i1
1730) AS field1
1731FROM t1 GROUP BY field1;;
1732field1
173320
1734
1735drop table t1,t2,t3;
1736# End of test for Bug#13068506
1705End of 5.1 tests1737End of 5.1 tests
17061738
=== modified file 'Percona-Server/mysql-test/r/partition.result'
--- Percona-Server/mysql-test/r/partition.result 2012-01-27 12:21:21 +0000
+++ Percona-Server/mysql-test/r/partition.result 2013-05-15 05:12:25 +0000
@@ -1758,13 +1758,13 @@
1758partition by key (a);1758partition by key (a);
1759REPAIR TABLE t1;1759REPAIR TABLE t1;
1760Table Op Msg_type Msg_text1760Table Op Msg_type Msg_text
1761test.t1 repair note The storage engine for the table doesn't support repair1761test.t1 repair status OK
1762OPTIMIZE TABLE t1;1762OPTIMIZE TABLE t1;
1763Table Op Msg_type Msg_text1763Table Op Msg_type Msg_text
1764test.t1 optimize note The storage engine for the table doesn't support optimize1764test.t1 optimize note The storage engine for the table doesn't support optimize
1765CHECK TABLE t1;1765CHECK TABLE t1;
1766Table Op Msg_type Msg_text1766Table Op Msg_type Msg_text
1767test.t1 check note The storage engine for the table doesn't support check1767test.t1 check status OK
1768ANALYZE TABLE t1;1768ANALYZE TABLE t1;
1769Table Op Msg_type Msg_text1769Table Op Msg_type Msg_text
1770test.t1 analyze note The storage engine for the table doesn't support analyze1770test.t1 analyze note The storage engine for the table doesn't support analyze
17711771
=== modified file 'Percona-Server/mysql-test/r/percona_server_variables_debug.result'
--- Percona-Server/mysql-test/r/percona_server_variables_debug.result 2013-04-04 10:52:07 +0000
+++ Percona-Server/mysql-test/r/percona_server_variables_debug.result 2013-05-15 05:12:25 +0000
@@ -89,6 +89,7 @@
89INNODB_AUTOEXTEND_INCREMENT89INNODB_AUTOEXTEND_INCREMENT
90INNODB_AUTOINC_LOCK_MODE90INNODB_AUTOINC_LOCK_MODE
91INNODB_BLOCKING_BUFFER_POOL_RESTORE91INNODB_BLOCKING_BUFFER_POOL_RESTORE
92INNODB_BUFFER_POOL_EVICT
92INNODB_BUFFER_POOL_INSTANCES93INNODB_BUFFER_POOL_INSTANCES
93INNODB_BUFFER_POOL_POPULATE94INNODB_BUFFER_POOL_POPULATE
94INNODB_BUFFER_POOL_RESTORE_AT_STARTUP95INNODB_BUFFER_POOL_RESTORE_AT_STARTUP
9596
=== modified file 'Percona-Server/mysql-test/r/show_check.result'
--- Percona-Server/mysql-test/r/show_check.result 2013-01-09 23:45:25 +0000
+++ Percona-Server/mysql-test/r/show_check.result 2013-05-15 05:12:25 +0000
@@ -15,7 +15,7 @@
15def Table 253 128 7 Y 0 31 815def Table 253 128 7 Y 0 31 8
16def Op 253 10 5 Y 0 31 816def Op 253 10 5 Y 0 31 8
17def Msg_type 253 10 6 Y 0 31 817def Msg_type 253 10 6 Y 0 31 8
18def Msg_text 253 255 27 Y 0 31 818def Msg_text 250 393216 27 Y 0 31 8
19Table Op Msg_type Msg_text19Table Op Msg_type Msg_text
20test.t1 check status Table is already up to date20test.t1 check status Table is already up to date
21check table t1 fast;21check table t1 fast;
@@ -23,7 +23,7 @@
23def Table 253 128 7 Y 0 31 823def Table 253 128 7 Y 0 31 8
24def Op 253 10 5 Y 0 31 824def Op 253 10 5 Y 0 31 8
25def Msg_type 253 10 6 Y 0 31 825def Msg_type 253 10 6 Y 0 31 8
26def Msg_text 253 255 27 Y 0 31 826def Msg_text 250 393216 27 Y 0 31 8
27Table Op Msg_type Msg_text27Table Op Msg_type Msg_text
28test.t1 check status Table is already up to date28test.t1 check status Table is already up to date
29check table t1 changed;29check table t1 changed;
@@ -31,7 +31,7 @@
31def Table 253 128 7 Y 0 31 831def Table 253 128 7 Y 0 31 8
32def Op 253 10 5 Y 0 31 832def Op 253 10 5 Y 0 31 8
33def Msg_type 253 10 6 Y 0 31 833def Msg_type 253 10 6 Y 0 31 8
34def Msg_text 253 255 2 Y 0 31 834def Msg_text 250 393216 2 Y 0 31 8
35Table Op Msg_type Msg_text35Table Op Msg_type Msg_text
36test.t1 check status OK36test.t1 check status OK
37insert into t1 values (5,5,5);37insert into t1 values (5,5,5);
@@ -40,7 +40,7 @@
40def Table 253 128 7 Y 0 31 840def Table 253 128 7 Y 0 31 8
41def Op 253 10 5 Y 0 31 841def Op 253 10 5 Y 0 31 8
42def Msg_type 253 10 6 Y 0 31 842def Msg_type 253 10 6 Y 0 31 8
43def Msg_text 253 255 2 Y 0 31 843def Msg_text 250 393216 2 Y 0 31 8
44Table Op Msg_type Msg_text44Table Op Msg_type Msg_text
45test.t1 check status OK45test.t1 check status OK
46check table t1 medium;46check table t1 medium;
@@ -48,7 +48,7 @@
48def Table 253 128 7 Y 0 31 848def Table 253 128 7 Y 0 31 8
49def Op 253 10 5 Y 0 31 849def Op 253 10 5 Y 0 31 8
50def Msg_type 253 10 6 Y 0 31 850def Msg_type 253 10 6 Y 0 31 8
51def Msg_text 253 255 2 Y 0 31 851def Msg_text 250 393216 2 Y 0 31 8
52Table Op Msg_type Msg_text52Table Op Msg_type Msg_text
53test.t1 check status OK53test.t1 check status OK
54check table t1 extended;54check table t1 extended;
@@ -56,7 +56,7 @@
56def Table 253 128 7 Y 0 31 856def Table 253 128 7 Y 0 31 8
57def Op 253 10 5 Y 0 31 857def Op 253 10 5 Y 0 31 8
58def Msg_type 253 10 6 Y 0 31 858def Msg_type 253 10 6 Y 0 31 8
59def Msg_text 253 255 2 Y 0 31 859def Msg_text 250 393216 2 Y 0 31 8
60Table Op Msg_type Msg_text60Table Op Msg_type Msg_text
61test.t1 check status OK61test.t1 check status OK
62show index from t1;62show index from t1;
@@ -88,7 +88,7 @@
88def Table 253 128 7 Y 0 31 888def Table 253 128 7 Y 0 31 8
89def Op 253 10 8 Y 0 31 889def Op 253 10 8 Y 0 31 8
90def Msg_type 253 10 6 Y 0 31 890def Msg_type 253 10 6 Y 0 31 8
91def Msg_text 253 255 2 Y 0 31 891def Msg_text 250 393216 2 Y 0 31 8
92Table Op Msg_type Msg_text92Table Op Msg_type Msg_text
93test.t1 optimize status OK93test.t1 optimize status OK
94optimize table t1;94optimize table t1;
@@ -160,7 +160,7 @@
160def Table 253 128 7 Y 0 31 8160def Table 253 128 7 Y 0 31 8
161def Op 253 10 7 Y 0 31 8161def Op 253 10 7 Y 0 31 8
162def Msg_type 253 10 6 Y 0 31 8162def Msg_type 253 10 6 Y 0 31 8
163def Msg_text 253 255 2 Y 0 31 8163def Msg_text 250 393216 2 Y 0 31 8
164Table Op Msg_type Msg_text164Table Op Msg_type Msg_text
165test.t1 analyze status OK165test.t1 analyze status OK
166show index from t1;166show index from t1;
@@ -177,7 +177,7 @@
177def Table 253 128 7 Y 0 31 8177def Table 253 128 7 Y 0 31 8
178def Op 253 10 6 Y 0 31 8178def Op 253 10 6 Y 0 31 8
179def Msg_type 253 10 6 Y 0 31 8179def Msg_type 253 10 6 Y 0 31 8
180def Msg_text 253 255 2 Y 0 31 8180def Msg_text 250 393216 2 Y 0 31 8
181Table Op Msg_type Msg_text181Table Op Msg_type Msg_text
182test.t1 repair status OK182test.t1 repair status OK
183show index from t1;183show index from t1;
184184
=== modified file 'Percona-Server/mysql-test/suite/binlog/r/binlog_spurious_ddl_errors.result'
--- Percona-Server/mysql-test/suite/binlog/r/binlog_spurious_ddl_errors.result 2010-06-01 23:25:08 +0000
+++ Percona-Server/mysql-test/suite/binlog/r/binlog_spurious_ddl_errors.result 2013-05-15 05:12:25 +0000
@@ -48,6 +48,7 @@
48################################################################################48################################################################################
49# CLEAN UP #49# CLEAN UP #
50################################################################################50################################################################################
51flush tables;
51UNINSTALL PLUGIN example;52UNINSTALL PLUGIN example;
52SET @@global.binlog_format = @old_binlog_format;53SET @@global.binlog_format = @old_binlog_format;
53SET @@session.binlog_format = @old_binlog_format;54SET @@session.binlog_format = @old_binlog_format;
5455
=== modified file 'Percona-Server/mysql-test/suite/binlog/t/binlog_spurious_ddl_errors.test'
--- Percona-Server/mysql-test/suite/binlog/t/binlog_spurious_ddl_errors.test 2010-06-01 23:25:08 +0000
+++ Percona-Server/mysql-test/suite/binlog/t/binlog_spurious_ddl_errors.test 2013-05-15 05:12:25 +0000
@@ -26,7 +26,8 @@
26--source include/have_log_bin.inc26--source include/have_log_bin.inc
2727
28SET @old_binlog_format= @@global.binlog_format;28SET @old_binlog_format= @@global.binlog_format;
29INSTALL PLUGIN example SONAME 'ha_example.so';29--replace_regex /\.dll/.so/
30eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';
3031
31--echo ################################################################################32--echo ################################################################################
32--echo # Verifies if ER_BINLOG_STMT_MODE_AND_ROW_ENGINE happens by setting the binlog33--echo # Verifies if ER_BINLOG_STMT_MODE_AND_ROW_ENGINE happens by setting the binlog
@@ -90,6 +91,7 @@
90--echo ################################################################################91--echo ################################################################################
91--echo # CLEAN UP #92--echo # CLEAN UP #
92--echo ################################################################################93--echo ################################################################################
94flush tables;
93UNINSTALL PLUGIN example;95UNINSTALL PLUGIN example;
94SET @@global.binlog_format = @old_binlog_format;96SET @@global.binlog_format = @old_binlog_format;
95SET @@session.binlog_format = @old_binlog_format;97SET @@session.binlog_format = @old_binlog_format;
9698
=== modified file 'Percona-Server/mysql-test/suite/binlog/t/disabled.def'
--- Percona-Server/mysql-test/suite/binlog/t/disabled.def 2011-05-24 06:40:38 +0000
+++ Percona-Server/mysql-test/suite/binlog/t/disabled.def 2013-05-15 05:12:25 +0000
@@ -10,4 +10,4 @@
10#10#
11##############################################################################11##############################################################################
12binlog_truncate_innodb : BUG#11764459 2010-10-20 anitha Originally disabled due to BUG#42643. Product bug fixed, but test changes needed12binlog_truncate_innodb : BUG#11764459 2010-10-20 anitha Originally disabled due to BUG#42643. Product bug fixed, but test changes needed
13binlog_spurious_ddl_errors : BUG#11761680 2010-06-03 alik binlog_spurious_ddl_errors.test fails, thus disabled13binlog_spurious_ddl_errors : BUG#11761680 2013-01-18 astha Fixed on mysql-5.6 and trunk
1414
=== modified file 'Percona-Server/mysql-test/suite/innodb/r/innodb_bug14147491.result'
--- Percona-Server/mysql-test/suite/innodb/r/innodb_bug14147491.result 2012-11-19 09:28:51 +0000
+++ Percona-Server/mysql-test/suite/innodb/r/innodb_bug14147491.result 2013-05-15 05:12:25 +0000
@@ -4,14 +4,25 @@
4CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;4CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
5INSERT INTO t1 (b) VALUES ('corrupt me');5INSERT INTO t1 (b) VALUES ('corrupt me');
6INSERT INTO t1 (b) VALUES ('corrupt me');6INSERT INTO t1 (b) VALUES ('corrupt me');
7# Restart server to flush buffers7# Write file to make mysql-test-run.pl expect the "crash", but don't
8# start it until it's told to
9# We give 30 seconds to do a clean shutdown because we do not want
10# to redo apply the pages of t1.ibd at the time of recovery.
11# We want SQL to initiate the first access to t1.ibd.
12# Wait until disconnected.
13# Backup the t1.ibd before corrupting
8# Corrupt the table14# Corrupt the table
9Munged a string.15Munged a string.
10Munged a string.16Munged a string.
11# Write file to make mysql-test-run.pl expect crash and restart17# Write file to make mysql-test-run.pl start up the server again
18SET DEBUG = '+d,innodb_page_corruption_retries';
19# Write file to make mysql-test-run.pl expect the "crash", but don't
20# start it until it's told to
21# The below SELECT query will crash the server because some pages
22# on the disk are corrupted
12SELECT * FROM t1;23SELECT * FROM t1;
13ERROR HY000: Lost connection to MySQL server during query24ERROR HY000: Lost connection to MySQL server during query
14# Turn on reconnect25# Restore the original t1.ibd
15# Wait for server to fully start26# Write file to make mysql-test-run.pl start up the server again
16# Cleanup27# Cleanup
17DROP TABLE t1;28DROP TABLE t1;
1829
=== modified file 'Percona-Server/mysql-test/suite/innodb/t/innodb_bug12400341.test'
--- Percona-Server/mysql-test/suite/innodb/t/innodb_bug12400341.test 2012-01-10 05:23:20 +0000
+++ Percona-Server/mysql-test/suite/innodb/t/innodb_bug12400341.test 2013-05-15 05:12:25 +0000
@@ -7,6 +7,10 @@
7 --skip Test requires InnoDB built with UNIV_DEBUG definition.7 --skip Test requires InnoDB built with UNIV_DEBUG definition.
8}8}
99
10# Don't test under valgrind, undo slots of the previous test might exist still
11# and cause unstable result.
12--source include/not_valgrind.inc
13
10call mtr.add_suppression("InnoDB: Warning: cannot find a free slot for an undo log. Do you have too");14call mtr.add_suppression("InnoDB: Warning: cannot find a free slot for an undo log. Do you have too");
1115
12--disable_query_log16--disable_query_log
1317
=== modified file 'Percona-Server/mysql-test/suite/innodb/t/innodb_bug14147491.test'
--- Percona-Server/mysql-test/suite/innodb/t/innodb_bug14147491.test 2012-11-19 09:28:51 +0000
+++ Percona-Server/mysql-test/suite/innodb/t/innodb_bug14147491.test 2013-05-15 05:12:25 +0000
@@ -10,6 +10,8 @@
10source include/not_embedded.inc;10source include/not_embedded.inc;
11# Require InnoDB11# Require InnoDB
12source include/have_innodb.inc;12source include/have_innodb.inc;
13# Require Debug for SET DEBUG
14source include/have_debug.inc;
1315
14CALL mtr.add_suppression("InnoDB: Error: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts");16CALL mtr.add_suppression("InnoDB: Error: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts");
15CALL mtr.add_suppression("InnoDB: Warning: database page corruption or a failed");17CALL mtr.add_suppression("InnoDB: Warning: database page corruption or a failed");
@@ -27,13 +29,26 @@
27--enable_query_log29--enable_query_log
28INSERT INTO t1 (b) VALUES ('corrupt me');30INSERT INTO t1 (b) VALUES ('corrupt me');
2931
30--echo # Restart server to flush buffers
31source include/restart_mysqld.inc;
32
33--echo # Corrupt the table
34let $MYSQLD_DATADIR=`select @@datadir`;32let $MYSQLD_DATADIR=`select @@datadir`;
35let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd;33let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd;
3634
35--echo # Write file to make mysql-test-run.pl expect the "crash", but don't
36--echo # start it until it's told to
37--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
38
39--echo # We give 30 seconds to do a clean shutdown because we do not want
40--echo # to redo apply the pages of t1.ibd at the time of recovery.
41--echo # We want SQL to initiate the first access to t1.ibd.
42shutdown_server 30;
43
44--echo # Wait until disconnected.
45--source include/wait_until_disconnected.inc
46
47--echo # Backup the t1.ibd before corrupting
48--copy_file $t1_IBD $MYSQLD_DATADIR/test/t1.ibd.backup
49
50--echo # Corrupt the table
51
37perl;52perl;
38use strict;53use strict;
39use warnings;54use warnings;
@@ -59,17 +74,38 @@
59close IBD_FILE;74close IBD_FILE;
60EOF75EOF
6176
62--echo # Write file to make mysql-test-run.pl expect crash and restart77--echo # Write file to make mysql-test-run.pl start up the server again
63--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect78--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
6479--enable_reconnect
80--source include/wait_until_connected_again.inc
81
82SET DEBUG = '+d,innodb_page_corruption_retries';
83
84--echo # Write file to make mysql-test-run.pl expect the "crash", but don't
85--echo # start it until it's told to
86--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
87
88--echo # The below SELECT query will crash the server because some pages
89--echo # on the disk are corrupted
65--error 201390--error 2013
66SELECT * FROM t1;91SELECT * FROM t1;
6792
68--echo # Turn on reconnect93# The below mtr command --remove_file fails randomly on windows with
94# error number 13 which is permission denied on nix systems. We sleep
95# 1 second hoping that any process holding lock on t1.ibd is released.
96SLEEP 1;
97
98--echo # Restore the original t1.ibd
99--remove_file $MYSQLD_DATADIR/test/t1.ibd
100--move_file $MYSQLD_DATADIR/test/t1.ibd.backup $MYSQLD_DATADIR/test/t1.ibd
101
102--echo # Write file to make mysql-test-run.pl start up the server again
103--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
69--enable_reconnect104--enable_reconnect
70
71--echo # Wait for server to fully start
72--source include/wait_until_connected_again.inc105--source include/wait_until_connected_again.inc
73106
107# Note SET DEBUG = '-d,innodb_page_corruption_retries' is not required
108# because the session information is lost after server restart
109
74--echo # Cleanup110--echo # Cleanup
75DROP TABLE t1;111DROP TABLE t1;
76112
=== modified file 'Percona-Server/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result'
--- Percona-Server/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result 2009-11-25 08:19:34 +0000
+++ Percona-Server/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result 2013-05-15 05:12:25 +0000
@@ -531,7 +531,7 @@
531# check layout success: 1531# check layout success: 1
532REPAIR TABLE t1 EXTENDED;532REPAIR TABLE t1 EXTENDED;
533Table Op Msg_type Msg_text533Table Op Msg_type Msg_text
534test.t1 repair note The storage engine for the table doesn't support repair534test.t1 repair status OK
535# check layout success: 1535# check layout success: 1
536TRUNCATE t1;536TRUNCATE t1;
537 537
@@ -1023,7 +1023,7 @@
1023# check layout success: 11023# check layout success: 1
1024REPAIR TABLE t1 EXTENDED;1024REPAIR TABLE t1 EXTENDED;
1025Table Op Msg_type Msg_text1025Table Op Msg_type Msg_text
1026test.t1 repair note The storage engine for the table doesn't support repair1026test.t1 repair status OK
1027# check layout success: 11027# check layout success: 1
1028TRUNCATE t1;1028TRUNCATE t1;
1029 1029
@@ -1530,7 +1530,7 @@
1530# check layout success: 11530# check layout success: 1
1531REPAIR TABLE t1 EXTENDED;1531REPAIR TABLE t1 EXTENDED;
1532Table Op Msg_type Msg_text1532Table Op Msg_type Msg_text
1533test.t1 repair note The storage engine for the table doesn't support repair1533test.t1 repair status OK
1534# check layout success: 11534# check layout success: 1
1535TRUNCATE t1;1535TRUNCATE t1;
1536 1536
@@ -2031,7 +2031,7 @@
2031# check layout success: 12031# check layout success: 1
2032REPAIR TABLE t1 EXTENDED;2032REPAIR TABLE t1 EXTENDED;
2033Table Op Msg_type Msg_text2033Table Op Msg_type Msg_text
2034test.t1 repair note The storage engine for the table doesn't support repair2034test.t1 repair status OK
2035# check layout success: 12035# check layout success: 1
2036TRUNCATE t1;2036TRUNCATE t1;
2037 2037
@@ -2530,7 +2530,7 @@
2530# check layout success: 12530# check layout success: 1
2531REPAIR TABLE t1 EXTENDED;2531REPAIR TABLE t1 EXTENDED;
2532Table Op Msg_type Msg_text2532Table Op Msg_type Msg_text
2533test.t1 repair note The storage engine for the table doesn't support repair2533test.t1 repair status OK
2534# check layout success: 12534# check layout success: 1
2535TRUNCATE t1;2535TRUNCATE t1;
2536 2536
@@ -3040,7 +3040,7 @@
3040# check layout success: 13040# check layout success: 1
3041REPAIR TABLE t1 EXTENDED;3041REPAIR TABLE t1 EXTENDED;
3042Table Op Msg_type Msg_text3042Table Op Msg_type Msg_text
3043test.t1 repair note The storage engine for the table doesn't support repair3043test.t1 repair status OK
3044# check layout success: 13044# check layout success: 1
3045TRUNCATE t1;3045TRUNCATE t1;
3046 3046
@@ -3552,7 +3552,7 @@
3552# check layout success: 13552# check layout success: 1
3553REPAIR TABLE t1 EXTENDED;3553REPAIR TABLE t1 EXTENDED;
3554Table Op Msg_type Msg_text3554Table Op Msg_type Msg_text
3555test.t1 repair note The storage engine for the table doesn't support repair3555test.t1 repair status OK
3556# check layout success: 13556# check layout success: 1
3557TRUNCATE t1;3557TRUNCATE t1;
3558 3558
@@ -4052,7 +4052,7 @@
4052# check layout success: 14052# check layout success: 1
4053REPAIR TABLE t1 EXTENDED;4053REPAIR TABLE t1 EXTENDED;
4054Table Op Msg_type Msg_text4054Table Op Msg_type Msg_text
4055test.t1 repair note The storage engine for the table doesn't support repair4055test.t1 repair status OK
4056# check layout success: 14056# check layout success: 1
4057TRUNCATE t1;4057TRUNCATE t1;
4058 4058
@@ -4545,7 +4545,7 @@
4545# check layout success: 14545# check layout success: 1
4546REPAIR TABLE t1 EXTENDED;4546REPAIR TABLE t1 EXTENDED;
4547Table Op Msg_type Msg_text4547Table Op Msg_type Msg_text
4548test.t1 repair note The storage engine for the table doesn't support repair4548test.t1 repair status OK
4549# check layout success: 14549# check layout success: 1
4550TRUNCATE t1;4550TRUNCATE t1;
4551 4551
@@ -5037,7 +5037,7 @@
5037# check layout success: 15037# check layout success: 1
5038REPAIR TABLE t1 EXTENDED;5038REPAIR TABLE t1 EXTENDED;
5039Table Op Msg_type Msg_text5039Table Op Msg_type Msg_text
5040test.t1 repair note The storage engine for the table doesn't support repair5040test.t1 repair status OK
5041# check layout success: 15041# check layout success: 1
5042TRUNCATE t1;5042TRUNCATE t1;
5043 5043
@@ -5544,7 +5544,7 @@
5544# check layout success: 15544# check layout success: 1
5545REPAIR TABLE t1 EXTENDED;5545REPAIR TABLE t1 EXTENDED;
5546Table Op Msg_type Msg_text5546Table Op Msg_type Msg_text
5547test.t1 repair note The storage engine for the table doesn't support repair5547test.t1 repair status OK
5548# check layout success: 15548# check layout success: 1
5549TRUNCATE t1;5549TRUNCATE t1;
5550 5550
@@ -6045,7 +6045,7 @@
6045# check layout success: 16045# check layout success: 1
6046REPAIR TABLE t1 EXTENDED;6046REPAIR TABLE t1 EXTENDED;
6047Table Op Msg_type Msg_text6047Table Op Msg_type Msg_text
6048test.t1 repair note The storage engine for the table doesn't support repair6048test.t1 repair status OK
6049# check layout success: 16049# check layout success: 1
6050TRUNCATE t1;6050TRUNCATE t1;
6051 6051
@@ -6544,7 +6544,7 @@
6544# check layout success: 16544# check layout success: 1
6545REPAIR TABLE t1 EXTENDED;6545REPAIR TABLE t1 EXTENDED;
6546Table Op Msg_type Msg_text6546Table Op Msg_type Msg_text
6547test.t1 repair note The storage engine for the table doesn't support repair6547test.t1 repair status OK
6548# check layout success: 16548# check layout success: 1
6549TRUNCATE t1;6549TRUNCATE t1;
6550 6550
@@ -7054,7 +7054,7 @@
7054# check layout success: 17054# check layout success: 1
7055REPAIR TABLE t1 EXTENDED;7055REPAIR TABLE t1 EXTENDED;
7056Table Op Msg_type Msg_text7056Table Op Msg_type Msg_text
7057test.t1 repair note The storage engine for the table doesn't support repair7057test.t1 repair status OK
7058# check layout success: 17058# check layout success: 1
7059TRUNCATE t1;7059TRUNCATE t1;
7060 7060
@@ -7566,7 +7566,7 @@
7566# check layout success: 17566# check layout success: 1
7567REPAIR TABLE t1 EXTENDED;7567REPAIR TABLE t1 EXTENDED;
7568Table Op Msg_type Msg_text7568Table Op Msg_type Msg_text
7569test.t1 repair note The storage engine for the table doesn't support repair7569test.t1 repair status OK
7570# check layout success: 17570# check layout success: 1
7571TRUNCATE t1;7571TRUNCATE t1;
7572 7572
@@ -8066,7 +8066,7 @@
8066# check layout success: 18066# check layout success: 1
8067REPAIR TABLE t1 EXTENDED;8067REPAIR TABLE t1 EXTENDED;
8068Table Op Msg_type Msg_text8068Table Op Msg_type Msg_text
8069test.t1 repair note The storage engine for the table doesn't support repair8069test.t1 repair status OK
8070# check layout success: 18070# check layout success: 1
8071TRUNCATE t1;8071TRUNCATE t1;
8072 8072
@@ -8576,7 +8576,7 @@
8576# check layout success: 18576# check layout success: 1
8577REPAIR TABLE t1 EXTENDED;8577REPAIR TABLE t1 EXTENDED;
8578Table Op Msg_type Msg_text8578Table Op Msg_type Msg_text
8579test.t1 repair note The storage engine for the table doesn't support repair8579test.t1 repair status OK
8580# check layout success: 18580# check layout success: 1
8581TRUNCATE t1;8581TRUNCATE t1;
8582 8582
@@ -9084,7 +9084,7 @@
9084# check layout success: 19084# check layout success: 1
9085REPAIR TABLE t1 EXTENDED;9085REPAIR TABLE t1 EXTENDED;
9086Table Op Msg_type Msg_text9086Table Op Msg_type Msg_text
9087test.t1 repair note The storage engine for the table doesn't support repair9087test.t1 repair status OK
9088# check layout success: 19088# check layout success: 1
9089TRUNCATE t1;9089TRUNCATE t1;
9090 9090
@@ -9607,7 +9607,7 @@
9607# check layout success: 19607# check layout success: 1
9608REPAIR TABLE t1 EXTENDED;9608REPAIR TABLE t1 EXTENDED;
9609Table Op Msg_type Msg_text9609Table Op Msg_type Msg_text
9610test.t1 repair note The storage engine for the table doesn't support repair9610test.t1 repair status OK
9611# check layout success: 19611# check layout success: 1
9612TRUNCATE t1;9612TRUNCATE t1;
9613 9613
@@ -10124,7 +10124,7 @@
10124# check layout success: 110124# check layout success: 1
10125REPAIR TABLE t1 EXTENDED;10125REPAIR TABLE t1 EXTENDED;
10126Table Op Msg_type Msg_text10126Table Op Msg_type Msg_text
10127test.t1 repair note The storage engine for the table doesn't support repair10127test.t1 repair status OK
10128# check layout success: 110128# check layout success: 1
10129TRUNCATE t1;10129TRUNCATE t1;
10130 10130
@@ -10639,7 +10639,7 @@
10639# check layout success: 110639# check layout success: 1
10640REPAIR TABLE t1 EXTENDED;10640REPAIR TABLE t1 EXTENDED;
10641Table Op Msg_type Msg_text10641Table Op Msg_type Msg_text
10642test.t1 repair note The storage engine for the table doesn't support repair10642test.t1 repair status OK
10643# check layout success: 110643# check layout success: 1
10644TRUNCATE t1;10644TRUNCATE t1;
10645 10645
@@ -11165,7 +11165,7 @@
11165# check layout success: 111165# check layout success: 1
11166REPAIR TABLE t1 EXTENDED;11166REPAIR TABLE t1 EXTENDED;
11167Table Op Msg_type Msg_text11167Table Op Msg_type Msg_text
11168test.t1 repair note The storage engine for the table doesn't support repair11168test.t1 repair status OK
11169# check layout success: 111169# check layout success: 1
11170TRUNCATE t1;11170TRUNCATE t1;
11171 11171
@@ -11693,7 +11693,7 @@
11693# check layout success: 111693# check layout success: 1
11694REPAIR TABLE t1 EXTENDED;11694REPAIR TABLE t1 EXTENDED;
11695Table Op Msg_type Msg_text11695Table Op Msg_type Msg_text
11696test.t1 repair note The storage engine for the table doesn't support repair11696test.t1 repair status OK
11697# check layout success: 111697# check layout success: 1
11698TRUNCATE t1;11698TRUNCATE t1;
11699 11699
@@ -12209,7 +12209,7 @@
12209# check layout success: 112209# check layout success: 1
12210REPAIR TABLE t1 EXTENDED;12210REPAIR TABLE t1 EXTENDED;
12211Table Op Msg_type Msg_text12211Table Op Msg_type Msg_text
12212test.t1 repair note The storage engine for the table doesn't support repair12212test.t1 repair status OK
12213# check layout success: 112213# check layout success: 1
12214TRUNCATE t1;12214TRUNCATE t1;
12215 12215
@@ -12718,7 +12718,7 @@
12718# check layout success: 112718# check layout success: 1
12719REPAIR TABLE t1 EXTENDED;12719REPAIR TABLE t1 EXTENDED;
12720Table Op Msg_type Msg_text12720Table Op Msg_type Msg_text
12721test.t1 repair note The storage engine for the table doesn't support repair12721test.t1 repair status OK
12722# check layout success: 112722# check layout success: 1
12723TRUNCATE t1;12723TRUNCATE t1;
12724 12724
@@ -13226,7 +13226,7 @@
13226# check layout success: 113226# check layout success: 1
13227REPAIR TABLE t1 EXTENDED;13227REPAIR TABLE t1 EXTENDED;
13228Table Op Msg_type Msg_text13228Table Op Msg_type Msg_text
13229test.t1 repair note The storage engine for the table doesn't support repair13229test.t1 repair status OK
13230# check layout success: 113230# check layout success: 1
13231TRUNCATE t1;13231TRUNCATE t1;
13232 13232
@@ -13749,7 +13749,7 @@
13749# check layout success: 113749# check layout success: 1
13750REPAIR TABLE t1 EXTENDED;13750REPAIR TABLE t1 EXTENDED;
13751Table Op Msg_type Msg_text13751Table Op Msg_type Msg_text
13752test.t1 repair note The storage engine for the table doesn't support repair13752test.t1 repair status OK
13753# check layout success: 113753# check layout success: 1
13754TRUNCATE t1;13754TRUNCATE t1;
13755 13755
@@ -14266,7 +14266,7 @@
14266# check layout success: 114266# check layout success: 1
14267REPAIR TABLE t1 EXTENDED;14267REPAIR TABLE t1 EXTENDED;
14268Table Op Msg_type Msg_text14268Table Op Msg_type Msg_text
14269test.t1 repair note The storage engine for the table doesn't support repair14269test.t1 repair status OK
14270# check layout success: 114270# check layout success: 1
14271TRUNCATE t1;14271TRUNCATE t1;
14272 14272
@@ -14781,7 +14781,7 @@
14781# check layout success: 114781# check layout success: 1
14782REPAIR TABLE t1 EXTENDED;14782REPAIR TABLE t1 EXTENDED;
14783Table Op Msg_type Msg_text14783Table Op Msg_type Msg_text
14784test.t1 repair note The storage engine for the table doesn't support repair14784test.t1 repair status OK
14785# check layout success: 114785# check layout success: 1
14786TRUNCATE t1;14786TRUNCATE t1;
14787 14787
@@ -15307,7 +15307,7 @@
15307# check layout success: 115307# check layout success: 1
15308REPAIR TABLE t1 EXTENDED;15308REPAIR TABLE t1 EXTENDED;
15309Table Op Msg_type Msg_text15309Table Op Msg_type Msg_text
15310test.t1 repair note The storage engine for the table doesn't support repair15310test.t1 repair status OK
15311# check layout success: 115311# check layout success: 1
15312TRUNCATE t1;15312TRUNCATE t1;
15313 15313
@@ -15835,7 +15835,7 @@
15835# check layout success: 115835# check layout success: 1
15836REPAIR TABLE t1 EXTENDED;15836REPAIR TABLE t1 EXTENDED;
15837Table Op Msg_type Msg_text15837Table Op Msg_type Msg_text
15838test.t1 repair note The storage engine for the table doesn't support repair15838test.t1 repair status OK
15839# check layout success: 115839# check layout success: 1
15840TRUNCATE t1;15840TRUNCATE t1;
15841 15841
@@ -16351,7 +16351,7 @@
16351# check layout success: 116351# check layout success: 1
16352REPAIR TABLE t1 EXTENDED;16352REPAIR TABLE t1 EXTENDED;
16353Table Op Msg_type Msg_text16353Table Op Msg_type Msg_text
16354test.t1 repair note The storage engine for the table doesn't support repair16354test.t1 repair status OK
16355# check layout success: 116355# check layout success: 1
16356TRUNCATE t1;16356TRUNCATE t1;
16357 16357
@@ -16846,11579 +16846,11579 @@
16846# check layout success: 116846# check layout success: 1
16847REPAIR TABLE t1 EXTENDED;16847REPAIR TABLE t1 EXTENDED;
16848Table Op Msg_type Msg_text16848Table Op Msg_type Msg_text
16849test.t1 repair note The storage engine for the table doesn't support repair
16850# check layout success: 1
16851TRUNCATE t1;
16852
16853# check TRUNCATE success: 1
16854# check layout success: 1
16855# End usability test (inc/partition_check.inc)
16856DROP TABLE t1;
16857CREATE TABLE t1 (
16858f_int1 INTEGER,
16859f_int2 INTEGER,
16860f_char1 CHAR(20),
16861f_char2 CHAR(20),
16862f_charbig VARCHAR(1000)
16863
16864)
16865PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
16866INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16867SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16868WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16869ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2), ADD PRIMARY KEY(f_int2,f_int1);
16870INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16871SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16872WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16873# Start usability test (inc/partition_check.inc)
16874create_command
16875SHOW CREATE TABLE t1;
16876Table Create Table
16877t1 CREATE TABLE `t1` (
16878 `f_int1` int(11) NOT NULL DEFAULT '0',
16879 `f_int2` int(11) NOT NULL DEFAULT '0',
16880 `f_char1` char(20) DEFAULT NULL,
16881 `f_char2` char(20) DEFAULT NULL,
16882 `f_charbig` varchar(1000) DEFAULT NULL,
16883 PRIMARY KEY (`f_int2`,`f_int1`),
16884 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
16885) ENGINE=InnoDB DEFAULT CHARSET=latin1
16886/*!50100 PARTITION BY KEY (f_int1,f_int2)
16887PARTITIONS 5 */
16888
16889# check prerequisites-1 success: 1
16890# check COUNT(*) success: 1
16891# check MIN/MAX(f_int1) success: 1
16892# check MIN/MAX(f_int2) success: 1
16893INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16894SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16895CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16896WHERE f_int1 IN (2,3);
16897ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
16898# check prerequisites-3 success: 1
16899# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16900INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16901SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16902CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16903WHERE f_int1 IN (2,3);
16904DELETE FROM t1 WHERE f_charbig = 'delete me';
16905INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16906SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16907CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16908WHERE f_int1 IN (2,3);
16909DELETE FROM t1 WHERE f_charbig = 'delete me';
16910# check read via f_int1 success: 1
16911# check read via f_int2 success: 1
16912
16913# check multiple-1 success: 1
16914DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16915
16916# check multiple-2 success: 1
16917INSERT INTO t1 SELECT * FROM t0_template
16918WHERE MOD(f_int1,3) = 0;
16919
16920# check multiple-3 success: 1
16921UPDATE t1 SET f_int1 = f_int1 + @max_row
16922WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16923AND @max_row_div2 + @max_row_div4;
16924
16925# check multiple-4 success: 1
16926DELETE FROM t1
16927WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16928AND @max_row_div2 + @max_row_div4 + @max_row;
16929
16930# check multiple-5 success: 1
16931SELECT COUNT(*) INTO @try_count FROM t0_template
16932WHERE MOD(f_int1,3) = 0
16933AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16934SELECT COUNT(*) INTO @clash_count
16935FROM t1 INNER JOIN t0_template USING(f_int1)
16936WHERE MOD(f_int1,3) = 0
16937AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16938SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16939INSERT INTO t1
16940SET f_int1 = @cur_value , f_int2 = @cur_value,
16941f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16942f_charbig = '#SINGLE#';
16943
16944# check single-1 success: 1
16945SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16946INSERT INTO t1
16947SET f_int1 = @cur_value , f_int2 = @cur_value,
16948f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16949f_charbig = '#SINGLE#';
16950
16951# check single-2 success: 1
16952SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16953SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16954UPDATE t1 SET f_int1 = @cur_value2
16955WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16956
16957# check single-3 success: 1
16958SET @cur_value1= -1;
16959SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16960UPDATE t1 SET f_int1 = @cur_value1
16961WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16962
16963# check single-4 success: 1
16964SELECT MAX(f_int1) INTO @cur_value FROM t1;
16965DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16966
16967# check single-5 success: 1
16968DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16969
16970# check single-6 success: 1
16971INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16972
16973# check single-7 success: 1
16974DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16975DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16976INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16977f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16978f_charbig = '#NULL#';
16979INSERT INTO t1
16980SET f_int1 = NULL , f_int2 = -@max_row,
16981f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16982f_charbig = '#NULL#';
16983ERROR 23000: Column 'f_int1' cannot be null
16984# check null success: 1
16985DELETE FROM t1
16986WHERE f_int1 = 0 AND f_int2 = 0
16987AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16988AND f_charbig = '#NULL#';
16989INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16990SELECT f_int1, f_int1, '', '', 'was inserted'
16991 FROM t0_template source_tab
16992WHERE MOD(f_int1,3) = 0
16993AND f_int1 BETWEEN @max_row_div2 AND @max_row
16994ON DUPLICATE KEY
16995UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
16996f_int2 = 2 * @max_row + source_tab.f_int1,
16997f_charbig = 'was updated';
16998
16999# check unique-1-a success: 1
17000
17001# check unique-1-b success: 1
17002DELETE FROM t1 WHERE f_charbig = 'was inserted';
17003UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17004f_int2 = CAST(f_char1 AS SIGNED INT),
17005f_charbig = CONCAT('===',f_char1,'===')
17006WHERE f_charbig = 'was updated';
17007REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17008SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17009 FROM t0_template source_tab
17010WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17011
17012# check replace success: 1
17013DELETE FROM t1
17014WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17015DELETE FROM t1
17016WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17017f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17018UPDATE t1 SET f_int2 = f_int1,
17019f_char1 = CAST(f_int1 AS CHAR),
17020f_char2 = CAST(f_int1 AS CHAR),
17021f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17022WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17023SET AUTOCOMMIT= 0;
17024INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17025SELECT f_int1, f_int1, '', '', 'was inserted'
17026FROM t0_template source_tab
17027WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17028
17029# check transactions-1 success: 1
17030COMMIT WORK;
17031
17032# check transactions-2 success: 1
17033ROLLBACK WORK;
17034
17035# check transactions-3 success: 1
17036DELETE FROM t1 WHERE f_charbig = 'was inserted';
17037COMMIT WORK;
17038ROLLBACK WORK;
17039
17040# check transactions-4 success: 1
17041INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17042SELECT f_int1, f_int1, '', '', 'was inserted'
17043FROM t0_template source_tab
17044WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17045
17046# check transactions-5 success: 1
17047ROLLBACK WORK;
17048
17049# check transactions-6 success: 1
17050# INFO: Storage engine used for t1 seems to be transactional.
17051COMMIT;
17052
17053# check transactions-7 success: 1
17054DELETE FROM t1 WHERE f_charbig = 'was inserted';
17055COMMIT WORK;
17056SET @@session.sql_mode = 'traditional';
17057SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17058INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17059SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17060'', '', 'was inserted' FROM t0_template
17061WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17062ERROR 22012: Division by 0
17063COMMIT;
17064
17065# check transactions-8 success: 1
17066# INFO: Storage engine used for t1 seems to be able to revert
17067# changes made by the failing statement.
17068SET @@session.sql_mode = '';
17069SET AUTOCOMMIT= 1;
17070DELETE FROM t1 WHERE f_charbig = 'was inserted';
17071COMMIT WORK;
17072UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17073
17074# check special-1 success: 1
17075UPDATE t1 SET f_charbig = '';
17076
17077# check special-2 success: 1
17078UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17079INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17080SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17081WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17082INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17083SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17084'just inserted' FROM t0_template
17085WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17086CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17087BEGIN
17088UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17089f_charbig = 'updated by trigger'
17090 WHERE f_int1 = new.f_int1;
17091END|
17092INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17093SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17094WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17095
17096# check trigger-1 success: 1
17097DROP TRIGGER trg_1;
17098UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17099f_int2 = CAST(f_char1 AS SIGNED INT),
17100f_charbig = 'just inserted'
17101 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17102DELETE FROM t0_aux
17103WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17104INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17105SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17106'just inserted' FROM t0_template
17107WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17108CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17109BEGIN
17110UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17111f_charbig = 'updated by trigger'
17112 WHERE f_int1 = new.f_int1;
17113END|
17114INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17115SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17116WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17117
17118# check trigger-2 success: 1
17119DROP TRIGGER trg_1;
17120UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17121f_int2 = CAST(f_char1 AS SIGNED INT),
17122f_charbig = 'just inserted'
17123 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17124DELETE FROM t0_aux
17125WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17126INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17127SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17128'just inserted' FROM t0_template
17129WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17130CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17131BEGIN
17132UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17133f_charbig = 'updated by trigger'
17134 WHERE f_int1 = new.f_int1;
17135END|
17136UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17137WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17138
17139# check trigger-3 success: 1
17140DROP TRIGGER trg_1;
17141UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17142f_int2 = CAST(f_char1 AS SIGNED INT),
17143f_charbig = 'just inserted'
17144 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17145DELETE FROM t0_aux
17146WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17147INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17148SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17149'just inserted' FROM t0_template
17150WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17151CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17152BEGIN
17153UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17154f_charbig = 'updated by trigger'
17155 WHERE f_int1 = - old.f_int1;
17156END|
17157UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17158WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17159
17160# check trigger-4 success: 1
17161DROP TRIGGER trg_1;
17162UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17163f_int2 = CAST(f_char1 AS SIGNED INT),
17164f_charbig = 'just inserted'
17165 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17166DELETE FROM t0_aux
17167WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17168INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17169SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17170'just inserted' FROM t0_template
17171WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17172CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17173BEGIN
17174UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17175f_charbig = 'updated by trigger'
17176 WHERE f_int1 = new.f_int1;
17177END|
17178UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17179WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17180
17181# check trigger-5 success: 1
17182DROP TRIGGER trg_1;
17183UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17184f_int2 = CAST(f_char1 AS SIGNED INT),
17185f_charbig = 'just inserted'
17186 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17187DELETE FROM t0_aux
17188WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17189INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17190SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17191'just inserted' FROM t0_template
17192WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17193CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17194BEGIN
17195UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17196f_charbig = 'updated by trigger'
17197 WHERE f_int1 = - old.f_int1;
17198END|
17199UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17200WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17201
17202# check trigger-6 success: 1
17203DROP TRIGGER trg_1;
17204UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17205f_int2 = CAST(f_char1 AS SIGNED INT),
17206f_charbig = 'just inserted'
17207 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17208DELETE FROM t0_aux
17209WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17210INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17211SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17212'just inserted' FROM t0_template
17213WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17214CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17215BEGIN
17216UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17217f_charbig = 'updated by trigger'
17218 WHERE f_int1 = - old.f_int1;
17219END|
17220DELETE FROM t0_aux
17221WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17222
17223# check trigger-7 success: 1
17224DROP TRIGGER trg_1;
17225UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17226f_int2 = CAST(f_char1 AS SIGNED INT),
17227f_charbig = 'just inserted'
17228 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17229DELETE FROM t0_aux
17230WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17231INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17232SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17233'just inserted' FROM t0_template
17234WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17235CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17236BEGIN
17237UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17238f_charbig = 'updated by trigger'
17239 WHERE f_int1 = - old.f_int1;
17240END|
17241DELETE FROM t0_aux
17242WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17243
17244# check trigger-8 success: 1
17245DROP TRIGGER trg_1;
17246UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17247f_int2 = CAST(f_char1 AS SIGNED INT),
17248f_charbig = 'just inserted'
17249 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17250DELETE FROM t0_aux
17251WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17252DELETE FROM t1
17253WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17254CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17255BEGIN
17256SET new.f_int1 = old.f_int1 + @max_row,
17257new.f_int2 = old.f_int2 - @max_row,
17258new.f_charbig = '####updated per update trigger####';
17259END|
17260UPDATE t1
17261SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17262f_charbig = '####updated per update statement itself####';
17263
17264# check trigger-9 success: 1
17265DROP TRIGGER trg_2;
17266UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17267f_int2 = CAST(f_char1 AS SIGNED INT),
17268f_charbig = CONCAT('===',f_char1,'===');
17269CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17270BEGIN
17271SET new.f_int1 = new.f_int1 + @max_row,
17272new.f_int2 = new.f_int2 - @max_row,
17273new.f_charbig = '####updated per update trigger####';
17274END|
17275UPDATE t1
17276SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17277f_charbig = '####updated per update statement itself####';
17278
17279# check trigger-10 success: 1
17280DROP TRIGGER trg_2;
17281UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17282f_int2 = CAST(f_char1 AS SIGNED INT),
17283f_charbig = CONCAT('===',f_char1,'===');
17284CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17285BEGIN
17286SET new.f_int1 = @my_max1 + @counter,
17287new.f_int2 = @my_min2 - @counter,
17288new.f_charbig = '####updated per insert trigger####';
17289SET @counter = @counter + 1;
17290END|
17291SET @counter = 1;
17292SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17293INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17294SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17295CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17296WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17297ORDER BY f_int1;
17298DROP TRIGGER trg_3;
17299
17300# check trigger-11 success: 1
17301DELETE FROM t1
17302WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17303AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17304AND f_charbig = '####updated per insert trigger####';
17305CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17306BEGIN
17307SET new.f_int1 = @my_max1 + @counter,
17308new.f_int2 = @my_min2 - @counter,
17309new.f_charbig = '####updated per insert trigger####';
17310SET @counter = @counter + 1;
17311END|
17312SET @counter = 1;
17313SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17314INSERT INTO t1 (f_char1, f_char2, f_charbig)
17315SELECT CAST(f_int1 AS CHAR),
17316CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17317WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17318ORDER BY f_int1;
17319DROP TRIGGER trg_3;
17320
17321# check trigger-12 success: 1
17322DELETE FROM t1
17323WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17324AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17325AND f_charbig = '####updated per insert trigger####';
17326ANALYZE TABLE t1;
17327Table Op Msg_type Msg_text
17328test.t1 analyze status OK
17329CHECK TABLE t1 EXTENDED;
17330Table Op Msg_type Msg_text
17331test.t1 check status OK
17332CHECKSUM TABLE t1 EXTENDED;
17333Table Checksum
17334test.t1 <some_value>
17335OPTIMIZE TABLE t1;
17336Table Op Msg_type Msg_text
17337test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
17338test.t1 optimize status OK
17339# check layout success: 1
17340REPAIR TABLE t1 EXTENDED;
17341Table Op Msg_type Msg_text
17342test.t1 repair note The storage engine for the table doesn't support repair
17343# check layout success: 1
17344TRUNCATE t1;
17345
17346# check TRUNCATE success: 1
17347# check layout success: 1
17348# End usability test (inc/partition_check.inc)
17349DROP TABLE t1;
17350CREATE TABLE t1 (
17351f_int1 INTEGER,
17352f_int2 INTEGER,
17353f_char1 CHAR(20),
17354f_char2 CHAR(20),
17355f_charbig VARCHAR(1000)
17356
17357)
17358PARTITION BY LIST(MOD(f_int1 + f_int2,4))
17359(PARTITION part_3 VALUES IN (-3),
17360PARTITION part_2 VALUES IN (-2),
17361PARTITION part_1 VALUES IN (-1),
17362PARTITION part_N VALUES IN (NULL),
17363PARTITION part0 VALUES IN (0),
17364PARTITION part1 VALUES IN (1),
17365PARTITION part2 VALUES IN (2),
17366PARTITION part3 VALUES IN (3));
17367INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17368SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17369WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17370ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2), ADD PRIMARY KEY(f_int2,f_int1);
17371INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17372SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17373WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17374# Start usability test (inc/partition_check.inc)
17375create_command
17376SHOW CREATE TABLE t1;
17377Table Create Table
17378t1 CREATE TABLE `t1` (
17379 `f_int1` int(11) NOT NULL DEFAULT '0',
17380 `f_int2` int(11) NOT NULL DEFAULT '0',
17381 `f_char1` char(20) DEFAULT NULL,
17382 `f_char2` char(20) DEFAULT NULL,
17383 `f_charbig` varchar(1000) DEFAULT NULL,
17384 PRIMARY KEY (`f_int2`,`f_int1`),
17385 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
17386) ENGINE=InnoDB DEFAULT CHARSET=latin1
17387/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
17388(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
17389 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
17390 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
17391 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
17392 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
17393 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
17394 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
17395 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
17396
17397# check prerequisites-1 success: 1
17398# check COUNT(*) success: 1
17399# check MIN/MAX(f_int1) success: 1
17400# check MIN/MAX(f_int2) success: 1
17401INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17402SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17403CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17404WHERE f_int1 IN (2,3);
17405ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
17406# check prerequisites-3 success: 1
17407# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
17408INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17409SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17410CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17411WHERE f_int1 IN (2,3);
17412DELETE FROM t1 WHERE f_charbig = 'delete me';
17413INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17414SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17415CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17416WHERE f_int1 IN (2,3);
17417DELETE FROM t1 WHERE f_charbig = 'delete me';
17418# check read via f_int1 success: 1
17419# check read via f_int2 success: 1
17420
17421# check multiple-1 success: 1
17422DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17423
17424# check multiple-2 success: 1
17425INSERT INTO t1 SELECT * FROM t0_template
17426WHERE MOD(f_int1,3) = 0;
17427
17428# check multiple-3 success: 1
17429UPDATE t1 SET f_int1 = f_int1 + @max_row
17430WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17431AND @max_row_div2 + @max_row_div4;
17432
17433# check multiple-4 success: 1
17434DELETE FROM t1
17435WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17436AND @max_row_div2 + @max_row_div4 + @max_row;
17437
17438# check multiple-5 success: 1
17439SELECT COUNT(*) INTO @try_count FROM t0_template
17440WHERE MOD(f_int1,3) = 0
17441AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17442SELECT COUNT(*) INTO @clash_count
17443FROM t1 INNER JOIN t0_template USING(f_int1)
17444WHERE MOD(f_int1,3) = 0
17445AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17446SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17447INSERT INTO t1
17448SET f_int1 = @cur_value , f_int2 = @cur_value,
17449f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17450f_charbig = '#SINGLE#';
17451
17452# check single-1 success: 1
17453SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17454INSERT INTO t1
17455SET f_int1 = @cur_value , f_int2 = @cur_value,
17456f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17457f_charbig = '#SINGLE#';
17458
17459# check single-2 success: 1
17460SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17461SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17462UPDATE t1 SET f_int1 = @cur_value2
17463WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17464
17465# check single-3 success: 1
17466SET @cur_value1= -1;
17467SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17468UPDATE t1 SET f_int1 = @cur_value1
17469WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17470
17471# check single-4 success: 1
17472SELECT MAX(f_int1) INTO @cur_value FROM t1;
17473DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17474
17475# check single-5 success: 1
17476DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17477
17478# check single-6 success: 1
17479INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17480
17481# check single-7 success: 1
17482DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17483DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17484INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17485f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17486f_charbig = '#NULL#';
17487INSERT INTO t1
17488SET f_int1 = NULL , f_int2 = -@max_row,
17489f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17490f_charbig = '#NULL#';
17491ERROR 23000: Column 'f_int1' cannot be null
17492# check null success: 1
17493DELETE FROM t1
17494WHERE f_int1 = 0 AND f_int2 = 0
17495AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17496AND f_charbig = '#NULL#';
17497INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17498SELECT f_int1, f_int1, '', '', 'was inserted'
17499 FROM t0_template source_tab
17500WHERE MOD(f_int1,3) = 0
17501AND f_int1 BETWEEN @max_row_div2 AND @max_row
17502ON DUPLICATE KEY
17503UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
17504f_int2 = 2 * @max_row + source_tab.f_int1,
17505f_charbig = 'was updated';
17506
17507# check unique-1-a success: 1
17508
17509# check unique-1-b success: 1
17510DELETE FROM t1 WHERE f_charbig = 'was inserted';
17511UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17512f_int2 = CAST(f_char1 AS SIGNED INT),
17513f_charbig = CONCAT('===',f_char1,'===')
17514WHERE f_charbig = 'was updated';
17515REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17516SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17517 FROM t0_template source_tab
17518WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17519
17520# check replace success: 1
17521DELETE FROM t1
17522WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17523DELETE FROM t1
17524WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17525f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17526UPDATE t1 SET f_int2 = f_int1,
17527f_char1 = CAST(f_int1 AS CHAR),
17528f_char2 = CAST(f_int1 AS CHAR),
17529f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17530WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17531SET AUTOCOMMIT= 0;
17532INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17533SELECT f_int1, f_int1, '', '', 'was inserted'
17534FROM t0_template source_tab
17535WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17536
17537# check transactions-1 success: 1
17538COMMIT WORK;
17539
17540# check transactions-2 success: 1
17541ROLLBACK WORK;
17542
17543# check transactions-3 success: 1
17544DELETE FROM t1 WHERE f_charbig = 'was inserted';
17545COMMIT WORK;
17546ROLLBACK WORK;
17547
17548# check transactions-4 success: 1
17549INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17550SELECT f_int1, f_int1, '', '', 'was inserted'
17551FROM t0_template source_tab
17552WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17553
17554# check transactions-5 success: 1
17555ROLLBACK WORK;
17556
17557# check transactions-6 success: 1
17558# INFO: Storage engine used for t1 seems to be transactional.
17559COMMIT;
17560
17561# check transactions-7 success: 1
17562DELETE FROM t1 WHERE f_charbig = 'was inserted';
17563COMMIT WORK;
17564SET @@session.sql_mode = 'traditional';
17565SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17566INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17567SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17568'', '', 'was inserted' FROM t0_template
17569WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17570ERROR 22012: Division by 0
17571COMMIT;
17572
17573# check transactions-8 success: 1
17574# INFO: Storage engine used for t1 seems to be able to revert
17575# changes made by the failing statement.
17576SET @@session.sql_mode = '';
17577SET AUTOCOMMIT= 1;
17578DELETE FROM t1 WHERE f_charbig = 'was inserted';
17579COMMIT WORK;
17580UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17581
17582# check special-1 success: 1
17583UPDATE t1 SET f_charbig = '';
17584
17585# check special-2 success: 1
17586UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17587INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17588SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17589WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17590INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17591SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17592'just inserted' FROM t0_template
17593WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17594CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17595BEGIN
17596UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17597f_charbig = 'updated by trigger'
17598 WHERE f_int1 = new.f_int1;
17599END|
17600INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17601SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17602WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17603
17604# check trigger-1 success: 1
17605DROP TRIGGER trg_1;
17606UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17607f_int2 = CAST(f_char1 AS SIGNED INT),
17608f_charbig = 'just inserted'
17609 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17610DELETE FROM t0_aux
17611WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17612INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17613SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17614'just inserted' FROM t0_template
17615WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17616CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17617BEGIN
17618UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17619f_charbig = 'updated by trigger'
17620 WHERE f_int1 = new.f_int1;
17621END|
17622INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17623SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17624WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17625
17626# check trigger-2 success: 1
17627DROP TRIGGER trg_1;
17628UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17629f_int2 = CAST(f_char1 AS SIGNED INT),
17630f_charbig = 'just inserted'
17631 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17632DELETE FROM t0_aux
17633WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17634INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17635SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17636'just inserted' FROM t0_template
17637WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17638CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17639BEGIN
17640UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17641f_charbig = 'updated by trigger'
17642 WHERE f_int1 = new.f_int1;
17643END|
17644UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17645WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17646
17647# check trigger-3 success: 1
17648DROP TRIGGER trg_1;
17649UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17650f_int2 = CAST(f_char1 AS SIGNED INT),
17651f_charbig = 'just inserted'
17652 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17653DELETE FROM t0_aux
17654WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17655INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17656SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17657'just inserted' FROM t0_template
17658WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17659CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17660BEGIN
17661UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17662f_charbig = 'updated by trigger'
17663 WHERE f_int1 = - old.f_int1;
17664END|
17665UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17666WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17667
17668# check trigger-4 success: 1
17669DROP TRIGGER trg_1;
17670UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17671f_int2 = CAST(f_char1 AS SIGNED INT),
17672f_charbig = 'just inserted'
17673 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17674DELETE FROM t0_aux
17675WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17676INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17677SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17678'just inserted' FROM t0_template
17679WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17680CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17681BEGIN
17682UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17683f_charbig = 'updated by trigger'
17684 WHERE f_int1 = new.f_int1;
17685END|
17686UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17687WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17688
17689# check trigger-5 success: 1
17690DROP TRIGGER trg_1;
17691UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17692f_int2 = CAST(f_char1 AS SIGNED INT),
17693f_charbig = 'just inserted'
17694 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17695DELETE FROM t0_aux
17696WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17697INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17698SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17699'just inserted' FROM t0_template
17700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17701CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17702BEGIN
17703UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17704f_charbig = 'updated by trigger'
17705 WHERE f_int1 = - old.f_int1;
17706END|
17707UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17708WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17709
17710# check trigger-6 success: 1
17711DROP TRIGGER trg_1;
17712UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17713f_int2 = CAST(f_char1 AS SIGNED INT),
17714f_charbig = 'just inserted'
17715 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17716DELETE FROM t0_aux
17717WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17718INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17719SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17720'just inserted' FROM t0_template
17721WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17722CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17723BEGIN
17724UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17725f_charbig = 'updated by trigger'
17726 WHERE f_int1 = - old.f_int1;
17727END|
17728DELETE FROM t0_aux
17729WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17730
17731# check trigger-7 success: 1
17732DROP TRIGGER trg_1;
17733UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17734f_int2 = CAST(f_char1 AS SIGNED INT),
17735f_charbig = 'just inserted'
17736 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17737DELETE FROM t0_aux
17738WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17739INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17740SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17741'just inserted' FROM t0_template
17742WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17743CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17744BEGIN
17745UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17746f_charbig = 'updated by trigger'
17747 WHERE f_int1 = - old.f_int1;
17748END|
17749DELETE FROM t0_aux
17750WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17751
17752# check trigger-8 success: 1
17753DROP TRIGGER trg_1;
17754UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17755f_int2 = CAST(f_char1 AS SIGNED INT),
17756f_charbig = 'just inserted'
17757 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17758DELETE FROM t0_aux
17759WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17760DELETE FROM t1
17761WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17762CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17763BEGIN
17764SET new.f_int1 = old.f_int1 + @max_row,
17765new.f_int2 = old.f_int2 - @max_row,
17766new.f_charbig = '####updated per update trigger####';
17767END|
17768UPDATE t1
17769SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17770f_charbig = '####updated per update statement itself####';
17771
17772# check trigger-9 success: 1
17773DROP TRIGGER trg_2;
17774UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17775f_int2 = CAST(f_char1 AS SIGNED INT),
17776f_charbig = CONCAT('===',f_char1,'===');
17777CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17778BEGIN
17779SET new.f_int1 = new.f_int1 + @max_row,
17780new.f_int2 = new.f_int2 - @max_row,
17781new.f_charbig = '####updated per update trigger####';
17782END|
17783UPDATE t1
17784SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17785f_charbig = '####updated per update statement itself####';
17786
17787# check trigger-10 success: 1
17788DROP TRIGGER trg_2;
17789UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17790f_int2 = CAST(f_char1 AS SIGNED INT),
17791f_charbig = CONCAT('===',f_char1,'===');
17792CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17793BEGIN
17794SET new.f_int1 = @my_max1 + @counter,
17795new.f_int2 = @my_min2 - @counter,
17796new.f_charbig = '####updated per insert trigger####';
17797SET @counter = @counter + 1;
17798END|
17799SET @counter = 1;
17800SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17801INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17802SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17803CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17804WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17805ORDER BY f_int1;
17806DROP TRIGGER trg_3;
17807
17808# check trigger-11 success: 1
17809DELETE FROM t1
17810WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17811AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17812AND f_charbig = '####updated per insert trigger####';
17813CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17814BEGIN
17815SET new.f_int1 = @my_max1 + @counter,
17816new.f_int2 = @my_min2 - @counter,
17817new.f_charbig = '####updated per insert trigger####';
17818SET @counter = @counter + 1;
17819END|
17820SET @counter = 1;
17821SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17822INSERT INTO t1 (f_char1, f_char2, f_charbig)
17823SELECT CAST(f_int1 AS CHAR),
17824CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17825WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17826ORDER BY f_int1;
17827DROP TRIGGER trg_3;
17828
17829# check trigger-12 success: 1
17830DELETE FROM t1
17831WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17832AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17833AND f_charbig = '####updated per insert trigger####';
17834ANALYZE TABLE t1;
17835Table Op Msg_type Msg_text
17836test.t1 analyze status OK
17837CHECK TABLE t1 EXTENDED;
17838Table Op Msg_type Msg_text
17839test.t1 check status OK
17840CHECKSUM TABLE t1 EXTENDED;
17841Table Checksum
17842test.t1 <some_value>
17843OPTIMIZE TABLE t1;
17844Table Op Msg_type Msg_text
17845test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
17846test.t1 optimize status OK
17847# check layout success: 1
17848REPAIR TABLE t1 EXTENDED;
17849Table Op Msg_type Msg_text
17850test.t1 repair note The storage engine for the table doesn't support repair
17851# check layout success: 1
17852TRUNCATE t1;
17853
17854# check TRUNCATE success: 1
17855# check layout success: 1
17856# End usability test (inc/partition_check.inc)
17857DROP TABLE t1;
17858CREATE TABLE t1 (
17859f_int1 INTEGER,
17860f_int2 INTEGER,
17861f_char1 CHAR(20),
17862f_char2 CHAR(20),
17863f_charbig VARCHAR(1000)
17864
17865)
17866PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
17867(PARTITION parta VALUES LESS THAN (0),
17868PARTITION partb VALUES LESS THAN (5),
17869PARTITION partc VALUES LESS THAN (10),
17870PARTITION partd VALUES LESS THAN (10 + 5),
17871PARTITION parte VALUES LESS THAN (20),
17872PARTITION partf VALUES LESS THAN (2147483646));
17873INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17874SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17875WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17876ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2), ADD PRIMARY KEY(f_int2,f_int1);
17877INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17878SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17879WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17880# Start usability test (inc/partition_check.inc)
17881create_command
17882SHOW CREATE TABLE t1;
17883Table Create Table
17884t1 CREATE TABLE `t1` (
17885 `f_int1` int(11) NOT NULL DEFAULT '0',
17886 `f_int2` int(11) NOT NULL DEFAULT '0',
17887 `f_char1` char(20) DEFAULT NULL,
17888 `f_char2` char(20) DEFAULT NULL,
17889 `f_charbig` varchar(1000) DEFAULT NULL,
17890 PRIMARY KEY (`f_int2`,`f_int1`),
17891 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
17892) ENGINE=InnoDB DEFAULT CHARSET=latin1
17893/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
17894(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
17895 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
17896 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
17897 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
17898 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
17899 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
17900
17901# check prerequisites-1 success: 1
17902# check COUNT(*) success: 1
17903# check MIN/MAX(f_int1) success: 1
17904# check MIN/MAX(f_int2) success: 1
17905INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17906SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17907CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17908WHERE f_int1 IN (2,3);
17909ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
17910# check prerequisites-3 success: 1
17911# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
17912INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17913SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17914CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17915WHERE f_int1 IN (2,3);
17916DELETE FROM t1 WHERE f_charbig = 'delete me';
17917INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17918SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17919CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17920WHERE f_int1 IN (2,3);
17921DELETE FROM t1 WHERE f_charbig = 'delete me';
17922# check read via f_int1 success: 1
17923# check read via f_int2 success: 1
17924
17925# check multiple-1 success: 1
17926DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17927
17928# check multiple-2 success: 1
17929INSERT INTO t1 SELECT * FROM t0_template
17930WHERE MOD(f_int1,3) = 0;
17931
17932# check multiple-3 success: 1
17933UPDATE t1 SET f_int1 = f_int1 + @max_row
17934WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17935AND @max_row_div2 + @max_row_div4;
17936
17937# check multiple-4 success: 1
17938DELETE FROM t1
17939WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17940AND @max_row_div2 + @max_row_div4 + @max_row;
17941
17942# check multiple-5 success: 1
17943SELECT COUNT(*) INTO @try_count FROM t0_template
17944WHERE MOD(f_int1,3) = 0
17945AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17946SELECT COUNT(*) INTO @clash_count
17947FROM t1 INNER JOIN t0_template USING(f_int1)
17948WHERE MOD(f_int1,3) = 0
17949AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17950SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17951INSERT INTO t1
17952SET f_int1 = @cur_value , f_int2 = @cur_value,
17953f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17954f_charbig = '#SINGLE#';
17955
17956# check single-1 success: 1
17957SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17958INSERT INTO t1
17959SET f_int1 = @cur_value , f_int2 = @cur_value,
17960f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17961f_charbig = '#SINGLE#';
17962
17963# check single-2 success: 1
17964SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17965SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17966UPDATE t1 SET f_int1 = @cur_value2
17967WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17968
17969# check single-3 success: 1
17970SET @cur_value1= -1;
17971SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17972UPDATE t1 SET f_int1 = @cur_value1
17973WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17974
17975# check single-4 success: 1
17976SELECT MAX(f_int1) INTO @cur_value FROM t1;
17977DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17978
17979# check single-5 success: 1
17980DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17981
17982# check single-6 success: 1
17983INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17984ERROR HY000: Table has no partition for value 2147483647
17985DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17986INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17987f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17988f_charbig = '#NULL#';
17989INSERT INTO t1
17990SET f_int1 = NULL , f_int2 = -@max_row,
17991f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17992f_charbig = '#NULL#';
17993ERROR 23000: Column 'f_int1' cannot be null
17994# check null success: 1
17995DELETE FROM t1
17996WHERE f_int1 = 0 AND f_int2 = 0
17997AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17998AND f_charbig = '#NULL#';
17999INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18000SELECT f_int1, f_int1, '', '', 'was inserted'
18001 FROM t0_template source_tab
18002WHERE MOD(f_int1,3) = 0
18003AND f_int1 BETWEEN @max_row_div2 AND @max_row
18004ON DUPLICATE KEY
18005UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18006f_int2 = 2 * @max_row + source_tab.f_int1,
18007f_charbig = 'was updated';
18008
18009# check unique-1-a success: 1
18010
18011# check unique-1-b success: 1
18012DELETE FROM t1 WHERE f_charbig = 'was inserted';
18013UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18014f_int2 = CAST(f_char1 AS SIGNED INT),
18015f_charbig = CONCAT('===',f_char1,'===')
18016WHERE f_charbig = 'was updated';
18017REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18018SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18019 FROM t0_template source_tab
18020WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18021
18022# check replace success: 1
18023DELETE FROM t1
18024WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18025DELETE FROM t1
18026WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18027f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18028UPDATE t1 SET f_int2 = f_int1,
18029f_char1 = CAST(f_int1 AS CHAR),
18030f_char2 = CAST(f_int1 AS CHAR),
18031f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18032WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18033SET AUTOCOMMIT= 0;
18034INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18035SELECT f_int1, f_int1, '', '', 'was inserted'
18036FROM t0_template source_tab
18037WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18038
18039# check transactions-1 success: 1
18040COMMIT WORK;
18041
18042# check transactions-2 success: 1
18043ROLLBACK WORK;
18044
18045# check transactions-3 success: 1
18046DELETE FROM t1 WHERE f_charbig = 'was inserted';
18047COMMIT WORK;
18048ROLLBACK WORK;
18049
18050# check transactions-4 success: 1
18051INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18052SELECT f_int1, f_int1, '', '', 'was inserted'
18053FROM t0_template source_tab
18054WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18055
18056# check transactions-5 success: 1
18057ROLLBACK WORK;
18058
18059# check transactions-6 success: 1
18060# INFO: Storage engine used for t1 seems to be transactional.
18061COMMIT;
18062
18063# check transactions-7 success: 1
18064DELETE FROM t1 WHERE f_charbig = 'was inserted';
18065COMMIT WORK;
18066SET @@session.sql_mode = 'traditional';
18067SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18068INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18069SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18070'', '', 'was inserted' FROM t0_template
18071WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18072ERROR 22012: Division by 0
18073COMMIT;
18074
18075# check transactions-8 success: 1
18076# INFO: Storage engine used for t1 seems to be able to revert
18077# changes made by the failing statement.
18078SET @@session.sql_mode = '';
18079SET AUTOCOMMIT= 1;
18080DELETE FROM t1 WHERE f_charbig = 'was inserted';
18081COMMIT WORK;
18082UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18083
18084# check special-1 success: 1
18085UPDATE t1 SET f_charbig = '';
18086
18087# check special-2 success: 1
18088UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18089INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18090SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18091WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18092INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18093SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18094'just inserted' FROM t0_template
18095WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18096CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18097BEGIN
18098UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18099f_charbig = 'updated by trigger'
18100 WHERE f_int1 = new.f_int1;
18101END|
18102INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18103SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18105
18106# check trigger-1 success: 1
18107DROP TRIGGER trg_1;
18108UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18109f_int2 = CAST(f_char1 AS SIGNED INT),
18110f_charbig = 'just inserted'
18111 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18112DELETE FROM t0_aux
18113WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18114INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18115SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18116'just inserted' FROM t0_template
18117WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18118CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18119BEGIN
18120UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18121f_charbig = 'updated by trigger'
18122 WHERE f_int1 = new.f_int1;
18123END|
18124INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18125SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18126WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18127
18128# check trigger-2 success: 1
18129DROP TRIGGER trg_1;
18130UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18131f_int2 = CAST(f_char1 AS SIGNED INT),
18132f_charbig = 'just inserted'
18133 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18134DELETE FROM t0_aux
18135WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18136INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18137SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18138'just inserted' FROM t0_template
18139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18140CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18141BEGIN
18142UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18143f_charbig = 'updated by trigger'
18144 WHERE f_int1 = new.f_int1;
18145END|
18146UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18147WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18148
18149# check trigger-3 success: 1
18150DROP TRIGGER trg_1;
18151UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18152f_int2 = CAST(f_char1 AS SIGNED INT),
18153f_charbig = 'just inserted'
18154 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18155DELETE FROM t0_aux
18156WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18157INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18158SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18159'just inserted' FROM t0_template
18160WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18161CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18162BEGIN
18163UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18164f_charbig = 'updated by trigger'
18165 WHERE f_int1 = - old.f_int1;
18166END|
18167UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18168WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18169
18170# check trigger-4 success: 1
18171DROP TRIGGER trg_1;
18172UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18173f_int2 = CAST(f_char1 AS SIGNED INT),
18174f_charbig = 'just inserted'
18175 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18176DELETE FROM t0_aux
18177WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18178INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18179SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18180'just inserted' FROM t0_template
18181WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18182CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18183BEGIN
18184UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18185f_charbig = 'updated by trigger'
18186 WHERE f_int1 = new.f_int1;
18187END|
18188UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18189WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18190
18191# check trigger-5 success: 1
18192DROP TRIGGER trg_1;
18193UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18194f_int2 = CAST(f_char1 AS SIGNED INT),
18195f_charbig = 'just inserted'
18196 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18197DELETE FROM t0_aux
18198WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18199INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18200SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18201'just inserted' FROM t0_template
18202WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18203CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18204BEGIN
18205UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18206f_charbig = 'updated by trigger'
18207 WHERE f_int1 = - old.f_int1;
18208END|
18209UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18210WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18211
18212# check trigger-6 success: 1
18213DROP TRIGGER trg_1;
18214UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18215f_int2 = CAST(f_char1 AS SIGNED INT),
18216f_charbig = 'just inserted'
18217 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18218DELETE FROM t0_aux
18219WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18220INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18221SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18222'just inserted' FROM t0_template
18223WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18224CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18225BEGIN
18226UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18227f_charbig = 'updated by trigger'
18228 WHERE f_int1 = - old.f_int1;
18229END|
18230DELETE FROM t0_aux
18231WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18232
18233# check trigger-7 success: 1
18234DROP TRIGGER trg_1;
18235UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18236f_int2 = CAST(f_char1 AS SIGNED INT),
18237f_charbig = 'just inserted'
18238 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18239DELETE FROM t0_aux
18240WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18241INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18242SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18243'just inserted' FROM t0_template
18244WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18245CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18246BEGIN
18247UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18248f_charbig = 'updated by trigger'
18249 WHERE f_int1 = - old.f_int1;
18250END|
18251DELETE FROM t0_aux
18252WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18253
18254# check trigger-8 success: 1
18255DROP TRIGGER trg_1;
18256UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18257f_int2 = CAST(f_char1 AS SIGNED INT),
18258f_charbig = 'just inserted'
18259 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18260DELETE FROM t0_aux
18261WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18262DELETE FROM t1
18263WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18264CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18265BEGIN
18266SET new.f_int1 = old.f_int1 + @max_row,
18267new.f_int2 = old.f_int2 - @max_row,
18268new.f_charbig = '####updated per update trigger####';
18269END|
18270UPDATE t1
18271SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18272f_charbig = '####updated per update statement itself####';
18273
18274# check trigger-9 success: 1
18275DROP TRIGGER trg_2;
18276UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18277f_int2 = CAST(f_char1 AS SIGNED INT),
18278f_charbig = CONCAT('===',f_char1,'===');
18279CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18280BEGIN
18281SET new.f_int1 = new.f_int1 + @max_row,
18282new.f_int2 = new.f_int2 - @max_row,
18283new.f_charbig = '####updated per update trigger####';
18284END|
18285UPDATE t1
18286SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18287f_charbig = '####updated per update statement itself####';
18288
18289# check trigger-10 success: 1
18290DROP TRIGGER trg_2;
18291UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18292f_int2 = CAST(f_char1 AS SIGNED INT),
18293f_charbig = CONCAT('===',f_char1,'===');
18294CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18295BEGIN
18296SET new.f_int1 = @my_max1 + @counter,
18297new.f_int2 = @my_min2 - @counter,
18298new.f_charbig = '####updated per insert trigger####';
18299SET @counter = @counter + 1;
18300END|
18301SET @counter = 1;
18302SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18303INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18304SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18305CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18307ORDER BY f_int1;
18308DROP TRIGGER trg_3;
18309
18310# check trigger-11 success: 1
18311DELETE FROM t1
18312WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18313AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18314AND f_charbig = '####updated per insert trigger####';
18315CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18316BEGIN
18317SET new.f_int1 = @my_max1 + @counter,
18318new.f_int2 = @my_min2 - @counter,
18319new.f_charbig = '####updated per insert trigger####';
18320SET @counter = @counter + 1;
18321END|
18322SET @counter = 1;
18323SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18324INSERT INTO t1 (f_char1, f_char2, f_charbig)
18325SELECT CAST(f_int1 AS CHAR),
18326CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18327WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18328ORDER BY f_int1;
18329DROP TRIGGER trg_3;
18330
18331# check trigger-12 success: 1
18332DELETE FROM t1
18333WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18334AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18335AND f_charbig = '####updated per insert trigger####';
18336ANALYZE TABLE t1;
18337Table Op Msg_type Msg_text
18338test.t1 analyze status OK
18339CHECK TABLE t1 EXTENDED;
18340Table Op Msg_type Msg_text
18341test.t1 check status OK
18342CHECKSUM TABLE t1 EXTENDED;
18343Table Checksum
18344test.t1 <some_value>
18345OPTIMIZE TABLE t1;
18346Table Op Msg_type Msg_text
18347test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
18348test.t1 optimize status OK
18349# check layout success: 1
18350REPAIR TABLE t1 EXTENDED;
18351Table Op Msg_type Msg_text
18352test.t1 repair note The storage engine for the table doesn't support repair
18353# check layout success: 1
18354TRUNCATE t1;
18355
18356# check TRUNCATE success: 1
18357# check layout success: 1
18358# End usability test (inc/partition_check.inc)
18359DROP TABLE t1;
18360CREATE TABLE t1 (
18361f_int1 INTEGER,
18362f_int2 INTEGER,
18363f_char1 CHAR(20),
18364f_char2 CHAR(20),
18365f_charbig VARCHAR(1000)
18366
18367)
18368PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
18369(PARTITION parta VALUES LESS THAN (0),
18370PARTITION partb VALUES LESS THAN (5),
18371PARTITION partc VALUES LESS THAN (10),
18372PARTITION partd VALUES LESS THAN (2147483646));
18373INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18374SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18375WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18376ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2), ADD PRIMARY KEY(f_int2,f_int1);
18377INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18378SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18379WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18380# Start usability test (inc/partition_check.inc)
18381create_command
18382SHOW CREATE TABLE t1;
18383Table Create Table
18384t1 CREATE TABLE `t1` (
18385 `f_int1` int(11) NOT NULL DEFAULT '0',
18386 `f_int2` int(11) NOT NULL DEFAULT '0',
18387 `f_char1` char(20) DEFAULT NULL,
18388 `f_char2` char(20) DEFAULT NULL,
18389 `f_charbig` varchar(1000) DEFAULT NULL,
18390 PRIMARY KEY (`f_int2`,`f_int1`),
18391 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
18392) ENGINE=InnoDB DEFAULT CHARSET=latin1
18393/*!50100 PARTITION BY RANGE (f_int1)
18394SUBPARTITION BY HASH (f_int2)
18395SUBPARTITIONS 2
18396(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
18397 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
18398 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
18399 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
18400
18401# check prerequisites-1 success: 1
18402# check COUNT(*) success: 1
18403# check MIN/MAX(f_int1) success: 1
18404# check MIN/MAX(f_int2) success: 1
18405INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18406SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18407CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18408WHERE f_int1 IN (2,3);
18409ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
18410# check prerequisites-3 success: 1
18411# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18412INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18413SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18414CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18415WHERE f_int1 IN (2,3);
18416DELETE FROM t1 WHERE f_charbig = 'delete me';
18417INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18418SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18419CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18420WHERE f_int1 IN (2,3);
18421DELETE FROM t1 WHERE f_charbig = 'delete me';
18422# check read via f_int1 success: 1
18423# check read via f_int2 success: 1
18424
18425# check multiple-1 success: 1
18426DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18427
18428# check multiple-2 success: 1
18429INSERT INTO t1 SELECT * FROM t0_template
18430WHERE MOD(f_int1,3) = 0;
18431
18432# check multiple-3 success: 1
18433UPDATE t1 SET f_int1 = f_int1 + @max_row
18434WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18435AND @max_row_div2 + @max_row_div4;
18436
18437# check multiple-4 success: 1
18438DELETE FROM t1
18439WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18440AND @max_row_div2 + @max_row_div4 + @max_row;
18441
18442# check multiple-5 success: 1
18443SELECT COUNT(*) INTO @try_count FROM t0_template
18444WHERE MOD(f_int1,3) = 0
18445AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18446SELECT COUNT(*) INTO @clash_count
18447FROM t1 INNER JOIN t0_template USING(f_int1)
18448WHERE MOD(f_int1,3) = 0
18449AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18450SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18451INSERT INTO t1
18452SET f_int1 = @cur_value , f_int2 = @cur_value,
18453f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18454f_charbig = '#SINGLE#';
18455
18456# check single-1 success: 1
18457SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18458INSERT INTO t1
18459SET f_int1 = @cur_value , f_int2 = @cur_value,
18460f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18461f_charbig = '#SINGLE#';
18462
18463# check single-2 success: 1
18464SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18465SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18466UPDATE t1 SET f_int1 = @cur_value2
18467WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18468
18469# check single-3 success: 1
18470SET @cur_value1= -1;
18471SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18472UPDATE t1 SET f_int1 = @cur_value1
18473WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18474
18475# check single-4 success: 1
18476SELECT MAX(f_int1) INTO @cur_value FROM t1;
18477DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18478
18479# check single-5 success: 1
18480DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18481
18482# check single-6 success: 1
18483INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18484ERROR HY000: Table has no partition for value 2147483647
18485DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18486INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18487f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18488f_charbig = '#NULL#';
18489INSERT INTO t1
18490SET f_int1 = NULL , f_int2 = -@max_row,
18491f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18492f_charbig = '#NULL#';
18493ERROR 23000: Column 'f_int1' cannot be null
18494# check null success: 1
18495DELETE FROM t1
18496WHERE f_int1 = 0 AND f_int2 = 0
18497AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18498AND f_charbig = '#NULL#';
18499INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18500SELECT f_int1, f_int1, '', '', 'was inserted'
18501 FROM t0_template source_tab
18502WHERE MOD(f_int1,3) = 0
18503AND f_int1 BETWEEN @max_row_div2 AND @max_row
18504ON DUPLICATE KEY
18505UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18506f_int2 = 2 * @max_row + source_tab.f_int1,
18507f_charbig = 'was updated';
18508
18509# check unique-1-a success: 1
18510
18511# check unique-1-b success: 1
18512DELETE FROM t1 WHERE f_charbig = 'was inserted';
18513UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18514f_int2 = CAST(f_char1 AS SIGNED INT),
18515f_charbig = CONCAT('===',f_char1,'===')
18516WHERE f_charbig = 'was updated';
18517REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18518SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18519 FROM t0_template source_tab
18520WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18521
18522# check replace success: 1
18523DELETE FROM t1
18524WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18525DELETE FROM t1
18526WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18527f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18528UPDATE t1 SET f_int2 = f_int1,
18529f_char1 = CAST(f_int1 AS CHAR),
18530f_char2 = CAST(f_int1 AS CHAR),
18531f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18532WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18533SET AUTOCOMMIT= 0;
18534INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18535SELECT f_int1, f_int1, '', '', 'was inserted'
18536FROM t0_template source_tab
18537WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18538
18539# check transactions-1 success: 1
18540COMMIT WORK;
18541
18542# check transactions-2 success: 1
18543ROLLBACK WORK;
18544
18545# check transactions-3 success: 1
18546DELETE FROM t1 WHERE f_charbig = 'was inserted';
18547COMMIT WORK;
18548ROLLBACK WORK;
18549
18550# check transactions-4 success: 1
18551INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18552SELECT f_int1, f_int1, '', '', 'was inserted'
18553FROM t0_template source_tab
18554WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18555
18556# check transactions-5 success: 1
18557ROLLBACK WORK;
18558
18559# check transactions-6 success: 1
18560# INFO: Storage engine used for t1 seems to be transactional.
18561COMMIT;
18562
18563# check transactions-7 success: 1
18564DELETE FROM t1 WHERE f_charbig = 'was inserted';
18565COMMIT WORK;
18566SET @@session.sql_mode = 'traditional';
18567SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18568INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18569SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18570'', '', 'was inserted' FROM t0_template
18571WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18572ERROR 22012: Division by 0
18573COMMIT;
18574
18575# check transactions-8 success: 1
18576# INFO: Storage engine used for t1 seems to be able to revert
18577# changes made by the failing statement.
18578SET @@session.sql_mode = '';
18579SET AUTOCOMMIT= 1;
18580DELETE FROM t1 WHERE f_charbig = 'was inserted';
18581COMMIT WORK;
18582UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18583
18584# check special-1 success: 1
18585UPDATE t1 SET f_charbig = '';
18586
18587# check special-2 success: 1
18588UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18589INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18590SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18591WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18593SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18594'just inserted' FROM t0_template
18595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18596CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18597BEGIN
18598UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18599f_charbig = 'updated by trigger'
18600 WHERE f_int1 = new.f_int1;
18601END|
18602INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18603SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18604WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18605
18606# check trigger-1 success: 1
18607DROP TRIGGER trg_1;
18608UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18609f_int2 = CAST(f_char1 AS SIGNED INT),
18610f_charbig = 'just inserted'
18611 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18612DELETE FROM t0_aux
18613WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18614INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18615SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18616'just inserted' FROM t0_template
18617WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18618CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18619BEGIN
18620UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18621f_charbig = 'updated by trigger'
18622 WHERE f_int1 = new.f_int1;
18623END|
18624INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18625SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18626WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18627
18628# check trigger-2 success: 1
18629DROP TRIGGER trg_1;
18630UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18631f_int2 = CAST(f_char1 AS SIGNED INT),
18632f_charbig = 'just inserted'
18633 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18634DELETE FROM t0_aux
18635WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18636INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18637SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18638'just inserted' FROM t0_template
18639WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18640CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18641BEGIN
18642UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18643f_charbig = 'updated by trigger'
18644 WHERE f_int1 = new.f_int1;
18645END|
18646UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18647WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18648
18649# check trigger-3 success: 1
18650DROP TRIGGER trg_1;
18651UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18652f_int2 = CAST(f_char1 AS SIGNED INT),
18653f_charbig = 'just inserted'
18654 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18655DELETE FROM t0_aux
18656WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18657INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18658SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18659'just inserted' FROM t0_template
18660WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18661CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18662BEGIN
18663UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18664f_charbig = 'updated by trigger'
18665 WHERE f_int1 = - old.f_int1;
18666END|
18667UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18668WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18669
18670# check trigger-4 success: 1
18671DROP TRIGGER trg_1;
18672UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18673f_int2 = CAST(f_char1 AS SIGNED INT),
18674f_charbig = 'just inserted'
18675 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18676DELETE FROM t0_aux
18677WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18678INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18679SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18680'just inserted' FROM t0_template
18681WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18682CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18683BEGIN
18684UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18685f_charbig = 'updated by trigger'
18686 WHERE f_int1 = new.f_int1;
18687END|
18688UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18689WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18690
18691# check trigger-5 success: 1
18692DROP TRIGGER trg_1;
18693UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18694f_int2 = CAST(f_char1 AS SIGNED INT),
18695f_charbig = 'just inserted'
18696 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18697DELETE FROM t0_aux
18698WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18699INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18700SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18701'just inserted' FROM t0_template
18702WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18703CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18704BEGIN
18705UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18706f_charbig = 'updated by trigger'
18707 WHERE f_int1 = - old.f_int1;
18708END|
18709UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18710WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18711
18712# check trigger-6 success: 1
18713DROP TRIGGER trg_1;
18714UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18715f_int2 = CAST(f_char1 AS SIGNED INT),
18716f_charbig = 'just inserted'
18717 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18718DELETE FROM t0_aux
18719WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18720INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18721SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18722'just inserted' FROM t0_template
18723WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18724CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18725BEGIN
18726UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18727f_charbig = 'updated by trigger'
18728 WHERE f_int1 = - old.f_int1;
18729END|
18730DELETE FROM t0_aux
18731WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18732
18733# check trigger-7 success: 1
18734DROP TRIGGER trg_1;
18735UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18736f_int2 = CAST(f_char1 AS SIGNED INT),
18737f_charbig = 'just inserted'
18738 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18739DELETE FROM t0_aux
18740WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18741INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18742SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18743'just inserted' FROM t0_template
18744WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18745CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18746BEGIN
18747UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18748f_charbig = 'updated by trigger'
18749 WHERE f_int1 = - old.f_int1;
18750END|
18751DELETE FROM t0_aux
18752WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18753
18754# check trigger-8 success: 1
18755DROP TRIGGER trg_1;
18756UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18757f_int2 = CAST(f_char1 AS SIGNED INT),
18758f_charbig = 'just inserted'
18759 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18760DELETE FROM t0_aux
18761WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18762DELETE FROM t1
18763WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18764CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18765BEGIN
18766SET new.f_int1 = old.f_int1 + @max_row,
18767new.f_int2 = old.f_int2 - @max_row,
18768new.f_charbig = '####updated per update trigger####';
18769END|
18770UPDATE t1
18771SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18772f_charbig = '####updated per update statement itself####';
18773
18774# check trigger-9 success: 1
18775DROP TRIGGER trg_2;
18776UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18777f_int2 = CAST(f_char1 AS SIGNED INT),
18778f_charbig = CONCAT('===',f_char1,'===');
18779CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18780BEGIN
18781SET new.f_int1 = new.f_int1 + @max_row,
18782new.f_int2 = new.f_int2 - @max_row,
18783new.f_charbig = '####updated per update trigger####';
18784END|
18785UPDATE t1
18786SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18787f_charbig = '####updated per update statement itself####';
18788
18789# check trigger-10 success: 1
18790DROP TRIGGER trg_2;
18791UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18792f_int2 = CAST(f_char1 AS SIGNED INT),
18793f_charbig = CONCAT('===',f_char1,'===');
18794CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18795BEGIN
18796SET new.f_int1 = @my_max1 + @counter,
18797new.f_int2 = @my_min2 - @counter,
18798new.f_charbig = '####updated per insert trigger####';
18799SET @counter = @counter + 1;
18800END|
18801SET @counter = 1;
18802SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18803INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18804SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18805CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18806WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18807ORDER BY f_int1;
18808DROP TRIGGER trg_3;
18809
18810# check trigger-11 success: 1
18811DELETE FROM t1
18812WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18813AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18814AND f_charbig = '####updated per insert trigger####';
18815CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18816BEGIN
18817SET new.f_int1 = @my_max1 + @counter,
18818new.f_int2 = @my_min2 - @counter,
18819new.f_charbig = '####updated per insert trigger####';
18820SET @counter = @counter + 1;
18821END|
18822SET @counter = 1;
18823SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18824INSERT INTO t1 (f_char1, f_char2, f_charbig)
18825SELECT CAST(f_int1 AS CHAR),
18826CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18827WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18828ORDER BY f_int1;
18829DROP TRIGGER trg_3;
18830
18831# check trigger-12 success: 1
18832DELETE FROM t1
18833WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18834AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18835AND f_charbig = '####updated per insert trigger####';
18836ANALYZE TABLE t1;
18837Table Op Msg_type Msg_text
18838test.t1 analyze status OK
18839CHECK TABLE t1 EXTENDED;
18840Table Op Msg_type Msg_text
18841test.t1 check status OK
18842CHECKSUM TABLE t1 EXTENDED;
18843Table Checksum
18844test.t1 <some_value>
18845OPTIMIZE TABLE t1;
18846Table Op Msg_type Msg_text
18847test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
18848test.t1 optimize status OK
18849# check layout success: 1
18850REPAIR TABLE t1 EXTENDED;
18851Table Op Msg_type Msg_text
18852test.t1 repair note The storage engine for the table doesn't support repair
18853# check layout success: 1
18854TRUNCATE t1;
18855
18856# check TRUNCATE success: 1
18857# check layout success: 1
18858# End usability test (inc/partition_check.inc)
18859DROP TABLE t1;
18860CREATE TABLE t1 (
18861f_int1 INTEGER,
18862f_int2 INTEGER,
18863f_char1 CHAR(20),
18864f_char2 CHAR(20),
18865f_charbig VARCHAR(1000)
18866
18867)
18868PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
18869(PARTITION part1 VALUES LESS THAN (0)
18870(SUBPARTITION subpart11, SUBPARTITION subpart12),
18871PARTITION part2 VALUES LESS THAN (5)
18872(SUBPARTITION subpart21, SUBPARTITION subpart22),
18873PARTITION part3 VALUES LESS THAN (10)
18874(SUBPARTITION subpart31, SUBPARTITION subpart32),
18875PARTITION part4 VALUES LESS THAN (2147483646)
18876(SUBPARTITION subpart41, SUBPARTITION subpart42));
18877INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18878SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18879WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18880ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2), ADD PRIMARY KEY(f_int2,f_int1);
18881INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18882SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18883WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18884# Start usability test (inc/partition_check.inc)
18885create_command
18886SHOW CREATE TABLE t1;
18887Table Create Table
18888t1 CREATE TABLE `t1` (
18889 `f_int1` int(11) NOT NULL DEFAULT '0',
18890 `f_int2` int(11) NOT NULL DEFAULT '0',
18891 `f_char1` char(20) DEFAULT NULL,
18892 `f_char2` char(20) DEFAULT NULL,
18893 `f_charbig` varchar(1000) DEFAULT NULL,
18894 PRIMARY KEY (`f_int2`,`f_int1`),
18895 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
18896) ENGINE=InnoDB DEFAULT CHARSET=latin1
18897/*!50100 PARTITION BY RANGE (f_int1)
18898SUBPARTITION BY KEY (f_int2)
18899(PARTITION part1 VALUES LESS THAN (0)
18900 (SUBPARTITION subpart11 ENGINE = InnoDB,
18901 SUBPARTITION subpart12 ENGINE = InnoDB),
18902 PARTITION part2 VALUES LESS THAN (5)
18903 (SUBPARTITION subpart21 ENGINE = InnoDB,
18904 SUBPARTITION subpart22 ENGINE = InnoDB),
18905 PARTITION part3 VALUES LESS THAN (10)
18906 (SUBPARTITION subpart31 ENGINE = InnoDB,
18907 SUBPARTITION subpart32 ENGINE = InnoDB),
18908 PARTITION part4 VALUES LESS THAN (2147483646)
18909 (SUBPARTITION subpart41 ENGINE = InnoDB,
18910 SUBPARTITION subpart42 ENGINE = InnoDB)) */
18911
18912# check prerequisites-1 success: 1
18913# check COUNT(*) success: 1
18914# check MIN/MAX(f_int1) success: 1
18915# check MIN/MAX(f_int2) success: 1
18916INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18917SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18918CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18919WHERE f_int1 IN (2,3);
18920ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
18921# check prerequisites-3 success: 1
18922# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18923INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18924SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18925CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18926WHERE f_int1 IN (2,3);
18927DELETE FROM t1 WHERE f_charbig = 'delete me';
18928INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18929SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18930CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18931WHERE f_int1 IN (2,3);
18932DELETE FROM t1 WHERE f_charbig = 'delete me';
18933# check read via f_int1 success: 1
18934# check read via f_int2 success: 1
18935
18936# check multiple-1 success: 1
18937DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18938
18939# check multiple-2 success: 1
18940INSERT INTO t1 SELECT * FROM t0_template
18941WHERE MOD(f_int1,3) = 0;
18942
18943# check multiple-3 success: 1
18944UPDATE t1 SET f_int1 = f_int1 + @max_row
18945WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18946AND @max_row_div2 + @max_row_div4;
18947
18948# check multiple-4 success: 1
18949DELETE FROM t1
18950WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18951AND @max_row_div2 + @max_row_div4 + @max_row;
18952
18953# check multiple-5 success: 1
18954SELECT COUNT(*) INTO @try_count FROM t0_template
18955WHERE MOD(f_int1,3) = 0
18956AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18957SELECT COUNT(*) INTO @clash_count
18958FROM t1 INNER JOIN t0_template USING(f_int1)
18959WHERE MOD(f_int1,3) = 0
18960AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18961SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18962INSERT INTO t1
18963SET f_int1 = @cur_value , f_int2 = @cur_value,
18964f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18965f_charbig = '#SINGLE#';
18966
18967# check single-1 success: 1
18968SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18969INSERT INTO t1
18970SET f_int1 = @cur_value , f_int2 = @cur_value,
18971f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18972f_charbig = '#SINGLE#';
18973
18974# check single-2 success: 1
18975SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18976SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18977UPDATE t1 SET f_int1 = @cur_value2
18978WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18979
18980# check single-3 success: 1
18981SET @cur_value1= -1;
18982SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18983UPDATE t1 SET f_int1 = @cur_value1
18984WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18985
18986# check single-4 success: 1
18987SELECT MAX(f_int1) INTO @cur_value FROM t1;
18988DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18989
18990# check single-5 success: 1
18991DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18992
18993# check single-6 success: 1
18994INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18995ERROR HY000: Table has no partition for value 2147483647
18996DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18997INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18998f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18999f_charbig = '#NULL#';
19000INSERT INTO t1
19001SET f_int1 = NULL , f_int2 = -@max_row,
19002f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19003f_charbig = '#NULL#';
19004ERROR 23000: Column 'f_int1' cannot be null
19005# check null success: 1
19006DELETE FROM t1
19007WHERE f_int1 = 0 AND f_int2 = 0
19008AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19009AND f_charbig = '#NULL#';
19010INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19011SELECT f_int1, f_int1, '', '', 'was inserted'
19012 FROM t0_template source_tab
19013WHERE MOD(f_int1,3) = 0
19014AND f_int1 BETWEEN @max_row_div2 AND @max_row
19015ON DUPLICATE KEY
19016UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
19017f_int2 = 2 * @max_row + source_tab.f_int1,
19018f_charbig = 'was updated';
19019
19020# check unique-1-a success: 1
19021
19022# check unique-1-b success: 1
19023DELETE FROM t1 WHERE f_charbig = 'was inserted';
19024UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19025f_int2 = CAST(f_char1 AS SIGNED INT),
19026f_charbig = CONCAT('===',f_char1,'===')
19027WHERE f_charbig = 'was updated';
19028REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19029SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19030 FROM t0_template source_tab
19031WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19032
19033# check replace success: 1
19034DELETE FROM t1
19035WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19036DELETE FROM t1
19037WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19038f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19039UPDATE t1 SET f_int2 = f_int1,
19040f_char1 = CAST(f_int1 AS CHAR),
19041f_char2 = CAST(f_int1 AS CHAR),
19042f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
19043WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
19044SET AUTOCOMMIT= 0;
19045INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19046SELECT f_int1, f_int1, '', '', 'was inserted'
19047FROM t0_template source_tab
19048WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19049
19050# check transactions-1 success: 1
19051COMMIT WORK;
19052
19053# check transactions-2 success: 1
19054ROLLBACK WORK;
19055
19056# check transactions-3 success: 1
19057DELETE FROM t1 WHERE f_charbig = 'was inserted';
19058COMMIT WORK;
19059ROLLBACK WORK;
19060
19061# check transactions-4 success: 1
19062INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19063SELECT f_int1, f_int1, '', '', 'was inserted'
19064FROM t0_template source_tab
19065WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19066
19067# check transactions-5 success: 1
19068ROLLBACK WORK;
19069
19070# check transactions-6 success: 1
19071# INFO: Storage engine used for t1 seems to be transactional.
19072COMMIT;
19073
19074# check transactions-7 success: 1
19075DELETE FROM t1 WHERE f_charbig = 'was inserted';
19076COMMIT WORK;
19077SET @@session.sql_mode = 'traditional';
19078SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19079INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19080SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19081'', '', 'was inserted' FROM t0_template
19082WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19083ERROR 22012: Division by 0
19084COMMIT;
19085
19086# check transactions-8 success: 1
19087# INFO: Storage engine used for t1 seems to be able to revert
19088# changes made by the failing statement.
19089SET @@session.sql_mode = '';
19090SET AUTOCOMMIT= 1;
19091DELETE FROM t1 WHERE f_charbig = 'was inserted';
19092COMMIT WORK;
19093UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19094
19095# check special-1 success: 1
19096UPDATE t1 SET f_charbig = '';
19097
19098# check special-2 success: 1
19099UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19100INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19101SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19102WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19103INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19104SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19105'just inserted' FROM t0_template
19106WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19107CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19108BEGIN
19109UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches