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

Proposed by Stewart Smith
Status: Superseded
Proposed branch: lp:~stewart/percona-server/5.5.28
Merge into: lp:percona-server/5.5
Diff against target: 7309 lines (+3365/-736) (has conflicts)
131 files modified
Makefile (+5/-0)
Percona-Server/CMakeLists.txt (+3/-0)
Percona-Server/Docs/INSTALL-BINARY (+3/-3)
Percona-Server/VERSION (+1/-1)
Percona-Server/client/mysql.cc (+14/-6)
Percona-Server/client/mysql_upgrade.c (+2/-2)
Percona-Server/client/mysqladmin.cc (+4/-3)
Percona-Server/client/mysqlbinlog.cc (+13/-1)
Percona-Server/client/mysqlcheck.c (+2/-2)
Percona-Server/client/mysqldump.c (+5/-3)
Percona-Server/client/mysqlimport.c (+2/-4)
Percona-Server/client/mysqlshow.c (+2/-2)
Percona-Server/client/mysqlslap.c (+2/-2)
Percona-Server/client/mysqltest.cc (+1/-1)
Percona-Server/client/sql_string.h (+7/-3)
Percona-Server/cmake/ssl.cmake (+1/-1)
Percona-Server/extra/perror.c (+3/-2)
Percona-Server/extra/yassl/README (+10/-1)
Percona-Server/extra/yassl/include/lock.hpp (+5/-4)
Percona-Server/extra/yassl/include/openssl/ssl.h (+1/-1)
Percona-Server/extra/yassl/include/yassl_error.hpp (+1/-1)
Percona-Server/extra/yassl/src/cert_wrapper.cpp (+1/-2)
Percona-Server/extra/yassl/src/lock.cpp (+2/-2)
Percona-Server/extra/yassl/src/ssl.cpp (+2/-3)
Percona-Server/extra/yassl/src/yassl_error.cpp (+1/-6)
Percona-Server/extra/yassl/taocrypt/include/aes.hpp (+0/-1)
Percona-Server/extra/yassl/taocrypt/include/pwdbased.hpp (+3/-1)
Percona-Server/extra/yassl/taocrypt/src/asn.cpp (+3/-1)
Percona-Server/extra/yassl/taocrypt/src/coding.cpp (+21/-0)
Percona-Server/extra/yassl/taocrypt/src/crypto.cpp (+0/-37)
Percona-Server/extra/yassl/taocrypt/taocrypt.dsw (+16/-1)
Percona-Server/extra/yassl/taocrypt/test.dsp (+0/-102)
Percona-Server/extra/yassl/taocrypt/test/memory.cpp (+1/-1)
Percona-Server/extra/yassl/taocrypt/test/test.dsp (+102/-0)
Percona-Server/extra/yassl/yassl.dsw (+1/-4)
Percona-Server/include/mysql/thread_pool_priv.h (+6/-0)
Percona-Server/include/welcome_copyright_notice.h (+13/-8)
Percona-Server/libmysqld/lib_sql.cc (+1/-0)
Percona-Server/mysql-test/r/information_schema.result (+2/-0)
Percona-Server/mysql-test/r/log_state.result (+6/-6)
Percona-Server/mysql-test/r/mysqlshow.result (+10/-4)
Percona-Server/mysql-test/r/openssl_1.result (+3/-3)
Percona-Server/mysql-test/r/subselect.result (+0/-2)
Percona-Server/mysql-test/r/variables.result (+2/-2)
Percona-Server/mysql-test/suite/federated/federated.test (+2/-2)
Percona-Server/mysql-test/suite/federated/federated_archive.test (+2/-2)
Percona-Server/mysql-test/suite/federated/federated_bug_13118.test (+2/-2)
Percona-Server/mysql-test/suite/federated/federated_bug_25714.test (+2/-2)
Percona-Server/mysql-test/suite/federated/federated_bug_35333.test (+2/-2)
Percona-Server/mysql-test/suite/federated/federated_debug.test (+2/-2)
Percona-Server/mysql-test/suite/federated/federated_innodb.test (+2/-2)
Percona-Server/mysql-test/suite/federated/federated_server.test (+2/-2)
Percona-Server/mysql-test/suite/federated/federated_transactions.test (+2/-2)
Percona-Server/mysql-test/suite/federated/include/federated.inc (+1/-1)
Percona-Server/mysql-test/suite/funcs_1/t/is_engines_federated.test (+1/-1)
Percona-Server/mysql-test/suite/innodb/r/innodb_information_schema_buffer.result (+130/-0)
Percona-Server/mysql-test/suite/innodb/r/percona_skip_innodb_i_s.result (+3/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_information_schema_buffer.test (+76/-0)
Percona-Server/mysql-test/suite/perfschema/t/disabled.def (+0/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result (+3/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_bug41902.test (+2/-2)
Percona-Server/mysql-test/suite/rpl/t/rpl_cant_read_event_incident.test (+6/-1)
Percona-Server/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result (+28/-28)
Percona-Server/mysql-test/suite/sys_vars/r/log_basic.result (+3/-3)
Percona-Server/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result (+9/-9)
Percona-Server/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result (+17/-17)
Percona-Server/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result (+17/-17)
Percona-Server/mysql-test/suite/sys_vars/r/sql_big_selects_func.result (+1/-1)
Percona-Server/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result (+5/-5)
Percona-Server/mysql-test/suite/sys_vars/r/sql_max_join_size_func.result (+7/-7)
Percona-Server/mysql-test/t/openssl_1.test (+6/-0)
Percona-Server/mysql-test/t/partition_federated.test (+1/-1)
Percona-Server/mysys/mf_iocache.c (+6/-1)
Percona-Server/mysys/my_getopt.c (+5/-0)
Percona-Server/scripts/mysql_secure_installation.pl.in (+7/-3)
Percona-Server/scripts/mysql_secure_installation.sh (+13/-5)
Percona-Server/scripts/mysqlhotcopy.sh (+71/-21)
Percona-Server/sql/filesort.cc (+2/-4)
Percona-Server/sql/gen_lex_hash.cc (+2/-2)
Percona-Server/sql/ha_partition.cc (+90/-43)
Percona-Server/sql/ha_partition.h (+2/-10)
Percona-Server/sql/handler.cc (+27/-2)
Percona-Server/sql/item.cc (+6/-1)
Percona-Server/sql/item.h (+1/-0)
Percona-Server/sql/item_strfunc.cc (+35/-18)
Percona-Server/sql/item_subselect.cc (+1/-1)
Percona-Server/sql/log.cc (+4/-4)
Percona-Server/sql/log_event.h (+1/-1)
Percona-Server/sql/mdl.cc (+112/-8)
Percona-Server/sql/mdl.h (+6/-0)
Percona-Server/sql/mysqld.cc (+16/-1)
Percona-Server/sql/opt_range.cc (+24/-16)
Percona-Server/sql/set_var.cc (+17/-20)
Percona-Server/sql/set_var.h (+2/-2)
Percona-Server/sql/share/charsets/Index.xml (+1/-1)
Percona-Server/sql/share/errmsg-utf8.txt (+2/-2)
Percona-Server/sql/spatial.cc (+6/-5)
Percona-Server/sql/spatial.h (+8/-0)
Percona-Server/sql/sql_base.cc (+15/-8)
Percona-Server/sql/sql_class.cc (+23/-0)
Percona-Server/sql/sql_list.h (+4/-0)
Percona-Server/sql/sql_plugin.cc (+3/-2)
Percona-Server/sql/sql_prepare.cc (+8/-0)
Percona-Server/sql/sql_select.cc (+35/-18)
Percona-Server/sql/sql_string.h (+7/-3)
Percona-Server/sql/sys_vars.cc (+6/-6)
Percona-Server/sql/sys_vars.h (+40/-40)
Percona-Server/storage/archive/ha_archive.cc (+3/-3)
Percona-Server/storage/federated/ha_federated.cc (+1/-1)
Percona-Server/storage/innobase/btr/btr0btr.c (+15/-6)
Percona-Server/storage/innobase/btr/btr0cur.c (+22/-17)
Percona-Server/storage/innobase/btr/btr0pcur.c (+31/-36)
Percona-Server/storage/innobase/buf/buf0buf.c (+1/-10)
Percona-Server/storage/innobase/buf/buf0lru.c (+1/-1)
Percona-Server/storage/innobase/buf/buf0rea.c (+2/-2)
Percona-Server/storage/innobase/handler/ha_innodb.cc (+4/-1)
Percona-Server/storage/innobase/handler/i_s.cc (+1852/-2)
Percona-Server/storage/innobase/handler/i_s.h (+3/-0)
Percona-Server/storage/innobase/ibuf/ibuf0ibuf.c (+12/-5)
Percona-Server/storage/innobase/include/buf0buf.h (+31/-2)
Percona-Server/storage/innobase/include/buf0buf.ic (+19/-0)
Percona-Server/storage/innobase/include/fil0fil.h (+2/-0)
Percona-Server/storage/innobase/include/log0log.h (+3/-0)
Percona-Server/storage/innobase/page/page0page.c (+11/-10)
Percona-Server/storage/innobase/row/row0ins.c (+8/-1)
Percona-Server/storage/innobase/row/row0merge.c (+14/-0)
Percona-Server/storage/myisam/ha_myisam.cc (+2/-1)
Percona-Server/support-files/mysql.spec.sh (+28/-0)
Percona-Server/tests/mysql_client_fw.c (+11/-5)
Percona-Server/tests/mysql_client_test.c (+5/-2)
Percona-Server/vio/viosslfactories.c (+59/-41)
Text conflict in Makefile
To merge this branch: bzr merge lp:~stewart/percona-server/5.5.28
Reviewer Review Type Date Requested Status
Laurynas Biveinis (community) Needs Fixing
Review via email: mp+129333@code.launchpad.net

This proposal has been superseded by a proposal from 2012-10-19.

To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

   Locking in i_s_innodb_fill_buffer_pool() is suspicious. We cannot
   just take the buffer pool mutex. In this case we probably need to
   lock the individual pages as we access them but please please
   please check this.

   Locking in i_s_innodb_fill_buffer_lru() is obviously wrong, please
   take the LRU list mutex.

   Please include (in a separate commit) a fix for another merge
   regression (bug
   https://bugs.launchpad.net/percona-server/5.5/+bug/1042640).

review: Needs Fixing
Revision history for this message
Stewart Smith (stewart) wrote :
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

For updated tree:

Rev 309:

- buf_page_get_mutex return value NULL must be handled. I think it's easiest to use buf_page_get_mutex_enter() instead.
- No need to comment out removed upstream code, that style is from patch times when it was avoided to add or remove source lines without absolute necessity.
- Comment at 2971 should be removed.

Rev 310:

- Line 3512 fixes upstream bug, can you report it there, here and track that this is fixed?
- Comment at 3510 should be removed
- Same comments as for revision 309.

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

I am sorry, the above review is all for revision 309.

For rev 310:

- Same comments as for 309 re. commenting out code
- Please replace the commented out ut_ad() in buf_LRU_free_one_page with assert that LRU list mutex is held. The current code also introduces an unused variable buf_pool in debug builds.

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

Finally, rev 309 should be merged with 5.5.28 merge revision.

review: Needs Fixing
Revision history for this message
Stewart Smith (stewart) wrote :

> - Please replace the commented out ut_ad() in buf_LRU_free_one_page with
> assert that LRU list mutex is held. The current code also introduces an unused
> variable buf_pool in debug builds.

It's actually not unused in debug, there's a ut_ad() in the else block that uses it.

(and will be used by asserting LRU mutex is held)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Makefile'
2--- Makefile 2012-10-05 04:46:35 +0000
3+++ Makefile 2012-10-17 04:01:25 +0000
4@@ -1,7 +1,12 @@
5 FETCH_CMD=wget
6 MASTER_SITE=http://s3.amazonaws.com/percona.com/downloads/community
7+<<<<<<< TREE
8 MYSQL_VERSION=5.5.27
9 PERCONA_SERVER_VERSION=rel29.0
10+=======
11+MYSQL_VERSION=5.5.28
12+PERCONA_SERVER_VERSION=rel29.1
13+>>>>>>> MERGE-SOURCE
14 PERCONA_SERVER ?=Percona-Server-$(MYSQL_VERSION)-$(PERCONA_SERVER_VERSION)
15 PERCONA_SERVER_SHORT_1 ?=Percona-Server-$(MYSQL_VERSION)
16 PERCONA_SERVER_SHORT_2 ?=Percona-Server
17
18=== modified file 'Percona-Server/CMakeLists.txt'
19--- Percona-Server/CMakeLists.txt 2012-09-26 13:20:49 +0000
20+++ Percona-Server/CMakeLists.txt 2012-10-17 04:01:25 +0000
21@@ -334,6 +334,9 @@
22 IF(UNIX)
23 ADD_SUBDIRECTORY(man)
24 ENDIF()
25+ IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt)
26+ ADD_SUBDIRECTORY(internal)
27+ ENDIF()
28 ENDIF()
29
30 INCLUDE(cmake/abi_check.cmake)
31
32=== modified file 'Percona-Server/Docs/INSTALL-BINARY'
33--- Percona-Server/Docs/INSTALL-BINARY 2012-08-20 00:29:22 +0000
34+++ Percona-Server/Docs/INSTALL-BINARY 2012-10-17 04:01:25 +0000
35@@ -1,8 +1,8 @@
36
37-You can find information about how to install binary distributions at
38+You can find information about installing MySQL at
39
40- http://dev.mysql.com/doc/refman/5.1/en/quick-standard-installation.html
41+ http://dev.mysql.com/doc/refman/5.5/en/installing.html
42
43 The MySQL Reference Manual is also available in various formats on
44 http://dev.mysql.com/doc; if you're interested in the DocBook XML
45-sources go to http://svn.mysql.com.
46+sources go to http://dev.mysql.com/doc/index-other.html.
47
48=== modified file 'Percona-Server/VERSION'
49--- Percona-Server/VERSION 2012-08-07 06:10:00 +0000
50+++ Percona-Server/VERSION 2012-10-17 04:01:25 +0000
51@@ -1,4 +1,4 @@
52 MYSQL_VERSION_MAJOR=5
53 MYSQL_VERSION_MINOR=5
54-MYSQL_VERSION_PATCH=27
55+MYSQL_VERSION_PATCH=28
56 MYSQL_VERSION_EXTRA=
57
58=== modified file 'Percona-Server/client/mysql.cc'
59--- Percona-Server/client/mysql.cc 2012-08-07 06:10:00 +0000
60+++ Percona-Server/client/mysql.cc 2012-10-17 04:01:25 +0000
61@@ -1,5 +1,5 @@
62 /*
63- Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
64+ Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
65
66 This program is free software; you can redistribute it and/or modify
67 it under the terms of the GNU General Public License as published by
68@@ -1187,7 +1187,7 @@
69 mysql_thread_id(&mysql), server_version_string(&mysql));
70 put_info((char*) glob_buffer.ptr(),INFO_INFO);
71
72- put_info(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"), INFO_INFO);
73+ put_info(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"), INFO_INFO);
74
75 #ifdef HAVE_READLINE
76 initialize_readline((char*) my_progname);
77@@ -1617,7 +1617,7 @@
78
79 if (version)
80 return;
81- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
82+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
83 printf("Usage: %s [OPTIONS] [database]\n", my_progname);
84 my_print_help(my_long_options);
85 print_defaults("my", load_default_groups);
86@@ -2827,7 +2827,7 @@
87 char *line __attribute__((unused)), char *help_arg)
88 {
89 MYSQL_ROW cur;
90- const char *server_cmd= buffer->ptr();
91+ const char *server_cmd;
92 char cmd_buf[100 + 1];
93 MYSQL_RES *result;
94 int error;
95@@ -2842,9 +2842,12 @@
96 *++end_arg= '\0';
97 }
98 (void) strxnmov(cmd_buf, sizeof(cmd_buf), "help '", help_arg, "'", NullS);
99- server_cmd= cmd_buf;
100 }
101-
102+ else
103+ (void) strxnmov(cmd_buf, sizeof(cmd_buf), "help ", help_arg, NullS);
104+
105+ server_cmd= cmd_buf;
106+
107 if (!status.batch)
108 {
109 old_buffer= *buffer;
110@@ -2912,6 +2915,11 @@
111 else
112 {
113 put_info("\nNothing found", INFO_INFO);
114+ if (strncasecmp(server_cmd, "help 'contents'", 15) == 0)
115+ {
116+ put_info("\nPlease check if 'help tables' are loaded.\n", INFO_INFO);
117+ goto err;
118+ }
119 put_info("Please try to run 'help contents' for a list of all accessible topics\n", INFO_INFO);
120 }
121 }
122
123=== modified file 'Percona-Server/client/mysql_upgrade.c'
124--- Percona-Server/client/mysql_upgrade.c 2011-12-21 15:26:11 +0000
125+++ Percona-Server/client/mysql_upgrade.c 2012-10-17 04:01:25 +0000
126@@ -1,5 +1,5 @@
127 /*
128- Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
129+ Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
130
131 This program is free software; you can redistribute it and/or modify
132 it under the terms of the GNU General Public License as published by
133@@ -245,7 +245,7 @@
134 case '?':
135 printf("%s Ver %s Distrib %s, for %s (%s)\n",
136 my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
137- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2010"));
138+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
139 puts("MySQL utility for upgrading databases to new MySQL versions.\n");
140 my_print_help(my_long_options);
141 exit(0);
142
143=== modified file 'Percona-Server/client/mysqladmin.cc'
144--- Percona-Server/client/mysqladmin.cc 2012-07-05 06:55:20 +0000
145+++ Percona-Server/client/mysqladmin.cc 2012-10-17 04:01:25 +0000
146@@ -1,4 +1,5 @@
147-/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
148+/*
149+ Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
150
151 This program is free software; you can redistribute it and/or modify
152 it under the terms of the GNU General Public License as published by
153@@ -701,7 +702,7 @@
154 case ADMIN_VER:
155 new_line=1;
156 print_version();
157- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
158+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
159 printf("Server version\t\t%s\n", mysql_get_server_info(mysql));
160 printf("Protocol version\t%d\n", mysql_get_proto_info(mysql));
161 printf("Connection\t\t%s\n",mysql_get_host_info(mysql));
162@@ -1099,7 +1100,7 @@
163 static void usage(void)
164 {
165 print_version();
166- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
167+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
168 puts("Administration program for the mysqld daemon.");
169 printf("Usage: %s [OPTIONS] command command....\n", my_progname);
170 my_print_help(my_long_options);
171
172=== modified file 'Percona-Server/client/mysqlbinlog.cc'
173--- Percona-Server/client/mysqlbinlog.cc 2012-09-17 13:08:32 +0000
174+++ Percona-Server/client/mysqlbinlog.cc 2012-10-17 04:01:25 +0000
175@@ -36,6 +36,7 @@
176 #include "sql_priv.h"
177 #include "log_event.h"
178 #include "sql_common.h"
179+#include "my_dir.h"
180 #include <welcome_copyright_notice.h> // ORACLE_WELCOME_COPYRIGHT_NOTICE
181
182 #define BIN_LOG_HEADER_SIZE 4
183@@ -1285,7 +1286,7 @@
184 static void usage()
185 {
186 print_version();
187- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
188+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
189 printf("\
190 Dumps a MySQL binary log in a format usable for viewing or for piping to\n\
191 the mysql command line client.\n\n");
192@@ -1775,6 +1776,7 @@
193 uchar header[BIN_LOG_HEADER_SIZE];
194 uchar buf[PROBE_HEADER_LEN];
195 my_off_t tmp_pos, pos;
196+ MY_STAT my_file_stat;
197
198 delete glob_description_event;
199 if (!(glob_description_event= new Format_description_log_event(3)))
200@@ -1785,6 +1787,16 @@
201
202 pos= my_b_tell(file);
203 DBUG_ASSERT(pos == 0);
204+
205+ /* fstat the file to check if the file is a regular file. */
206+ if (my_fstat(file->file, &my_file_stat, MYF(0)) == -1)
207+ {
208+ error("Unable to stat the file.");
209+ return ERROR_STOP;
210+ }
211+ if ((my_file_stat.st_mode & S_IFMT) == S_IFREG)
212+ my_b_seek(file, (my_off_t)0);
213+
214 if (my_b_read(file, header, sizeof(header)))
215 {
216 error("Failed reading header; probably an empty file.");
217
218=== modified file 'Percona-Server/client/mysqlcheck.c'
219--- Percona-Server/client/mysqlcheck.c 2011-07-22 07:50:44 +0000
220+++ Percona-Server/client/mysqlcheck.c 2012-10-17 04:01:25 +0000
221@@ -1,5 +1,5 @@
222 /*
223- Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
224+ Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
225
226 This program is free software; you can redistribute it and/or modify
227 it under the terms of the GNU General Public License as published by
228@@ -224,7 +224,7 @@
229 static void usage(void)
230 {
231 print_version();
232- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
233+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
234 puts("This program can be used to CHECK (-c, -m, -C), REPAIR (-r), ANALYZE (-a),");
235 puts("or OPTIMIZE (-o) tables. Some of the options (like -e or -q) can be");
236 puts("used at the same time. Not all options are supported by all storage engines.");
237
238=== modified file 'Percona-Server/client/mysqldump.c'
239--- Percona-Server/client/mysqldump.c 2012-09-17 13:08:32 +0000
240+++ Percona-Server/client/mysqldump.c 2012-10-17 04:01:25 +0000
241@@ -56,8 +56,6 @@
242
243 #include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
244
245-#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
246-
247 /* Exit codes */
248
249 #define EX_USAGE 1
250@@ -629,7 +627,7 @@
251 static void usage(void)
252 {
253 print_version();
254- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
255+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
256 puts("Dumping structure and contents of MySQL databases and tables.");
257 short_usage_sub();
258 print_defaults("my",load_default_groups);
259@@ -1888,7 +1886,9 @@
260 const char *str_create)
261 {
262 uint i;
263+#ifndef DBUG_OFF
264 my_bool body_found= 0;
265+#endif
266 char *create_stmt_ptr= NULL;
267 ulong create_stmt_len= 0;
268 MYSQL_FIELD *field;
269@@ -1906,7 +1906,9 @@
270 {
271 create_stmt_ptr= (*row)[i];
272 create_stmt_len= lengths[i];
273+#ifndef DBUG_OFF
274 body_found= 1;
275+#endif
276 }
277 else
278 {
279
280=== modified file 'Percona-Server/client/mysqlimport.c'
281--- Percona-Server/client/mysqlimport.c 2011-07-22 07:50:44 +0000
282+++ Percona-Server/client/mysqlimport.c 2012-10-17 04:01:25 +0000
283@@ -1,5 +1,5 @@
284 /*
285- Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
286+ Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
287
288 This program is free software; you can redistribute it and/or modify
289 it under the terms of the GNU General Public License as published by
290@@ -38,8 +38,6 @@
291 pthread_cond_t count_threshhold;
292 #endif
293
294-#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
295-
296 static void db_error_with_table(MYSQL *mysql, char *table);
297 static void db_error(MYSQL *mysql);
298 static char *field_escape(char *to,const char *from,uint length);
299@@ -199,7 +197,7 @@
300 static void usage(void)
301 {
302 print_version();
303- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
304+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
305 printf("\
306 Loads tables from text files in various formats. The base name of the\n\
307 text file must be the name of the table that should be used.\n\
308
309=== modified file 'Percona-Server/client/mysqlshow.c'
310--- Percona-Server/client/mysqlshow.c 2011-07-22 07:50:44 +0000
311+++ Percona-Server/client/mysqlshow.c 2012-10-17 04:01:25 +0000
312@@ -1,5 +1,5 @@
313 /*
314- Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
315+ Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
316
317 This program is free software; you can redistribute it and/or modify
318 it under the terms of the GNU General Public License as published by
319@@ -264,7 +264,7 @@
320 static void usage(void)
321 {
322 print_version();
323- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011)"));
324+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
325 puts("Shows the structure of a MySQL database (databases, tables, and columns).\n");
326 printf("Usage: %s [OPTIONS] [database [table [column]]]\n",my_progname);
327 puts("\n\
328
329=== modified file 'Percona-Server/client/mysqlslap.c'
330--- Percona-Server/client/mysqlslap.c 2012-07-05 06:55:20 +0000
331+++ Percona-Server/client/mysqlslap.c 2012-10-17 04:01:25 +0000
332@@ -1,5 +1,5 @@
333 /*
334- Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
335+ Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
336
337 This program is free software; you can redistribute it and/or modify
338 it under the terms of the GNU General Public License as published by
339@@ -710,7 +710,7 @@
340 static void usage(void)
341 {
342 print_version();
343- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2005, 2010"));
344+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2005"));
345 puts("Run a query multiple times against the server.\n");
346 printf("Usage: %s [OPTIONS]\n",my_progname);
347 print_defaults("my",load_default_groups);
348
349=== modified file 'Percona-Server/client/mysqltest.cc'
350--- Percona-Server/client/mysqltest.cc 2012-09-17 13:08:32 +0000
351+++ Percona-Server/client/mysqltest.cc 2012-10-17 04:01:25 +0000
352@@ -6605,7 +6605,7 @@
353 void usage()
354 {
355 print_version();
356- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
357+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
358 printf("Runs a test against the mysql server and compares output with a results file.\n\n");
359 printf("Usage: %s [OPTIONS] [database] < test_file\n", my_progname);
360 my_print_help(my_long_options);
361
362=== modified file 'Percona-Server/client/sql_string.h'
363--- Percona-Server/client/sql_string.h 2012-05-10 07:49:14 +0000
364+++ Percona-Server/client/sql_string.h 2012-10-17 04:01:25 +0000
365@@ -1,7 +1,7 @@
366 #ifndef CLIENT_SQL_STRING_INCLUDED
367 #define CLIENT_SQL_STRING_INCLUDED
368
369-/* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
370+/* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
371
372 This program is free software; you can redistribute it and/or modify
373 it under the terms of the GNU General Public License as published by
374@@ -192,8 +192,12 @@
375 }
376 bool real_alloc(uint32 arg_length); // Empties old string
377 bool realloc(uint32 arg_length);
378- inline void shrink(uint32 arg_length) // Shrink buffer
379+
380+ // Shrink the buffer, but only if it is allocated on the heap.
381+ inline void shrink(uint32 arg_length)
382 {
383+ if (!is_alloced())
384+ return;
385 if (arg_length < Alloced_length)
386 {
387 char *new_ptr;
388@@ -209,7 +213,7 @@
389 }
390 }
391 }
392- bool is_alloced() { return alloced; }
393+ bool is_alloced() const { return alloced; }
394 inline String& operator = (const String &s)
395 {
396 if (&s != this)
397
398=== modified file 'Percona-Server/cmake/ssl.cmake'
399--- Percona-Server/cmake/ssl.cmake 2011-06-30 15:46:53 +0000
400+++ Percona-Server/cmake/ssl.cmake 2012-10-17 04:01:25 +0000
401@@ -25,7 +25,7 @@
402 SET(SSL_LIBRARIES yassl taocrypt)
403 SET(SSL_INCLUDE_DIRS ${INC_DIRS})
404 SET(SSL_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL)
405- SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PURE_C -DYASSL_PREFIX -DHAVE_OPENSSL -DYASSL_THREAD_SAFE")
406+ SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PURE_C -DYASSL_PREFIX -DHAVE_OPENSSL -DMULTI_THREADED")
407 CHANGE_SSL_SETTINGS("bundled")
408 #Remove -fno-implicit-templates
409 #(yassl sources cannot be compiled with it)
410
411=== modified file 'Percona-Server/extra/perror.c'
412--- Percona-Server/extra/perror.c 2011-07-03 23:48:19 +0000
413+++ Percona-Server/extra/perror.c 2012-10-17 04:01:25 +0000
414@@ -1,5 +1,5 @@
415 /*
416- Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
417+ Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
418
419 This program is free software; you can redistribute it and/or modify
420 it under the terms of the GNU General Public License as published by
421@@ -28,6 +28,7 @@
422 #include "../storage/ndb/src/kernel/error/ndbd_exit_codes.c"
423 #include "../storage/ndb/include/mgmapi/mgmapi_error.h"
424 #endif
425+#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
426
427 static my_bool verbose, print_all_codes;
428
429@@ -114,7 +115,7 @@
430 static void usage(void)
431 {
432 print_version();
433- puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
434+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
435 printf("Print a description for a system error code or a MySQL error code.\n");
436 printf("If you want to get the error for a negative error code, you should use\n-- before the first error code to tell perror that there was no more options.\n\n");
437 printf("Usage: %s [OPTIONS] [ERRORCODE [ERRORCODE...]]\n",my_progname);
438
439=== modified file 'Percona-Server/extra/yassl/README'
440--- Percona-Server/extra/yassl/README 2012-03-02 12:12:07 +0000
441+++ Percona-Server/extra/yassl/README 2012-10-17 04:01:25 +0000
442@@ -12,7 +12,16 @@
443
444 *** end Note ***
445
446-yaSSL Release notes, version 2.1.2 (9/2/2011)
447+yaSSL Release notes, version 2.2.2 (7/5/2012)
448+
449+ This release of yaSSL contains bug fixes and more security checks around
450+ malicious certificates.
451+
452+See normal build instructions below under 1.0.6.
453+See libcurl build instructions below under 1.3.0 and note in 1.5.8.
454+
455+
456+*****************yaSSL Release notes, version 2.1.2 (9/2/2011)
457
458 This release of yaSSL contains bug fixes, better non-blocking support with
459 SSL_write, and OpenSSL RSA public key format support.
460
461=== modified file 'Percona-Server/extra/yassl/include/lock.hpp'
462--- Percona-Server/extra/yassl/include/lock.hpp 2010-12-28 23:47:05 +0000
463+++ Percona-Server/extra/yassl/include/lock.hpp 2012-10-17 04:01:25 +0000
464@@ -27,7 +27,7 @@
465 Visual Studio Source Annotations header (sourceannotations.h) fails
466 to compile if outside of the global namespace.
467 */
468-#ifdef YASSL_THREAD_SAFE
469+#ifdef MULTI_THREADED
470 #ifdef _WIN32
471 #include <windows.h>
472 #endif
473@@ -36,8 +36,9 @@
474 namespace yaSSL {
475
476
477-#ifdef YASSL_THREAD_SAFE
478+#ifdef MULTI_THREADED
479 #ifdef _WIN32
480+ #include <windows.h>
481
482 class Mutex {
483 CRITICAL_SECTION cs_;
484@@ -77,7 +78,7 @@
485 };
486
487 #endif // _WIN32
488-#else // YASSL_THREAD_SAFE (WE'RE SINGLE)
489+#else // MULTI_THREADED (WE'RE SINGLE)
490
491 class Mutex {
492 public:
493@@ -87,7 +88,7 @@
494 };
495 };
496
497-#endif // YASSL_THREAD_SAFE
498+#endif // MULTI_THREADED
499
500
501
502
503=== modified file 'Percona-Server/extra/yassl/include/openssl/ssl.h'
504--- Percona-Server/extra/yassl/include/openssl/ssl.h 2012-03-02 12:23:52 +0000
505+++ Percona-Server/extra/yassl/include/openssl/ssl.h 2012-10-17 04:01:25 +0000
506@@ -35,7 +35,7 @@
507 #include "rsa.h"
508
509
510-#define YASSL_VERSION "2.2.0"
511+#define YASSL_VERSION "2.2.2"
512
513
514 #if defined(__cplusplus)
515
516=== modified file 'Percona-Server/extra/yassl/include/yassl_error.hpp'
517--- Percona-Server/extra/yassl/include/yassl_error.hpp 2012-02-10 09:41:54 +0000
518+++ Percona-Server/extra/yassl/include/yassl_error.hpp 2012-10-17 04:01:25 +0000
519@@ -65,7 +65,7 @@
520 enum Library { yaSSL_Lib = 0, CryptoLib, SocketLib };
521 enum { MAX_ERROR_SZ = 80 };
522
523-void SetErrorString(unsigned long, char*);
524+void SetErrorString(YasslError, char*);
525
526 /* remove for now, if go back to exceptions use this wrapper
527 // Base class for all yaSSL exceptions
528
529=== modified file 'Percona-Server/extra/yassl/src/cert_wrapper.cpp'
530--- Percona-Server/extra/yassl/src/cert_wrapper.cpp 2012-02-13 12:44:54 +0000
531+++ Percona-Server/extra/yassl/src/cert_wrapper.cpp 2012-10-17 04:01:25 +0000
532@@ -250,8 +250,7 @@
533 TaoCrypt::Source source((*last)->get_buffer(), (*last)->get_length());
534 TaoCrypt::CertDecoder cert(source, true, &signers_, verifyNone_);
535
536- int err = cert.GetError().What();
537- if ( err )
538+ if (int err = cert.GetError().What())
539 return err;
540
541 const TaoCrypt::PublicKey& key = cert.GetPublicKey();
542
543=== modified file 'Percona-Server/extra/yassl/src/lock.cpp'
544--- Percona-Server/extra/yassl/src/lock.cpp 2010-12-28 18:57:23 +0000
545+++ Percona-Server/extra/yassl/src/lock.cpp 2012-10-17 04:01:25 +0000
546@@ -26,7 +26,7 @@
547 namespace yaSSL {
548
549
550-#ifdef YASSL_THREAD_SAFE
551+#ifdef MULTI_THREADED
552 #ifdef _WIN32
553
554 Mutex::Mutex()
555@@ -79,7 +79,7 @@
556
557
558 #endif // _WIN32
559-#endif // YASSL_THREAD_SAFE
560+#endif // MULTI_THREADED
561
562
563
564
565=== modified file 'Percona-Server/extra/yassl/src/ssl.cpp'
566--- Percona-Server/extra/yassl/src/ssl.cpp 2012-02-13 12:44:54 +0000
567+++ Percona-Server/extra/yassl/src/ssl.cpp 2012-10-17 04:01:25 +0000
568@@ -27,7 +27,6 @@
569
570
571
572-
573 /* see man pages for function descriptions */
574
575 #include "runtime.hpp"
576@@ -747,7 +746,7 @@
577 int SSL_CTX_load_verify_locations(SSL_CTX* ctx, const char* file,
578 const char* path)
579 {
580- int ret = SSL_SUCCESS;
581+ int ret = SSL_FAILURE;
582 const int HALF_PATH = 128;
583
584 if (file) ret = read_file(ctx, file, SSL_FILETYPE_PEM, CA);
585@@ -1014,7 +1013,7 @@
586 static char* msg = (char*)"Please supply a buffer for error string";
587
588 if (buffer) {
589- SetErrorString(errNumber, buffer);
590+ SetErrorString(YasslError(errNumber), buffer);
591 return buffer;
592 }
593
594
595=== modified file 'Percona-Server/extra/yassl/src/yassl_error.cpp'
596--- Percona-Server/extra/yassl/src/yassl_error.cpp 2012-02-13 12:44:54 +0000
597+++ Percona-Server/extra/yassl/src/yassl_error.cpp 2012-10-17 04:01:25 +0000
598@@ -31,11 +31,6 @@
599 #pragma warning(disable: 4996)
600 #endif
601
602-#ifdef _MSC_VER
603- // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
604- #pragma warning(disable: 4996)
605-#endif
606-
607 namespace yaSSL {
608
609
610@@ -60,7 +55,7 @@
611 */
612
613
614-void SetErrorString(unsigned long error, char* buffer)
615+void SetErrorString(YasslError error, char* buffer)
616 {
617 using namespace TaoCrypt;
618 const int max = MAX_ERROR_SZ; // shorthand
619
620=== modified file 'Percona-Server/extra/yassl/taocrypt/include/aes.hpp'
621--- Percona-Server/extra/yassl/taocrypt/include/aes.hpp 2007-01-29 15:54:40 +0000
622+++ Percona-Server/extra/yassl/taocrypt/include/aes.hpp 2012-10-17 04:01:25 +0000
623@@ -92,7 +92,6 @@
624 typedef BlockCipher<DECRYPTION, AES, CBC> AES_CBC_Decryption;
625
626
627-
628 } // naemspace
629
630 #endif // TAO_CRYPT_AES_HPP
631
632=== modified file 'Percona-Server/extra/yassl/taocrypt/include/pwdbased.hpp'
633--- Percona-Server/extra/yassl/taocrypt/include/pwdbased.hpp 2012-02-10 14:33:27 +0000
634+++ Percona-Server/extra/yassl/taocrypt/include/pwdbased.hpp 2012-10-17 04:01:25 +0000
635@@ -48,9 +48,11 @@
636 word32 pLen, const byte* salt, word32 sLen,
637 word32 iterations) const
638 {
639- if (dLen > MaxDerivedKeyLength())
640+ if (dLen > MaxDerivedKeyLength())
641 return 0;
642
643+ if (iterations < 0)
644+ return 0;
645
646 ByteBlock buffer(T::DIGEST_SIZE);
647 HMAC<T> hmac;
648
649=== modified file 'Percona-Server/extra/yassl/taocrypt/src/asn.cpp'
650--- Percona-Server/extra/yassl/taocrypt/src/asn.cpp 2012-09-17 13:08:32 +0000
651+++ Percona-Server/extra/yassl/taocrypt/src/asn.cpp 2012-10-17 04:01:25 +0000
652@@ -154,6 +154,8 @@
653 else
654 length = b;
655
656+ if (source.IsLeft(length) == false) return 0;
657+
658 return length;
659 }
660
661@@ -832,7 +834,7 @@
662 if (email) {
663 if (!(ptr = AddTag(ptr, buf_end, "/emailAddress=", 14, length))) {
664 source_.SetError(CONTENT_E);
665- return;
666+ return;
667 }
668 }
669
670
671=== modified file 'Percona-Server/extra/yassl/taocrypt/src/coding.cpp'
672--- Percona-Server/extra/yassl/taocrypt/src/coding.cpp 2012-02-13 12:44:54 +0000
673+++ Percona-Server/extra/yassl/taocrypt/src/coding.cpp 2012-10-17 04:01:25 +0000
674@@ -103,6 +103,16 @@
675 byte b = coded_.next() - 0x30; // 0 starts at 0x30
676 byte b2 = coded_.next() - 0x30;
677
678+ // sanity checks
679+ if (b >= sizeof(hexDecode)/sizeof(hexDecode[0])) {
680+ coded_.SetError(PEM_E);
681+ return;
682+ }
683+ if (b2 >= sizeof(hexDecode)/sizeof(hexDecode[0])) {
684+ coded_.SetError(PEM_E);
685+ return;
686+ }
687+
688 b = hexDecode[b];
689 b2 = hexDecode[b2];
690
691@@ -178,6 +188,7 @@
692 {
693 word32 bytes = coded_.size();
694 word32 plainSz = bytes - ((bytes + (pemLineSz - 1)) / pemLineSz);
695+ const byte maxIdx = (byte)sizeof(base64Decode) + 0x2B - 1;
696 plainSz = ((plainSz * 3) / 4) + 3;
697 decoded_.New(plainSz);
698
699@@ -200,6 +211,16 @@
700 if (e4 == pad)
701 pad4 = true;
702
703+ if (e1 < 0x2B || e2 < 0x2B || e3 < 0x2B || e4 < 0x2B) {
704+ coded_.SetError(PEM_E);
705+ return;
706+ }
707+
708+ if (e1 > maxIdx || e2 > maxIdx || e3 > maxIdx || e4 > maxIdx) {
709+ coded_.SetError(PEM_E);
710+ return;
711+ }
712+
713 e1 = base64Decode[e1 - 0x2B];
714 e2 = base64Decode[e2 - 0x2B];
715 e3 = (e3 == pad) ? 0 : base64Decode[e3 - 0x2B];
716
717=== removed file 'Percona-Server/extra/yassl/taocrypt/src/crypto.cpp'
718--- Percona-Server/extra/yassl/taocrypt/src/crypto.cpp 2007-08-28 08:35:55 +0000
719+++ Percona-Server/extra/yassl/taocrypt/src/crypto.cpp 1970-01-01 00:00:00 +0000
720@@ -1,37 +0,0 @@
721-/*
722- Copyright (C) 2000-2007 MySQL AB
723-
724- This program is free software; you can redistribute it and/or modify
725- it under the terms of the GNU General Public License as published by
726- the Free Software Foundation; version 2 of the License.
727-
728- This program is distributed in the hope that it will be useful,
729- but WITHOUT ANY WARRANTY; without even the implied warranty of
730- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
731- GNU General Public License for more details.
732-
733- You should have received a copy of the GNU General Public License
734- along with this program; see the file COPYING. If not, write to the
735- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
736- MA 02110-1301 USA.
737-*/
738-
739-/* put features that other apps expect from OpenSSL type crypto */
740-
741-
742-
743-extern "C" {
744-
745- // for libcurl configure test, these are the signatures they use
746- // locking handled internally by library
747- char CRYPTO_lock() { return 0;}
748- char CRYPTO_add_lock() { return 0;}
749-
750-
751- // for openvpn, test are the signatures they use
752- char EVP_CIPHER_CTX_init() { return 0; }
753- char CRYPTO_mem_ctrl() { return 0; }
754-} // extern "C"
755-
756-
757-
758
759=== modified file 'Percona-Server/extra/yassl/taocrypt/taocrypt.dsw'
760--- Percona-Server/extra/yassl/taocrypt/taocrypt.dsw 2005-04-28 13:23:27 +0000
761+++ Percona-Server/extra/yassl/taocrypt/taocrypt.dsw 2012-10-17 04:01:25 +0000
762@@ -3,6 +3,21 @@
763
764 ###############################################################################
765
766+Project: "benchmark"=.\benchmark\benchmark.dsp - Package Owner=<4>
767+
768+Package=<5>
769+{{{
770+}}}
771+
772+Package=<4>
773+{{{
774+ Begin Project Dependency
775+ Project_Dep_Name taocrypt
776+ End Project Dependency
777+}}}
778+
779+###############################################################################
780+
781 Project: "taocrypt"=.\taocrypt.dsp - Package Owner=<4>
782
783 Package=<5>
784@@ -15,7 +30,7 @@
785
786 ###############################################################################
787
788-Project: "test"=.\test.dsp - Package Owner=<4>
789+Project: "test"=.\test\test.dsp - Package Owner=<4>
790
791 Package=<5>
792 {{{
793
794=== removed file 'Percona-Server/extra/yassl/taocrypt/test.dsp'
795--- Percona-Server/extra/yassl/taocrypt/test.dsp 2006-11-29 13:35:59 +0000
796+++ Percona-Server/extra/yassl/taocrypt/test.dsp 1970-01-01 00:00:00 +0000
797@@ -1,102 +0,0 @@
798-# Microsoft Developer Studio Project File - Name="test" - Package Owner=<4>
799-# Microsoft Developer Studio Generated Build File, Format Version 6.00
800-# ** DO NOT EDIT **
801-
802-# TARGTYPE "Win32 (x86) Console Application" 0x0103
803-
804-CFG=test - Win32 Debug
805-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
806-!MESSAGE use the Export Makefile command and run
807-!MESSAGE
808-!MESSAGE NMAKE /f "test.mak".
809-!MESSAGE
810-!MESSAGE You can specify a configuration when running NMAKE
811-!MESSAGE by defining the macro CFG on the command line. For example:
812-!MESSAGE
813-!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Debug"
814-!MESSAGE
815-!MESSAGE Possible choices for configuration are:
816-!MESSAGE
817-!MESSAGE "test - Win32 Release" (based on "Win32 (x86) Console Application")
818-!MESSAGE "test - Win32 Debug" (based on "Win32 (x86) Console Application")
819-!MESSAGE
820-
821-# Begin Project
822-# PROP AllowPerConfigDependencies 0
823-# PROP Scc_ProjName ""
824-# PROP Scc_LocalPath ""
825-CPP=cl.exe
826-RSC=rc.exe
827-
828-!IF "$(CFG)" == "test - Win32 Release"
829-
830-# PROP BASE Use_MFC 0
831-# PROP BASE Use_Debug_Libraries 0
832-# PROP BASE Output_Dir "test___Win32_Release"
833-# PROP BASE Intermediate_Dir "test___Win32_Release"
834-# PROP BASE Target_Dir ""
835-# PROP Use_MFC 0
836-# PROP Use_Debug_Libraries 0
837-# PROP Output_Dir "test\Release"
838-# PROP Intermediate_Dir "test\Release"
839-# PROP Ignore_Export_Lib 0
840-# PROP Target_Dir ""
841-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
842-# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
843-# ADD BASE RSC /l 0x409 /d "NDEBUG"
844-# ADD RSC /l 0x409 /d "NDEBUG"
845-BSC32=bscmake.exe
846-# ADD BASE BSC32 /nologo
847-# ADD BSC32 /nologo
848-LINK32=link.exe
849-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
850-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
851-
852-!ELSEIF "$(CFG)" == "test - Win32 Debug"
853-
854-# PROP BASE Use_MFC 0
855-# PROP BASE Use_Debug_Libraries 1
856-# PROP BASE Output_Dir "test___Win32_Debug"
857-# PROP BASE Intermediate_Dir "test___Win32_Debug"
858-# PROP BASE Target_Dir ""
859-# PROP Use_MFC 0
860-# PROP Use_Debug_Libraries 1
861-# PROP Output_Dir "test\Debug"
862-# PROP Intermediate_Dir "test\Debug"
863-# PROP Ignore_Export_Lib 0
864-# PROP Target_Dir ""
865-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
866-# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
867-# ADD BASE RSC /l 0x409 /d "_DEBUG"
868-# ADD RSC /l 0x409 /d "_DEBUG"
869-BSC32=bscmake.exe
870-# ADD BASE BSC32 /nologo
871-# ADD BSC32 /nologo
872-LINK32=link.exe
873-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
874-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
875-
876-!ENDIF
877-
878-# Begin Target
879-
880-# Name "test - Win32 Release"
881-# Name "test - Win32 Debug"
882-# Begin Group "Source Files"
883-
884-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
885-# Begin Source File
886-
887-SOURCE=.\test\test.cpp
888-# End Source File
889-# End Group
890-# Begin Group "Header Files"
891-
892-# PROP Default_Filter "h;hpp;hxx;hm;inl"
893-# End Group
894-# Begin Group "Resource Files"
895-
896-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
897-# End Group
898-# End Target
899-# End Project
900
901=== modified file 'Percona-Server/extra/yassl/taocrypt/test/memory.cpp'
902--- Percona-Server/extra/yassl/taocrypt/test/memory.cpp 2012-02-10 14:33:27 +0000
903+++ Percona-Server/extra/yassl/taocrypt/test/memory.cpp 2012-10-17 04:01:25 +0000
904@@ -31,7 +31,7 @@
905 To use MemoryTracker merely add this file to your project
906 No need to instantiate anything
907
908-If your app is multi threaded define YASSL_THREAD_SAFE
909+If your app is multi threaded define MULTI_THREADED
910
911 *********************************************************************/
912
913
914=== added file 'Percona-Server/extra/yassl/taocrypt/test/test.dsp'
915--- Percona-Server/extra/yassl/taocrypt/test/test.dsp 1970-01-01 00:00:00 +0000
916+++ Percona-Server/extra/yassl/taocrypt/test/test.dsp 2012-10-17 04:01:25 +0000
917@@ -0,0 +1,102 @@
918+# Microsoft Developer Studio Project File - Name="test" - Package Owner=<4>
919+# Microsoft Developer Studio Generated Build File, Format Version 6.00
920+# ** DO NOT EDIT **
921+
922+# TARGTYPE "Win32 (x86) Console Application" 0x0103
923+
924+CFG=test - Win32 Debug
925+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
926+!MESSAGE use the Export Makefile command and run
927+!MESSAGE
928+!MESSAGE NMAKE /f "test.mak".
929+!MESSAGE
930+!MESSAGE You can specify a configuration when running NMAKE
931+!MESSAGE by defining the macro CFG on the command line. For example:
932+!MESSAGE
933+!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Debug"
934+!MESSAGE
935+!MESSAGE Possible choices for configuration are:
936+!MESSAGE
937+!MESSAGE "test - Win32 Release" (based on "Win32 (x86) Console Application")
938+!MESSAGE "test - Win32 Debug" (based on "Win32 (x86) Console Application")
939+!MESSAGE
940+
941+# Begin Project
942+# PROP AllowPerConfigDependencies 0
943+# PROP Scc_ProjName ""
944+# PROP Scc_LocalPath ""
945+CPP=cl.exe
946+RSC=rc.exe
947+
948+!IF "$(CFG)" == "test - Win32 Release"
949+
950+# PROP BASE Use_MFC 0
951+# PROP BASE Use_Debug_Libraries 0
952+# PROP BASE Output_Dir "test___Win32_Release"
953+# PROP BASE Intermediate_Dir "test___Win32_Release"
954+# PROP BASE Target_Dir ""
955+# PROP Use_MFC 0
956+# PROP Use_Debug_Libraries 0
957+# PROP Output_Dir "Release"
958+# PROP Intermediate_Dir "Release"
959+# PROP Ignore_Export_Lib 0
960+# PROP Target_Dir ""
961+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
962+# ADD CPP /nologo /MD /W3 /O2 /I "../include" /I "../mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
963+# ADD BASE RSC /l 0x409 /d "NDEBUG"
964+# ADD RSC /l 0x409 /d "NDEBUG"
965+BSC32=bscmake.exe
966+# ADD BASE BSC32 /nologo
967+# ADD BSC32 /nologo
968+LINK32=link.exe
969+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
970+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
971+
972+!ELSEIF "$(CFG)" == "test - Win32 Debug"
973+
974+# PROP BASE Use_MFC 0
975+# PROP BASE Use_Debug_Libraries 1
976+# PROP BASE Output_Dir "test___Win32_Debug"
977+# PROP BASE Intermediate_Dir "test___Win32_Debug"
978+# PROP BASE Target_Dir ""
979+# PROP Use_MFC 0
980+# PROP Use_Debug_Libraries 1
981+# PROP Output_Dir "Debug"
982+# PROP Intermediate_Dir "Debug"
983+# PROP Ignore_Export_Lib 0
984+# PROP Target_Dir ""
985+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
986+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../include" /I "../mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
987+# ADD BASE RSC /l 0x409 /d "_DEBUG"
988+# ADD RSC /l 0x409 /d "_DEBUG"
989+BSC32=bscmake.exe
990+# ADD BASE BSC32 /nologo
991+# ADD BSC32 /nologo
992+LINK32=link.exe
993+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
994+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
995+
996+!ENDIF
997+
998+# Begin Target
999+
1000+# Name "test - Win32 Release"
1001+# Name "test - Win32 Debug"
1002+# Begin Group "Source Files"
1003+
1004+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
1005+# Begin Source File
1006+
1007+SOURCE=.\test.cpp
1008+# End Source File
1009+# End Group
1010+# Begin Group "Header Files"
1011+
1012+# PROP Default_Filter "h;hpp;hxx;hm;inl"
1013+# End Group
1014+# Begin Group "Resource Files"
1015+
1016+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
1017+# End Group
1018+# End Target
1019+# End Project
1020
1021=== modified file 'Percona-Server/extra/yassl/yassl.dsw'
1022--- Percona-Server/extra/yassl/yassl.dsw 2006-04-07 09:35:12 +0000
1023+++ Percona-Server/extra/yassl/yassl.dsw 2012-10-17 04:01:25 +0000
1024@@ -90,7 +90,7 @@
1025
1026 ###############################################################################
1027
1028-Project: "test"=.\taocrypt\test.dsp - Package Owner=<4>
1029+Project: "test"=.\taocrypt\test\test.dsp - Package Owner=<4>
1030
1031 Package=<5>
1032 {{{
1033@@ -114,9 +114,6 @@
1034 Package=<4>
1035 {{{
1036 Begin Project Dependency
1037- Project_Dep_Name taocrypt
1038- End Project Dependency
1039- Begin Project Dependency
1040 Project_Dep_Name yassl
1041 End Project Dependency
1042 }}}
1043
1044=== modified file 'Percona-Server/include/mysql/thread_pool_priv.h'
1045--- Percona-Server/include/mysql/thread_pool_priv.h 2011-06-30 15:46:53 +0000
1046+++ Percona-Server/include/mysql/thread_pool_priv.h 2012-10-17 04:01:25 +0000
1047@@ -35,6 +35,7 @@
1048 #include <debug_sync.h>
1049 #include <sql_profile.h>
1050 #include <table.h>
1051+#include <sql_list.h>
1052
1053 /* Needed to get access to scheduler variables */
1054 void* thd_get_scheduler_data(THD *thd);
1055@@ -56,9 +57,14 @@
1056 bool thd_is_transaction_active(THD *thd);
1057 int thd_connection_has_data(THD *thd);
1058 void thd_set_net_read_write(THD *thd, uint val);
1059+uint thd_get_net_read_write(THD *thd);
1060 void thd_set_mysys_var(THD *thd, st_my_thread_var *mysys_var);
1061+ulong thd_get_net_wait_timeout(THD *thd);
1062 my_socket thd_get_fd(THD *thd);
1063
1064+THD *first_global_thread();
1065+THD *next_global_thread(THD *thd);
1066+
1067 /* Print to the MySQL error log */
1068 void sql_print_error(const char *format, ...);
1069
1070
1071=== modified file 'Percona-Server/include/welcome_copyright_notice.h'
1072--- Percona-Server/include/welcome_copyright_notice.h 2012-02-16 09:48:16 +0000
1073+++ Percona-Server/include/welcome_copyright_notice.h 2012-10-17 04:01:25 +0000
1074@@ -1,4 +1,4 @@
1075-/* Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
1076+/* Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
1077
1078 This program is free software; you can redistribute it and/or modify
1079 it under the terms of the GNU General Public License as published by
1080@@ -16,16 +16,21 @@
1081 #ifndef _welcome_copyright_notice_h_
1082 #define _welcome_copyright_notice_h_
1083
1084+#define COPYRIGHT_NOTICE_CURRENT_YEAR "2012"
1085+
1086 /*
1087 This define specifies copyright notice which is displayed by every MySQL
1088 program on start, or on help screen.
1089 */
1090-
1091-#define ORACLE_WELCOME_COPYRIGHT_NOTICE(years) \
1092- "Copyright (c) " years ", Oracle and/or its affiliates. All rights reserved.\n" \
1093- "\n" \
1094- "Oracle is a registered trademark of Oracle Corporation and/or its\n" \
1095- "affiliates. Other names may be trademarks of their respective\n" \
1096- "owners.\n"
1097+#define ORACLE_WELCOME_COPYRIGHT_NOTICE(first_year) \
1098+ (strcmp(first_year, COPYRIGHT_NOTICE_CURRENT_YEAR) ? \
1099+ "Copyright (c) " first_year ", " COPYRIGHT_NOTICE_CURRENT_YEAR ", " \
1100+ "Oracle and/or its affiliates. All rights reserved.\n\nOracle is a " \
1101+ "registered trademark of Oracle Corporation and/or its\naffiliates. " \
1102+ "Other names may be trademarks of their respective\nowners.\n" : \
1103+ "Copyright (c) " first_year ", Oracle and/or its affiliates. " \
1104+ "All rights reserved.\n\nOracle is a registered trademark of " \
1105+ "Oracle Corporation and/or its\naffiliates. Other names may be " \
1106+ "trademarks of their respective\nowners.\n")
1107
1108 #endif /* _welcome_copyright_notice_h_ */
1109
1110=== modified file 'Percona-Server/libmysqld/lib_sql.cc'
1111--- Percona-Server/libmysqld/lib_sql.cc 2012-09-17 13:08:32 +0000
1112+++ Percona-Server/libmysqld/lib_sql.cc 2012-10-17 04:01:25 +0000
1113@@ -790,6 +790,7 @@
1114 cur_data= 0;
1115 }
1116
1117+
1118 static char *dup_str_aux(MEM_ROOT *root, const char *from, uint length,
1119 CHARSET_INFO *fromcs, CHARSET_INFO *tocs)
1120 {
1121
1122=== modified file 'Percona-Server/mysql-test/r/information_schema.result'
1123--- Percona-Server/mysql-test/r/information_schema.result 2012-09-17 13:08:32 +0000
1124+++ Percona-Server/mysql-test/r/information_schema.result 2012-10-17 04:01:25 +0000
1125@@ -888,6 +888,8 @@
1126 FILES TABLE_NAME select
1127 GLOBAL_TEMPORARY_TABLES TABLE_NAME select
1128 INDEX_STATISTICS TABLE_NAME select
1129+INNODB_BUFFER_PAGE TABLE_NAME select
1130+INNODB_BUFFER_PAGE_LRU TABLE_NAME select
1131 INNODB_INDEX_STATS table_name select
1132 INNODB_TABLE_STATS table_name select
1133 KEY_COLUMN_USAGE TABLE_NAME select
1134
1135=== modified file 'Percona-Server/mysql-test/r/log_state.result'
1136--- Percona-Server/mysql-test/r/log_state.result 2010-06-22 20:32:29 +0000
1137+++ Percona-Server/mysql-test/r/log_state.result 2012-10-17 04:01:25 +0000
1138@@ -199,7 +199,7 @@
1139 1 1
1140 SET GLOBAL log = 0;
1141 Warnings:
1142-Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
1143+Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
1144 SHOW VARIABLES LIKE 'general_log';
1145 Variable_name Value
1146 general_log OFF
1147@@ -230,7 +230,7 @@
1148 0 0
1149 SET GLOBAL log_slow_queries = 0;
1150 Warnings:
1151-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
1152+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
1153 SHOW VARIABLES LIKE 'slow_query_log';
1154 Variable_name Value
1155 slow_query_log OFF
1156@@ -283,16 +283,16 @@
1157 deprecated:
1158 SET GLOBAL log = 0;
1159 Warnings:
1160-Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
1161+Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
1162 SET GLOBAL log_slow_queries = 0;
1163 Warnings:
1164-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
1165+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
1166 SET GLOBAL log = DEFAULT;
1167 Warnings:
1168-Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
1169+Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
1170 SET GLOBAL log_slow_queries = DEFAULT;
1171 Warnings:
1172-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
1173+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
1174 not deprecated:
1175 SELECT @@global.general_log_file INTO @my_glf;
1176 SELECT @@global.slow_query_log_file INTO @my_sqlf;
1177
1178=== modified file 'Percona-Server/mysql-test/r/mysqlshow.result'
1179--- Percona-Server/mysql-test/r/mysqlshow.result 2012-09-17 13:08:32 +0000
1180+++ Percona-Server/mysql-test/r/mysqlshow.result 2012-10-17 04:01:25 +0000
1181@@ -125,8 +125,8 @@
1182 | INNODB_LOCK_WAITS |
1183 | INNODB_INDEX_STATS |
1184 | INNODB_CMP |
1185-| INNODB_SYS_FOREIGN_COLS |
1186 | INNODB_CMP_RESET |
1187+| INNODB_CHANGED_PAGES |
1188 | INNODB_BUFFER_POOL_PAGES |
1189 | INNODB_TRX |
1190 | INNODB_BUFFER_POOL_PAGES_INDEX |
1191@@ -135,12 +135,15 @@
1192 | INNODB_SYS_TABLES |
1193 | INNODB_SYS_FIELDS |
1194 | INNODB_SYS_COLUMNS |
1195-| INNODB_CHANGED_PAGES |
1196+| INNODB_BUFFER_PAGE |
1197 | INNODB_SYS_STATS |
1198 | INNODB_SYS_FOREIGN |
1199 | INNODB_SYS_INDEXES |
1200 | XTRADB_ADMIN_COMMAND |
1201 | INNODB_TABLE_STATS |
1202+| INNODB_SYS_FOREIGN_COLS |
1203+| INNODB_BUFFER_PAGE_LRU |
1204+| INNODB_BUFFER_POOL_STATS |
1205 +---------------------------------------+
1206 Database: INFORMATION_SCHEMA
1207 +---------------------------------------+
1208@@ -192,8 +195,8 @@
1209 | INNODB_LOCK_WAITS |
1210 | INNODB_INDEX_STATS |
1211 | INNODB_CMP |
1212-| INNODB_SYS_FOREIGN_COLS |
1213 | INNODB_CMP_RESET |
1214+| INNODB_CHANGED_PAGES |
1215 | INNODB_BUFFER_POOL_PAGES |
1216 | INNODB_TRX |
1217 | INNODB_BUFFER_POOL_PAGES_INDEX |
1218@@ -202,12 +205,15 @@
1219 | INNODB_SYS_TABLES |
1220 | INNODB_SYS_FIELDS |
1221 | INNODB_SYS_COLUMNS |
1222-| INNODB_CHANGED_PAGES |
1223+| INNODB_BUFFER_PAGE |
1224 | INNODB_SYS_STATS |
1225 | INNODB_SYS_FOREIGN |
1226 | INNODB_SYS_INDEXES |
1227 | XTRADB_ADMIN_COMMAND |
1228 | INNODB_TABLE_STATS |
1229+| INNODB_SYS_FOREIGN_COLS |
1230+| INNODB_BUFFER_PAGE_LRU |
1231+| INNODB_BUFFER_POOL_STATS |
1232 +---------------------------------------+
1233 Wildcard: inf_rmation_schema
1234 +--------------------+
1235
1236=== modified file 'Percona-Server/mysql-test/r/openssl_1.result'
1237--- Percona-Server/mysql-test/r/openssl_1.result 2011-05-19 09:47:43 +0000
1238+++ Percona-Server/mysql-test/r/openssl_1.result 2012-10-17 04:01:25 +0000
1239@@ -44,9 +44,9 @@
1240 drop user ssl_user1@localhost, ssl_user2@localhost,
1241 ssl_user3@localhost, ssl_user4@localhost, ssl_user5@localhost;
1242 drop table t1;
1243-mysqltest: Could not open connection 'default': 2026 SSL connection error: ASN: bad other signature confirmation
1244-mysqltest: Could not open connection 'default': 2026 SSL connection error: ASN: bad other signature confirmation
1245-mysqltest: Could not open connection 'default': 2026 SSL connection error: ASN: bad other signature confirmation
1246+mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
1247+mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
1248+mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
1249 SSL error: Unable to get private key from ''
1250 mysqltest: Could not open connection 'default': 2026 SSL connection error: Unable to get private key
1251 SSL error: Unable to get certificate from ''
1252
1253=== modified file 'Percona-Server/mysql-test/r/subselect.result'
1254--- Percona-Server/mysql-test/r/subselect.result 2012-04-10 11:23:17 +0000
1255+++ Percona-Server/mysql-test/r/subselect.result 2012-10-17 04:01:25 +0000
1256@@ -4562,8 +4562,6 @@
1257 WHERE EXISTS (SELECT DISTINCT a FROM t2 WHERE t1.a < t2.a ORDER BY b);
1258 pk a
1259 1 10
1260-3 30
1261-2 20
1262 DROP TABLE t1,t2;
1263 CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), KEY b (b));
1264 INSERT INTO t1 VALUES (1,NULL), (9,NULL);
1265
1266=== modified file 'Percona-Server/mysql-test/r/variables.result'
1267--- Percona-Server/mysql-test/r/variables.result 2011-03-28 10:57:54 +0000
1268+++ Percona-Server/mysql-test/r/variables.result 2012-10-17 04:01:25 +0000
1269@@ -545,7 +545,7 @@
1270 set read_rnd_buffer_size=100;
1271 set global rpl_recovery_rank=100;
1272 Warnings:
1273-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
1274+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
1275 set global server_id=100;
1276 set global slow_launch_time=100;
1277 set sort_buffer_size=100;
1278@@ -1068,7 +1068,7 @@
1279 set global query_cache_type =@my_query_cache_type;
1280 set global rpl_recovery_rank =@my_rpl_recovery_rank;
1281 Warnings:
1282-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
1283+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
1284 set global server_id =@my_server_id;
1285 set global slow_launch_time =@my_slow_launch_time;
1286 set global default_storage_engine =@my_storage_engine;
1287
1288=== modified file 'Percona-Server/mysql-test/suite/federated/federated.test'
1289--- Percona-Server/mysql-test/suite/federated/federated.test 2011-11-21 11:28:35 +0000
1290+++ Percona-Server/mysql-test/suite/federated/federated.test 2012-10-17 04:01:25 +0000
1291@@ -4,7 +4,7 @@
1292 #
1293
1294
1295---source federated.inc
1296+--source suite/federated/include/federated.inc
1297
1298 connection default;
1299
1300@@ -1997,4 +1997,4 @@
1301 SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
1302
1303 connection default;
1304-source federated_cleanup.inc;
1305+source suite/federated/include/federated_cleanup.inc;
1306
1307=== modified file 'Percona-Server/mysql-test/suite/federated/federated_archive.test'
1308--- Percona-Server/mysql-test/suite/federated/federated_archive.test 2007-12-12 17:19:24 +0000
1309+++ Percona-Server/mysql-test/suite/federated/federated_archive.test 2012-10-17 04:01:25 +0000
1310@@ -1,5 +1,5 @@
1311 source include/have_archive.inc;
1312-source federated.inc;
1313+source suite/federated/include/federated.inc;
1314
1315
1316 connection slave;
1317@@ -54,5 +54,5 @@
1318 DROP TABLE federated.archive_table;
1319
1320
1321-source federated_cleanup.inc;
1322+source suite/federated/include/federated_cleanup.inc;
1323
1324
1325=== modified file 'Percona-Server/mysql-test/suite/federated/federated_bug_13118.test'
1326--- Percona-Server/mysql-test/suite/federated/federated_bug_13118.test 2007-12-12 17:19:24 +0000
1327+++ Percona-Server/mysql-test/suite/federated/federated_bug_13118.test 2012-10-17 04:01:25 +0000
1328@@ -1,4 +1,4 @@
1329-source federated.inc;
1330+source suite/federated/include/federated.inc;
1331
1332 connection slave;
1333 --disable_warnings
1334@@ -37,5 +37,5 @@
1335 DROP TABLE federated.bug_13118_table;
1336
1337
1338-source federated_cleanup.inc;
1339+source suite/federated/include/federated_cleanup.inc;
1340
1341
1342=== modified file 'Percona-Server/mysql-test/suite/federated/federated_bug_25714.test'
1343--- Percona-Server/mysql-test/suite/federated/federated_bug_25714.test 2010-11-17 10:16:13 +0000
1344+++ Percona-Server/mysql-test/suite/federated/federated_bug_25714.test 2012-10-17 04:01:25 +0000
1345@@ -4,7 +4,7 @@
1346 skip Need bug25714 test program;
1347 }
1348
1349-source federated.inc;
1350+source suite/federated/include/federated.inc;
1351
1352 connection master;
1353 # Disable concurrent inserts to avoid test failures when reading
1354@@ -59,4 +59,4 @@
1355
1356
1357
1358-source federated_cleanup.inc;
1359+source suite/federated/include/federated_cleanup.inc;
1360
1361=== modified file 'Percona-Server/mysql-test/suite/federated/federated_bug_35333.test'
1362--- Percona-Server/mysql-test/suite/federated/federated_bug_35333.test 2010-11-30 17:20:56 +0000
1363+++ Percona-Server/mysql-test/suite/federated/federated_bug_35333.test 2012-10-17 04:01:25 +0000
1364@@ -9,7 +9,7 @@
1365 --echo # to complete while still indicating a problem. This fix applies to any non-fatal system
1366 --echo # error that occurs during a query against I_S.TABLES.de
1367
1368---source federated.inc
1369+--source suite/federated/include/federated.inc
1370
1371 --disable_warnings
1372 CREATE DATABASE IF NOT EXISTS realdb;
1373@@ -71,4 +71,4 @@
1374 DROP DATABASE realdb;
1375 --enable_warnings
1376
1377---source federated_cleanup.inc
1378+--source suite/federated/include/federated_cleanup.inc
1379
1380=== modified file 'Percona-Server/mysql-test/suite/federated/federated_debug.test'
1381--- Percona-Server/mysql-test/suite/federated/federated_debug.test 2009-10-23 08:02:17 +0000
1382+++ Percona-Server/mysql-test/suite/federated/federated_debug.test 2012-10-17 04:01:25 +0000
1383@@ -1,5 +1,5 @@
1384 --source include/have_debug.inc
1385---source federated.inc
1386+--source suite/federated/include/federated.inc
1387
1388 --echo #
1389 --echo # Bug#47525: MySQL crashed (Federated)
1390@@ -36,4 +36,4 @@
1391
1392 connection default;
1393 --echo # Federated cleanup
1394-source federated_cleanup.inc;
1395+source suite/federated/include/federated_cleanup.inc;
1396
1397=== modified file 'Percona-Server/mysql-test/suite/federated/federated_innodb.test'
1398--- Percona-Server/mysql-test/suite/federated/federated_innodb.test 2008-12-13 19:42:12 +0000
1399+++ Percona-Server/mysql-test/suite/federated/federated_innodb.test 2012-10-17 04:01:25 +0000
1400@@ -4,7 +4,7 @@
1401 # See Bug #40645 Test main.federated_innodb does not always clean up after itself
1402
1403 source include/have_innodb.inc;
1404-source federated.inc;
1405+source suite/federated/include/federated.inc;
1406
1407 #
1408 # Bug#25513 Federated transaction failures
1409@@ -36,4 +36,4 @@
1410 drop table federated.t1;
1411
1412
1413-source federated_cleanup.inc;
1414+source suite/federated/include/federated_cleanup.inc;
1415
1416=== modified file 'Percona-Server/mysql-test/suite/federated/federated_server.test'
1417--- Percona-Server/mysql-test/suite/federated/federated_server.test 2012-05-10 07:49:14 +0000
1418+++ Percona-Server/mysql-test/suite/federated/federated_server.test 2012-10-17 04:01:25 +0000
1419@@ -1,6 +1,6 @@
1420 # WL #3031 This test tests the new servers table as well as
1421 # if federated can utilise the servers table
1422--- source federated.inc
1423+-- source suite/federated/include/federated.inc
1424
1425 connection slave;
1426 create database first_db;
1427@@ -333,4 +333,4 @@
1428 drop server if exists s;
1429
1430
1431-source federated_cleanup.inc;
1432+source suite/federated/include/federated_cleanup.inc;
1433
1434=== modified file 'Percona-Server/mysql-test/suite/federated/federated_transactions.test'
1435--- Percona-Server/mysql-test/suite/federated/federated_transactions.test 2007-12-12 17:19:24 +0000
1436+++ Percona-Server/mysql-test/suite/federated/federated_transactions.test 2012-10-17 04:01:25 +0000
1437@@ -1,5 +1,5 @@
1438 source include/have_innodb.inc;
1439-source federated.inc;
1440+source suite/federated/include/federated.inc;
1441
1442 connection slave;
1443 DROP TABLE IF EXISTS federated.t1;
1444@@ -35,4 +35,4 @@
1445 SELECT * FROM federated.t1;
1446 DELETE FROM federated.t1;
1447
1448-source federated_cleanup.inc;
1449+source suite/federated/include/federated_cleanup.inc;
1450
1451=== added directory 'Percona-Server/mysql-test/suite/federated/include'
1452=== renamed file 'Percona-Server/mysql-test/suite/federated/federated.inc' => 'Percona-Server/mysql-test/suite/federated/include/federated.inc'
1453--- Percona-Server/mysql-test/suite/federated/federated.inc 2009-02-02 11:36:03 +0000
1454+++ Percona-Server/mysql-test/suite/federated/include/federated.inc 2012-10-17 04:01:25 +0000
1455@@ -1,5 +1,5 @@
1456 --source include/not_embedded.inc
1457---source have_federated_db.inc
1458+--source suite/federated/include/have_federated_db.inc
1459
1460 connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
1461 connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
1462
1463=== renamed file 'Percona-Server/mysql-test/suite/federated/federated_cleanup.inc' => 'Percona-Server/mysql-test/suite/federated/include/federated_cleanup.inc'
1464=== renamed file 'Percona-Server/mysql-test/suite/federated/have_federated_db.inc' => 'Percona-Server/mysql-test/suite/federated/include/have_federated_db.inc'
1465=== modified file 'Percona-Server/mysql-test/suite/funcs_1/t/is_engines_federated.test'
1466--- Percona-Server/mysql-test/suite/funcs_1/t/is_engines_federated.test 2009-01-31 19:22:59 +0000
1467+++ Percona-Server/mysql-test/suite/funcs_1/t/is_engines_federated.test 2012-10-17 04:01:25 +0000
1468@@ -9,7 +9,7 @@
1469 #
1470
1471 let $engine_type= FEDERATED;
1472---source suite/federated/have_federated_db.inc
1473+--source suite/federated/include/have_federated_db.inc
1474 --vertical_results
1475 eval SELECT * FROM information_schema.engines
1476 WHERE ENGINE = '$engine_type';
1477
1478=== added file 'Percona-Server/mysql-test/suite/innodb/r/innodb_information_schema_buffer.result'
1479--- Percona-Server/mysql-test/suite/innodb/r/innodb_information_schema_buffer.result 1970-01-01 00:00:00 +0000
1480+++ Percona-Server/mysql-test/suite/innodb/r/innodb_information_schema_buffer.result 2012-10-17 04:01:25 +0000
1481@@ -0,0 +1,130 @@
1482+SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
1483+SELECT count(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
1484+SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE;
1485+SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE;
1486+CREATE TABLE infoschema_buffer_test (col1 INT) ENGINE = INNODB;
1487+INSERT INTO infoschema_buffer_test VALUES(9);
1488+SELECT TABLE_NAME, INDEX_NAME, NUMBER_RECORDS, DATA_SIZE, PAGE_STATE, PAGE_TYPE
1489+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1490+WHERE TABLE_NAME like "%infoschema_buffer_test"
1491+ and PAGE_STATE="file_page" and PAGE_TYPE="index";
1492+TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE PAGE_STATE PAGE_TYPE
1493+test/infoschema_buffer_test GEN_CLUST_INDEX 1 29 FILE_PAGE INDEX
1494+INSERT INTO infoschema_buffer_test VALUES(19);
1495+SELECT TABLE_NAME, INDEX_NAME, NUMBER_RECORDS, DATA_SIZE, PAGE_STATE, PAGE_TYPE
1496+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1497+WHERE TABLE_NAME like "%infoschema_buffer_test"
1498+and PAGE_STATE="file_page" and PAGE_TYPE="index";
1499+TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE PAGE_STATE PAGE_TYPE
1500+test/infoschema_buffer_test GEN_CLUST_INDEX 2 58 FILE_PAGE INDEX
1501+CREATE INDEX idx ON infoschema_buffer_test(col1);
1502+SELECT TABLE_NAME, INDEX_NAME, NUMBER_RECORDS, DATA_SIZE, PAGE_STATE, PAGE_TYPE
1503+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1504+WHERE TABLE_NAME like "%infoschema_buffer_test"
1505+and PAGE_STATE="file_page" and INDEX_NAME = "idx" and PAGE_TYPE="index";
1506+TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE PAGE_STATE PAGE_TYPE
1507+test/infoschema_buffer_test idx 2 32 FILE_PAGE INDEX
1508+DROP TABLE infoschema_buffer_test;
1509+SELECT TABLE_NAME, INDEX_NAME, NUMBER_RECORDS, DATA_SIZE, PAGE_STATE, PAGE_TYPE
1510+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1511+WHERE TABLE_NAME like "%infoschema_buffer_test";
1512+TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE PAGE_STATE PAGE_TYPE
1513+CREATE TABLE infoschema_parent (id INT NOT NULL, PRIMARY KEY (id))
1514+ENGINE=INNODB;
1515+CREATE TABLE infoschema_child (id INT, parent_id INT, INDEX par_ind (parent_id),
1516+FOREIGN KEY (parent_id)
1517+REFERENCES infoschema_parent(id)
1518+ON DELETE CASCADE)
1519+ENGINE=INNODB;
1520+SELECT count(*)
1521+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1522+WHERE TABLE_NAME like "%infoschema_child" and PAGE_STATE="file_page"
1523+and PAGE_TYPE="index";
1524+count(*)
1525+2
1526+DROP TABLE infoschema_child;
1527+DROP TABLE infoschema_parent;
1528+show create table information_schema.innodb_buffer_page;
1529+Table Create Table
1530+INNODB_BUFFER_PAGE CREATE TEMPORARY TABLE `INNODB_BUFFER_PAGE` (
1531+ `POOL_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
1532+ `BLOCK_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
1533+ `SPACE` bigint(21) unsigned NOT NULL DEFAULT '0',
1534+ `PAGE_NUMBER` bigint(21) unsigned NOT NULL DEFAULT '0',
1535+ `PAGE_TYPE` varchar(64) DEFAULT NULL,
1536+ `FLUSH_TYPE` bigint(21) unsigned NOT NULL DEFAULT '0',
1537+ `FIX_COUNT` bigint(21) unsigned NOT NULL DEFAULT '0',
1538+ `IS_HASHED` varchar(3) DEFAULT NULL,
1539+ `NEWEST_MODIFICATION` bigint(21) unsigned NOT NULL DEFAULT '0',
1540+ `OLDEST_MODIFICATION` bigint(21) unsigned NOT NULL DEFAULT '0',
1541+ `ACCESS_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
1542+ `TABLE_NAME` varchar(1024) DEFAULT NULL,
1543+ `INDEX_NAME` varchar(1024) DEFAULT NULL,
1544+ `NUMBER_RECORDS` bigint(21) unsigned NOT NULL DEFAULT '0',
1545+ `DATA_SIZE` bigint(21) unsigned NOT NULL DEFAULT '0',
1546+ `COMPRESSED_SIZE` bigint(21) unsigned NOT NULL DEFAULT '0',
1547+ `PAGE_STATE` varchar(64) DEFAULT NULL,
1548+ `IO_FIX` varchar(64) DEFAULT NULL,
1549+ `IS_OLD` varchar(3) DEFAULT NULL,
1550+ `FREE_PAGE_CLOCK` bigint(21) unsigned NOT NULL DEFAULT '0'
1551+) ENGINE=MEMORY DEFAULT CHARSET=utf8
1552+show create table information_schema.innodb_buffer_page_lru;
1553+Table Create Table
1554+INNODB_BUFFER_PAGE_LRU CREATE TEMPORARY TABLE `INNODB_BUFFER_PAGE_LRU` (
1555+ `POOL_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
1556+ `LRU_POSITION` bigint(21) unsigned NOT NULL DEFAULT '0',
1557+ `SPACE` bigint(21) unsigned NOT NULL DEFAULT '0',
1558+ `PAGE_NUMBER` bigint(21) unsigned NOT NULL DEFAULT '0',
1559+ `PAGE_TYPE` varchar(64) DEFAULT NULL,
1560+ `FLUSH_TYPE` bigint(21) unsigned NOT NULL DEFAULT '0',
1561+ `FIX_COUNT` bigint(21) unsigned NOT NULL DEFAULT '0',
1562+ `IS_HASHED` varchar(3) DEFAULT NULL,
1563+ `NEWEST_MODIFICATION` bigint(21) unsigned NOT NULL DEFAULT '0',
1564+ `OLDEST_MODIFICATION` bigint(21) unsigned NOT NULL DEFAULT '0',
1565+ `ACCESS_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
1566+ `TABLE_NAME` varchar(1024) DEFAULT NULL,
1567+ `INDEX_NAME` varchar(1024) DEFAULT NULL,
1568+ `NUMBER_RECORDS` bigint(21) unsigned NOT NULL DEFAULT '0',
1569+ `DATA_SIZE` bigint(21) unsigned NOT NULL DEFAULT '0',
1570+ `COMPRESSED_SIZE` bigint(21) unsigned NOT NULL DEFAULT '0',
1571+ `COMPRESSED` varchar(3) DEFAULT NULL,
1572+ `IO_FIX` varchar(64) DEFAULT NULL,
1573+ `IS_OLD` varchar(3) DEFAULT NULL,
1574+ `FREE_PAGE_CLOCK` bigint(21) unsigned NOT NULL DEFAULT '0'
1575+) ENGINE=MEMORY DEFAULT CHARSET=utf8
1576+show create table information_schema.innodb_buffer_pool_stats;
1577+Table Create Table
1578+INNODB_BUFFER_POOL_STATS CREATE TEMPORARY TABLE `INNODB_BUFFER_POOL_STATS` (
1579+ `POOL_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
1580+ `POOL_SIZE` bigint(21) unsigned NOT NULL DEFAULT '0',
1581+ `FREE_BUFFERS` bigint(21) unsigned NOT NULL DEFAULT '0',
1582+ `DATABASE_PAGES` bigint(21) unsigned NOT NULL DEFAULT '0',
1583+ `OLD_DATABASE_PAGES` bigint(21) unsigned NOT NULL DEFAULT '0',
1584+ `MODIFIED_DATABASE_PAGES` bigint(21) unsigned NOT NULL DEFAULT '0',
1585+ `PENDING_DECOMPRESS` bigint(21) unsigned NOT NULL DEFAULT '0',
1586+ `PENDING_READS` bigint(21) unsigned NOT NULL DEFAULT '0',
1587+ `PENDING_FLUSH_LRU` bigint(21) unsigned NOT NULL DEFAULT '0',
1588+ `PENDING_FLUSH_LIST` bigint(21) unsigned NOT NULL DEFAULT '0',
1589+ `PAGES_MADE_YOUNG` bigint(21) unsigned NOT NULL DEFAULT '0',
1590+ `PAGES_NOT_MADE_YOUNG` bigint(21) unsigned NOT NULL DEFAULT '0',
1591+ `PAGES_MADE_YOUNG_RATE` double NOT NULL DEFAULT '0',
1592+ `PAGES_MADE_NOT_YOUNG_RATE` double NOT NULL DEFAULT '0',
1593+ `NUMBER_PAGES_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
1594+ `NUMBER_PAGES_CREATED` bigint(21) unsigned NOT NULL DEFAULT '0',
1595+ `NUMBER_PAGES_WRITTEN` bigint(21) unsigned NOT NULL DEFAULT '0',
1596+ `PAGES_READ_RATE` double NOT NULL DEFAULT '0',
1597+ `PAGES_CREATE_RATE` double NOT NULL DEFAULT '0',
1598+ `PAGES_WRITTEN_RATE` double NOT NULL DEFAULT '0',
1599+ `NUMBER_PAGES_GET` bigint(21) unsigned NOT NULL DEFAULT '0',
1600+ `HIT_RATE` bigint(21) unsigned NOT NULL DEFAULT '0',
1601+ `YOUNG_MAKE_PER_THOUSAND_GETS` bigint(21) unsigned NOT NULL DEFAULT '0',
1602+ `NOT_YOUNG_MAKE_PER_THOUSAND_GETS` bigint(21) unsigned NOT NULL DEFAULT '0',
1603+ `NUMBER_PAGES_READ_AHEAD` bigint(21) unsigned NOT NULL DEFAULT '0',
1604+ `NUMBER_READ_AHEAD_EVICTED` bigint(21) unsigned NOT NULL DEFAULT '0',
1605+ `READ_AHEAD_RATE` double NOT NULL DEFAULT '0',
1606+ `READ_AHEAD_EVICTED_RATE` double NOT NULL DEFAULT '0',
1607+ `LRU_IO_TOTAL` bigint(21) unsigned NOT NULL DEFAULT '0',
1608+ `LRU_IO_CURRENT` bigint(21) unsigned NOT NULL DEFAULT '0',
1609+ `UNCOMPRESS_TOTAL` bigint(21) unsigned NOT NULL DEFAULT '0',
1610+ `UNCOMPRESS_CURRENT` bigint(21) unsigned NOT NULL DEFAULT '0'
1611+) ENGINE=MEMORY DEFAULT CHARSET=utf8
1612
1613=== modified file 'Percona-Server/mysql-test/suite/innodb/r/percona_skip_innodb_i_s.result'
1614--- Percona-Server/mysql-test/suite/innodb/r/percona_skip_innodb_i_s.result 2012-09-17 13:08:32 +0000
1615+++ Percona-Server/mysql-test/suite/innodb/r/percona_skip_innodb_i_s.result 2012-10-17 04:01:25 +0000
1616@@ -1,8 +1,11 @@
1617 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='INFORMATION_SCHEMA' AND TABLE_NAME LIKE 'INNODB%' ORDER BY TABLE_NAME;
1618 TABLE_NAME
1619+INNODB_BUFFER_PAGE
1620+INNODB_BUFFER_PAGE_LRU
1621 INNODB_BUFFER_POOL_PAGES
1622 INNODB_BUFFER_POOL_PAGES_BLOB
1623 INNODB_BUFFER_POOL_PAGES_INDEX
1624+INNODB_BUFFER_POOL_STATS
1625 INNODB_CHANGED_PAGES
1626 INNODB_CMP
1627 INNODB_CMPMEM
1628
1629=== added file 'Percona-Server/mysql-test/suite/innodb/t/innodb_information_schema_buffer.test'
1630--- Percona-Server/mysql-test/suite/innodb/t/innodb_information_schema_buffer.test 1970-01-01 00:00:00 +0000
1631+++ Percona-Server/mysql-test/suite/innodb/t/innodb_information_schema_buffer.test 2012-10-17 04:01:25 +0000
1632@@ -0,0 +1,76 @@
1633+# Exercise the code path for INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS
1634+# and INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1635+
1636+-- source include/have_innodb.inc
1637+
1638+-- disable_result_log
1639+SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
1640+
1641+# How many buffer pools we have
1642+SELECT count(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
1643+
1644+SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE;
1645+
1646+# This gives the over all buffer pool size
1647+SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE;
1648+
1649+-- enable_result_log
1650+
1651+# Create a table and check its page info behave correctly in the pool
1652+CREATE TABLE infoschema_buffer_test (col1 INT) ENGINE = INNODB;
1653+
1654+INSERT INTO infoschema_buffer_test VALUES(9);
1655+
1656+# We should be able to see this table in the buffer pool if we check
1657+# right away
1658+SELECT TABLE_NAME, INDEX_NAME, NUMBER_RECORDS, DATA_SIZE, PAGE_STATE, PAGE_TYPE
1659+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1660+WHERE TABLE_NAME like "%infoschema_buffer_test"
1661+ and PAGE_STATE="file_page" and PAGE_TYPE="index";
1662+
1663+# The NUMBER_RECORDS and DATA_SIZE should check with each insertion
1664+INSERT INTO infoschema_buffer_test VALUES(19);
1665+
1666+SELECT TABLE_NAME, INDEX_NAME, NUMBER_RECORDS, DATA_SIZE, PAGE_STATE, PAGE_TYPE
1667+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1668+WHERE TABLE_NAME like "%infoschema_buffer_test"
1669+and PAGE_STATE="file_page" and PAGE_TYPE="index";
1670+
1671+CREATE INDEX idx ON infoschema_buffer_test(col1);
1672+
1673+SELECT TABLE_NAME, INDEX_NAME, NUMBER_RECORDS, DATA_SIZE, PAGE_STATE, PAGE_TYPE
1674+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1675+WHERE TABLE_NAME like "%infoschema_buffer_test"
1676+and PAGE_STATE="file_page" and INDEX_NAME = "idx" and PAGE_TYPE="index";
1677+
1678+
1679+# Check the buffer after dropping the table
1680+DROP TABLE infoschema_buffer_test;
1681+
1682+SELECT TABLE_NAME, INDEX_NAME, NUMBER_RECORDS, DATA_SIZE, PAGE_STATE, PAGE_TYPE
1683+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1684+WHERE TABLE_NAME like "%infoschema_buffer_test";
1685+
1686+# Do one more test
1687+#--replace_regex /'*[0-9]*'/'NUM'/
1688+CREATE TABLE infoschema_parent (id INT NOT NULL, PRIMARY KEY (id))
1689+ENGINE=INNODB;
1690+
1691+CREATE TABLE infoschema_child (id INT, parent_id INT, INDEX par_ind (parent_id),
1692+ FOREIGN KEY (parent_id)
1693+ REFERENCES infoschema_parent(id)
1694+ ON DELETE CASCADE)
1695+ENGINE=INNODB;
1696+
1697+SELECT count(*)
1698+FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
1699+WHERE TABLE_NAME like "%infoschema_child" and PAGE_STATE="file_page"
1700+and PAGE_TYPE="index";
1701+
1702+DROP TABLE infoschema_child;
1703+DROP TABLE infoschema_parent;
1704+
1705+show create table information_schema.innodb_buffer_page;
1706+show create table information_schema.innodb_buffer_page_lru;
1707+show create table information_schema.innodb_buffer_pool_stats;
1708+
1709
1710=== modified file 'Percona-Server/mysql-test/suite/perfschema/t/disabled.def'
1711--- Percona-Server/mysql-test/suite/perfschema/t/disabled.def 2012-05-25 10:14:27 +0000
1712+++ Percona-Server/mysql-test/suite/perfschema/t/disabled.def 2012-10-17 04:01:25 +0000
1713@@ -9,4 +9,3 @@
1714 # Do not use any TAB characters for whitespace.
1715 #
1716 ##############################################################################
1717-misc : bug#14113704 24/04/2012 Mayank issue reported causing failure.
1718
1719=== modified file 'Percona-Server/mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result'
1720--- Percona-Server/mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result 2012-01-31 15:07:44 +0000
1721+++ Percona-Server/mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result 2012-10-17 04:01:25 +0000
1722@@ -15,5 +15,7 @@
1723 reset master;
1724 stop slave;
1725 reset slave;
1726-drop table t;
1727+drop table if exists t;
1728+reset master;
1729 End of the tests
1730+include/rpl_end.inc
1731
1732=== modified file 'Percona-Server/mysql-test/suite/rpl/t/rpl_bug41902.test'
1733--- Percona-Server/mysql-test/suite/rpl/t/rpl_bug41902.test 2010-12-19 17:15:12 +0000
1734+++ Percona-Server/mysql-test/suite/rpl/t/rpl_bug41902.test 2012-10-17 04:01:25 +0000
1735@@ -52,10 +52,10 @@
1736
1737 --disable_query_log
1738 call mtr.add_suppression("Failed to locate old binlog or relay log files");
1739-call mtr.add_suppression("MYSQL_BIN_LOG::purge_logs was called with file ./master-bin.000001 not listed in the index");
1740+call mtr.add_suppression("MYSQL_BIN_LOG::purge_logs was called with file ..master-bin.000001 not listed in the index");
1741 connection slave;
1742 call mtr.add_suppression("Failed to locate old binlog or relay log files");
1743-call mtr.add_suppression("MYSQL_BIN_LOG::purge_logs was called with file ./master-bin.000001 not listed in the index");
1744+call mtr.add_suppression("MYSQL_BIN_LOG::purge_logs was called with file ..master-bin.000001 not listed in the index");
1745 --enable_query_log
1746
1747 --echo ==== clean up ====
1748
1749=== modified file 'Percona-Server/mysql-test/suite/rpl/t/rpl_cant_read_event_incident.test'
1750--- Percona-Server/mysql-test/suite/rpl/t/rpl_cant_read_event_incident.test 2012-01-19 16:56:43 +0000
1751+++ Percona-Server/mysql-test/suite/rpl/t/rpl_cant_read_event_incident.test 2012-10-17 04:01:25 +0000
1752@@ -60,6 +60,11 @@
1753 --connection slave
1754 stop slave;
1755 reset slave;
1756-drop table t; # table was created from binlog. it does not exist on master.
1757+# Table was created from binlog, it may not be created if SQL thread is running
1758+# slowly and IO thread reaches incident before SQL thread applies it.
1759+drop table if exists t;
1760+reset master;
1761
1762 --echo End of the tests
1763+--let $rpl_only_running_threads= 1
1764+--source include/rpl_end.inc
1765
1766=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result'
1767--- Percona-Server/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result 2010-01-06 10:54:45 +0000
1768+++ Percona-Server/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result 2012-10-17 04:01:25 +0000
1769@@ -13,26 +13,26 @@
1770 '#--------------------FN_DYNVARS_028_01------------------------#'
1771 SET @@session.engine_condition_pushdown = 0;
1772 Warnings:
1773-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1774+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1775 SET @@session.engine_condition_pushdown = DEFAULT;
1776 Warnings:
1777-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1778+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1779 SELECT @@session.engine_condition_pushdown;
1780 @@session.engine_condition_pushdown
1781 1
1782 SET @@global.engine_condition_pushdown = 0;
1783 Warnings:
1784-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1785+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1786 SET @@global.engine_condition_pushdown = DEFAULT;
1787 Warnings:
1788-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1789+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1790 SELECT @@global.engine_condition_pushdown;
1791 @@global.engine_condition_pushdown
1792 1
1793 '#---------------------FN_DYNVARS_028_02-------------------------#'
1794 SET engine_condition_pushdown = 1;
1795 Warnings:
1796-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1797+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1798 SELECT @@engine_condition_pushdown;
1799 @@engine_condition_pushdown
1800 1
1801@@ -44,38 +44,38 @@
1802 ERROR 42S02: Unknown table 'global' in field list
1803 SET session engine_condition_pushdown = 0;
1804 Warnings:
1805-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1806+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1807 SELECT @@session.engine_condition_pushdown;
1808 @@session.engine_condition_pushdown
1809 0
1810 SET global engine_condition_pushdown = 0;
1811 Warnings:
1812-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1813+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1814 SELECT @@global.engine_condition_pushdown;
1815 @@global.engine_condition_pushdown
1816 0
1817 '#--------------------FN_DYNVARS_028_03------------------------#'
1818 SET @@session.engine_condition_pushdown = 0;
1819 Warnings:
1820-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1821+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1822 SELECT @@session.engine_condition_pushdown;
1823 @@session.engine_condition_pushdown
1824 0
1825 SET @@session.engine_condition_pushdown = 1;
1826 Warnings:
1827-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1828+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1829 SELECT @@session.engine_condition_pushdown;
1830 @@session.engine_condition_pushdown
1831 1
1832 SET @@global.engine_condition_pushdown = 0;
1833 Warnings:
1834-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1835+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1836 SELECT @@global.engine_condition_pushdown;
1837 @@global.engine_condition_pushdown
1838 0
1839 SET @@global.engine_condition_pushdown = 1;
1840 Warnings:
1841-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1842+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1843 SELECT @@global.engine_condition_pushdown;
1844 @@global.engine_condition_pushdown
1845 1
1846@@ -115,16 +115,16 @@
1847 '#-------------------FN_DYNVARS_028_05----------------------------#'
1848 SET @@global.engine_condition_pushdown = 0;
1849 Warnings:
1850-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1851+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1852 SET @@session.engine_condition_pushdown = 1;
1853 Warnings:
1854-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1855+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1856 SELECT @@global.engine_condition_pushdown AS res_is_0;
1857 res_is_0
1858 0
1859 SET @@global.engine_condition_pushdown = 0;
1860 Warnings:
1861-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1862+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1863 SELECT @@session.engine_condition_pushdown AS res_is_1;
1864 res_is_1
1865 1
1866@@ -159,50 +159,50 @@
1867 '#---------------------FN_DYNVARS_028_08-------------------------#'
1868 SET @@session.engine_condition_pushdown = OFF;
1869 Warnings:
1870-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1871+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1872 SELECT @@session.engine_condition_pushdown;
1873 @@session.engine_condition_pushdown
1874 0
1875 SET @@session.engine_condition_pushdown = ON;
1876 Warnings:
1877-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1878+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1879 SELECT @@session.engine_condition_pushdown;
1880 @@session.engine_condition_pushdown
1881 1
1882 SET @@global.engine_condition_pushdown = OFF;
1883 Warnings:
1884-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1885+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1886 SELECT @@global.engine_condition_pushdown;
1887 @@global.engine_condition_pushdown
1888 0
1889 SET @@global.engine_condition_pushdown = ON;
1890 Warnings:
1891-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1892+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1893 SELECT @@global.engine_condition_pushdown;
1894 @@global.engine_condition_pushdown
1895 1
1896 '#---------------------FN_DYNVARS_028_09----------------------#'
1897 SET @@session.engine_condition_pushdown = TRUE;
1898 Warnings:
1899-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1900+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1901 SELECT @@session.engine_condition_pushdown;
1902 @@session.engine_condition_pushdown
1903 1
1904 SET @@session.engine_condition_pushdown = FALSE;
1905 Warnings:
1906-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1907+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1908 SELECT @@session.engine_condition_pushdown;
1909 @@session.engine_condition_pushdown
1910 0
1911 SET @@global.engine_condition_pushdown = TRUE;
1912 Warnings:
1913-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1914+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1915 SELECT @@global.engine_condition_pushdown;
1916 @@global.engine_condition_pushdown
1917 1
1918 SET @@global.engine_condition_pushdown = FALSE;
1919 Warnings:
1920-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1921+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1922 SELECT @@global.engine_condition_pushdown;
1923 @@global.engine_condition_pushdown
1924 0
1925@@ -215,7 +215,7 @@
1926 0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
1927 set @@session.engine_condition_pushdown = TRUE;
1928 Warnings:
1929-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1930+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1931 select @@session.engine_condition_pushdown,
1932 @@global.engine_condition_pushdown,
1933 @@session.optimizer_switch, @@global.optimizer_switch;
1934@@ -223,7 +223,7 @@
1935 1 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
1936 set @@session.engine_condition_pushdown = FALSE;
1937 Warnings:
1938-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1939+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1940 select @@session.engine_condition_pushdown,
1941 @@global.engine_condition_pushdown,
1942 @@session.optimizer_switch, @@global.optimizer_switch;
1943@@ -231,7 +231,7 @@
1944 0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
1945 set @@global.engine_condition_pushdown = TRUE;
1946 Warnings:
1947-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1948+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1949 select @@session.engine_condition_pushdown,
1950 @@global.engine_condition_pushdown,
1951 @@session.optimizer_switch, @@global.optimizer_switch;
1952@@ -239,7 +239,7 @@
1953 0 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
1954 set @@global.engine_condition_pushdown = FALSE;
1955 Warnings:
1956-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1957+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1958 select @@session.engine_condition_pushdown,
1959 @@global.engine_condition_pushdown,
1960 @@session.optimizer_switch, @@global.optimizer_switch;
1961@@ -271,13 +271,13 @@
1962 0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
1963 SET @@session.engine_condition_pushdown = @session_start_value;
1964 Warnings:
1965-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1966+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1967 SELECT @@session.engine_condition_pushdown;
1968 @@session.engine_condition_pushdown
1969 1
1970 SET @@global.engine_condition_pushdown = @global_start_value;
1971 Warnings:
1972-Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
1973+Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
1974 SELECT @@global.engine_condition_pushdown;
1975 @@global.engine_condition_pushdown
1976 1
1977
1978=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/log_basic.result'
1979--- Percona-Server/mysql-test/suite/sys_vars/r/log_basic.result 2010-02-24 13:52:27 +0000
1980+++ Percona-Server/mysql-test/suite/sys_vars/r/log_basic.result 2012-10-17 04:01:25 +0000
1981@@ -8,10 +8,10 @@
1982 1
1983 SET @@global.log = ON;
1984 Warnings:
1985-Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
1986+Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
1987 SET global log = 0;
1988 Warnings:
1989-Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
1990+Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
1991 '#--------------------FN_DYNVARS_062_02-------------------------#'
1992 SELECT VARIABLE_VALUE
1993 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
1994@@ -20,4 +20,4 @@
1995 OFF
1996 SET @@global.log= @start_log;
1997 Warnings:
1998-Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
1999+Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
2000
2001=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result'
2002--- Percona-Server/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result 2010-01-29 06:33:00 +0000
2003+++ Percona-Server/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result 2012-10-17 04:01:25 +0000
2004@@ -5,20 +5,20 @@
2005 '#---------------------FN_DYNVARS_004_01-------------------------#'
2006 SET @@global.log_slow_queries = DEFAULT;
2007 Warnings:
2008-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2009+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2010 SELECT @@global.log_slow_queries = 0;
2011 @@global.log_slow_queries = 0
2012 1
2013 '#--------------------FN_DYNVARS_004_02------------------------#'
2014 SET @@global.log_slow_queries = ON;
2015 Warnings:
2016-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2017+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2018 SELECT @@global.log_slow_queries;
2019 @@global.log_slow_queries
2020 1
2021 SET @@global.log_slow_queries = OFF;
2022 Warnings:
2023-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2024+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2025 SELECT @@global.log_slow_queries;
2026 @@global.log_slow_queries
2027 0
2028@@ -61,7 +61,7 @@
2029 '#---------------------FN_DYNVARS_004_06----------------------#'
2030 SET @@global.log_slow_queries = 0;
2031 Warnings:
2032-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2033+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2034 SELECT @@global.log_slow_queries;
2035 @@global.log_slow_queries
2036 0
2037@@ -72,7 +72,7 @@
2038 1
2039 SET @@global.log_slow_queries = 1;
2040 Warnings:
2041-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2042+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2043 SELECT @@global.log_slow_queries;
2044 @@global.log_slow_queries
2045 1
2046@@ -84,7 +84,7 @@
2047 '#---------------------FN_DYNVARS_004_07----------------------#'
2048 SET @@global.log_slow_queries = TRUE;
2049 Warnings:
2050-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2051+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2052 SELECT @@global.log_slow_queries;
2053 @@global.log_slow_queries
2054 1
2055@@ -95,7 +95,7 @@
2056 1
2057 SET @@global.log_slow_queries = FALSE;
2058 Warnings:
2059-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2060+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2061 SELECT @@global.log_slow_queries;
2062 @@global.log_slow_queries
2063 0
2064@@ -107,7 +107,7 @@
2065 '#---------------------FN_DYNVARS_004_08----------------------#'
2066 SET @@global.log_slow_queries = ON;
2067 Warnings:
2068-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2069+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2070 SELECT @@log_slow_queries = @@global.log_slow_queries;
2071 @@log_slow_queries = @@global.log_slow_queries
2072 1
2073@@ -126,7 +126,7 @@
2074 ERROR 42S22: Unknown column 'log_slow_queries' in 'field list'
2075 SET @@global.log_slow_queries = @start_value;
2076 Warnings:
2077-Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
2078+Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
2079 SELECT @@global.log_slow_queries;
2080 @@global.log_slow_queries
2081 1
2082
2083=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result'
2084--- Percona-Server/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result 2009-12-22 09:35:56 +0000
2085+++ Percona-Server/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result 2012-10-17 04:01:25 +0000
2086@@ -5,42 +5,42 @@
2087 '#--------------------FN_DYNVARS_142_01-------------------------#'
2088 SET @@global.rpl_recovery_rank = 500000;
2089 Warnings:
2090-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2091+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2092 SET @@global.rpl_recovery_rank = DEFAULT;
2093 Warnings:
2094-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2095+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2096 SELECT @@global.rpl_recovery_rank;
2097 @@global.rpl_recovery_rank
2098 0
2099 '#--------------------FN_DYNVARS_142_02-------------------------#'
2100 SET @@global.rpl_recovery_rank = 0;
2101 Warnings:
2102-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2103+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2104 SELECT @@global.rpl_recovery_rank;
2105 @@global.rpl_recovery_rank
2106 0
2107 SET @@global.rpl_recovery_rank = 1024;
2108 Warnings:
2109-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2110+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2111 SELECT @@global.rpl_recovery_rank;
2112 @@global.rpl_recovery_rank
2113 1024
2114 SET @@global.rpl_recovery_rank = 123456789;
2115 Warnings:
2116-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2117+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2118 SELECT @@global.rpl_recovery_rank;
2119 @@global.rpl_recovery_rank
2120 123456789
2121 SET @@global.rpl_recovery_rank = 2147483648*2;
2122 Warnings:
2123-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2124+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2125 Warning 1292 Truncated incorrect rpl_recovery_rank value: '4294967296'
2126 SELECT @@global.rpl_recovery_rank;
2127 @@global.rpl_recovery_rank
2128 4294967295
2129 SET @@global.rpl_recovery_rank = 2147483648*1024;
2130 Warnings:
2131-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2132+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2133 Warning 1292 Truncated incorrect rpl_recovery_rank value: '2199023255552'
2134 SELECT @@global.rpl_recovery_rank;
2135 @@global.rpl_recovery_rank
2136@@ -50,7 +50,7 @@
2137 4294967295
2138 SET @@global.rpl_recovery_rank = 2147483648*2147483648;
2139 Warnings:
2140-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2141+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2142 Warning 1292 Truncated incorrect rpl_recovery_rank value: '4611686018427387904'
2143 SELECT @@global.rpl_recovery_rank;
2144 @@global.rpl_recovery_rank
2145@@ -65,21 +65,21 @@
2146 '#------------------FN_DYNVARS_142_04-----------------------#'
2147 SET @@global.rpl_recovery_rank = -1;
2148 Warnings:
2149-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2150+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2151 Warning 1292 Truncated incorrect rpl_recovery_rank value: '-1'
2152 SELECT @@global.rpl_recovery_rank;
2153 @@global.rpl_recovery_rank
2154 0
2155 SET @@global.rpl_recovery_rank = -2147483648;
2156 Warnings:
2157-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2158+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2159 Warning 1292 Truncated incorrect rpl_recovery_rank value: '-2147483648'
2160 SELECT @@global.rpl_recovery_rank;
2161 @@global.rpl_recovery_rank
2162 0
2163 SET @@global.rpl_recovery_rank = -2147483649;
2164 Warnings:
2165-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2166+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2167 Warning 1292 Truncated incorrect rpl_recovery_rank value: '-2147483649'
2168 SELECT @@global.rpl_recovery_rank;
2169 @@global.rpl_recovery_rank
2170@@ -93,7 +93,7 @@
2171 '#------------------FN_DYNVARS_142_05-----------------------#'
2172 SET @@global.rpl_recovery_rank = 3000;
2173 Warnings:
2174-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2175+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2176 SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE
2177 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
2178 WHERE VARIABLE_NAME='rpl_recovery_rank';
2179@@ -108,20 +108,20 @@
2180 '#------------------FN_DYNVARS_142_07-----------------------#'
2181 SET @@global.rpl_recovery_rank = TRUE;
2182 Warnings:
2183-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2184+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2185 SELECT @@global.rpl_recovery_rank;
2186 @@global.rpl_recovery_rank
2187 1
2188 SET @@global.rpl_recovery_rank = FALSE;
2189 Warnings:
2190-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2191+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2192 SELECT @@global.rpl_recovery_rank;
2193 @@global.rpl_recovery_rank
2194 0
2195 '#---------------------FN_DYNVARS_001_08----------------------#'
2196 SET @@global.rpl_recovery_rank = 512;
2197 Warnings:
2198-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2199+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2200 SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank;
2201 @@rpl_recovery_rank = @@global.rpl_recovery_rank
2202 1
2203@@ -135,10 +135,10 @@
2204 512
2205 SET global rpl_recovery_rank = 64;
2206 Warnings:
2207-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2208+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2209 SET @@global.rpl_recovery_rank = @start_global_value;
2210 Warnings:
2211-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2212+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2213 SELECT @@global.rpl_recovery_rank;
2214 @@global.rpl_recovery_rank
2215 0
2216
2217=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result'
2218--- Percona-Server/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result 2009-12-22 09:35:56 +0000
2219+++ Percona-Server/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result 2012-10-17 04:01:25 +0000
2220@@ -5,41 +5,41 @@
2221 '#--------------------FN_DYNVARS_142_01-------------------------#'
2222 SET @@global.rpl_recovery_rank = 500000;
2223 Warnings:
2224-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2225+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2226 SET @@global.rpl_recovery_rank = DEFAULT;
2227 Warnings:
2228-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2229+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2230 SELECT @@global.rpl_recovery_rank;
2231 @@global.rpl_recovery_rank
2232 0
2233 '#--------------------FN_DYNVARS_142_02-------------------------#'
2234 SET @@global.rpl_recovery_rank = 0;
2235 Warnings:
2236-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2237+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2238 SELECT @@global.rpl_recovery_rank;
2239 @@global.rpl_recovery_rank
2240 0
2241 SET @@global.rpl_recovery_rank = 1024;
2242 Warnings:
2243-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2244+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2245 SELECT @@global.rpl_recovery_rank;
2246 @@global.rpl_recovery_rank
2247 1024
2248 SET @@global.rpl_recovery_rank = 123456789;
2249 Warnings:
2250-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2251+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2252 SELECT @@global.rpl_recovery_rank;
2253 @@global.rpl_recovery_rank
2254 123456789
2255 SET @@global.rpl_recovery_rank = 2147483648*2;
2256 Warnings:
2257-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2258+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2259 SELECT @@global.rpl_recovery_rank;
2260 @@global.rpl_recovery_rank
2261 4294967296
2262 SET @@global.rpl_recovery_rank = 2147483648*1024;
2263 Warnings:
2264-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2265+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2266 SELECT @@global.rpl_recovery_rank;
2267 @@global.rpl_recovery_rank
2268 2199023255552
2269@@ -48,7 +48,7 @@
2270 2199023255552
2271 SET @@global.rpl_recovery_rank = 2147483648*2147483648;
2272 Warnings:
2273-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2274+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2275 SELECT @@global.rpl_recovery_rank;
2276 @@global.rpl_recovery_rank
2277 4611686018427387904
2278@@ -62,21 +62,21 @@
2279 '#------------------FN_DYNVARS_142_04-----------------------#'
2280 SET @@global.rpl_recovery_rank = -1;
2281 Warnings:
2282-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2283+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2284 Warning 1292 Truncated incorrect rpl_recovery_rank value: '-1'
2285 SELECT @@global.rpl_recovery_rank;
2286 @@global.rpl_recovery_rank
2287 0
2288 SET @@global.rpl_recovery_rank = -2147483648;
2289 Warnings:
2290-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2291+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2292 Warning 1292 Truncated incorrect rpl_recovery_rank value: '-2147483648'
2293 SELECT @@global.rpl_recovery_rank;
2294 @@global.rpl_recovery_rank
2295 0
2296 SET @@global.rpl_recovery_rank = -2147483649;
2297 Warnings:
2298-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2299+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2300 Warning 1292 Truncated incorrect rpl_recovery_rank value: '-2147483649'
2301 SELECT @@global.rpl_recovery_rank;
2302 @@global.rpl_recovery_rank
2303@@ -90,7 +90,7 @@
2304 '#------------------FN_DYNVARS_142_05-----------------------#'
2305 SET @@global.rpl_recovery_rank = 3000;
2306 Warnings:
2307-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2308+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2309 SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE
2310 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
2311 WHERE VARIABLE_NAME='rpl_recovery_rank';
2312@@ -105,20 +105,20 @@
2313 '#------------------FN_DYNVARS_142_07-----------------------#'
2314 SET @@global.rpl_recovery_rank = TRUE;
2315 Warnings:
2316-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2317+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2318 SELECT @@global.rpl_recovery_rank;
2319 @@global.rpl_recovery_rank
2320 1
2321 SET @@global.rpl_recovery_rank = FALSE;
2322 Warnings:
2323-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2324+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2325 SELECT @@global.rpl_recovery_rank;
2326 @@global.rpl_recovery_rank
2327 0
2328 '#---------------------FN_DYNVARS_001_08----------------------#'
2329 SET @@global.rpl_recovery_rank = 512;
2330 Warnings:
2331-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2332+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2333 SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank;
2334 @@rpl_recovery_rank = @@global.rpl_recovery_rank
2335 1
2336@@ -132,10 +132,10 @@
2337 512
2338 SET global rpl_recovery_rank = 64;
2339 Warnings:
2340-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2341+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2342 SET @@global.rpl_recovery_rank = @start_global_value;
2343 Warnings:
2344-Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MySQL 7.0.
2345+Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
2346 SELECT @@global.rpl_recovery_rank;
2347 @@global.rpl_recovery_rank
2348 0
2349
2350=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/sql_big_selects_func.result'
2351--- Percona-Server/mysql-test/suite/sys_vars/r/sql_big_selects_func.result 2011-09-28 11:24:15 +0000
2352+++ Percona-Server/mysql-test/suite/sys_vars/r/sql_big_selects_func.result 2012-10-17 04:01:25 +0000
2353@@ -5,7 +5,7 @@
2354 SET @global_max_join_size = @@GLOBAL.max_join_size;
2355 SET SQL_MAX_JOIN_SIZE=9;
2356 Warnings:
2357-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2358+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2359 CREATE TEMPORARY TABLE t1(a varchar(20) not null, b varchar(20));
2360 CREATE TEMPORARY TABLE t2(a varchar(20) null, b varchar(20));
2361 INSERT INTO t1 VALUES('aa','bb');
2362
2363=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result'
2364--- Percona-Server/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result 2010-01-29 06:33:00 +0000
2365+++ Percona-Server/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result 2012-10-17 04:01:25 +0000
2366@@ -22,10 +22,10 @@
2367 SQL_MAX_JOIN_SIZE 18446744073709551615
2368 set global sql_max_join_size=10;
2369 Warnings:
2370-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2371+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2372 set session sql_max_join_size=20;
2373 Warnings:
2374-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2375+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2376 select @@global.sql_max_join_size;
2377 @@global.sql_max_join_size
2378 10
2379@@ -55,19 +55,19 @@
2380 0
2381 set sql_max_join_size=cast(-1 as unsigned int);
2382 Warnings:
2383-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2384+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2385 select @@sql_big_selects;
2386 @@sql_big_selects
2387 1
2388 set sql_max_join_size=100;
2389 Warnings:
2390-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2391+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2392 select @@sql_big_selects;
2393 @@sql_big_selects
2394 0
2395 SET @@global.sql_max_join_size = @start_global_value;
2396 Warnings:
2397-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2398+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2399 SELECT @@global.sql_max_join_size;
2400 @@global.sql_max_join_size
2401 18446744073709551615
2402
2403=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/sql_max_join_size_func.result'
2404--- Percona-Server/mysql-test/suite/sys_vars/r/sql_max_join_size_func.result 2011-09-28 11:24:15 +0000
2405+++ Percona-Server/mysql-test/suite/sys_vars/r/sql_max_join_size_func.result 2012-10-17 04:01:25 +0000
2406@@ -17,7 +17,7 @@
2407 '#--------------------FN_DYNVARS_161_01-------------------------#'
2408 SET SESSION sql_max_join_size=9;
2409 Warnings:
2410-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2411+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2412 SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a;
2413 ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay
2414 Expected error The SELECT would examine more than MAX_JOIN_SIZE rows.
2415@@ -33,7 +33,7 @@
2416 This should work
2417 SET SESSION sql_max_join_size=DEFAULT;
2418 Warnings:
2419-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2420+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2421 DELETE FROM t2 WHERE a = 'aa4';
2422 SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a;
2423 a b a b
2424@@ -45,7 +45,7 @@
2425 '#----------------------------FN_DYNVARS_136_05-------------------------#'
2426 SET GLOBAL sql_max_join_size = 4;
2427 Warnings:
2428-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2429+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2430 ** Connecting con_int1 using root **
2431 ** Connection con_int1 **
2432 SELECT @@SESSION.sql_max_join_size;
2433@@ -54,7 +54,7 @@
2434 4 Expected
2435 SET SESSION sql_max_join_size = 2;
2436 Warnings:
2437-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2438+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2439 ** Connecting con_int2 using root **
2440 ** Connection con_int2 **
2441 SELECT @@SESSION.sql_max_join_size;
2442@@ -63,7 +63,7 @@
2443 4 Expected
2444 SET SESSION sql_max_join_size = 10;
2445 Warnings:
2446-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2447+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2448 ** Connection con_int2 **
2449 SELECT @@SESSION.sql_max_join_size;
2450 @@SESSION.sql_max_join_size
2451@@ -82,10 +82,10 @@
2452 Disconnecting Connections con_int1, con_int2
2453 SET @@SESSION.sql_max_join_size = @session_max_join_size;
2454 Warnings:
2455-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2456+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2457 SET @@GLOBAL.sql_max_join_size = @global_max_join_size ;
2458 Warnings:
2459-Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
2460+Warning 1287 '@@sql_max_join_size' is deprecated and will be removed in a future release.
2461 SET @@SESSION.sql_big_selects = @session_sql_big_selects;
2462 DROP TABLE t1;
2463 DROP TABLE t2;
2464
2465=== modified file 'Percona-Server/mysql-test/t/openssl_1.test'
2466--- Percona-Server/mysql-test/t/openssl_1.test 2010-04-13 15:04:45 +0000
2467+++ Percona-Server/mysql-test/t/openssl_1.test 2012-10-17 04:01:25 +0000
2468@@ -73,22 +73,28 @@
2469 # a different cacert
2470 #
2471 --exec echo "this query should not execute;" > $MYSQLTEST_VARDIR/tmp/test.sql
2472+--replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
2473 --error 1
2474 --exec $MYSQL_TEST --ssl-ca=$MYSQL_TEST_DIR/std_data/untrusted-cacert.pem --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
2475+--echo
2476
2477 #
2478 # Test that we can't open connection to server if we are using
2479 # a blank ca
2480 #
2481+--replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
2482 --error 1
2483 --exec $MYSQL_TEST --ssl-ca= --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
2484+--echo
2485
2486 #
2487 # Test that we can't open connection to server if we are using
2488 # a nonexistent ca file
2489 #
2490+--replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
2491 --error 1
2492 --exec $MYSQL_TEST --ssl-ca=nonexisting_file.pem --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
2493+--echo
2494
2495 #
2496 # Test that we can't open connection to server if we are using
2497
2498=== modified file 'Percona-Server/mysql-test/t/partition_federated.test'
2499--- Percona-Server/mysql-test/t/partition_federated.test 2007-12-12 17:19:24 +0000
2500+++ Percona-Server/mysql-test/t/partition_federated.test 2012-10-17 04:01:25 +0000
2501@@ -3,7 +3,7 @@
2502 #
2503 -- source include/have_partition.inc
2504 -- source include/not_embedded.inc
2505--- source suite/federated/have_federated_db.inc
2506+-- source suite/federated/include/have_federated_db.inc
2507
2508 --disable_warnings
2509 drop table if exists t1;
2510
2511=== modified file 'Percona-Server/mysys/mf_iocache.c'
2512--- Percona-Server/mysys/mf_iocache.c 2011-06-30 15:46:53 +0000
2513+++ Percona-Server/mysys/mf_iocache.c 2012-10-17 04:01:25 +0000
2514@@ -1528,8 +1528,13 @@
2515 int _my_b_write(register IO_CACHE *info, const uchar *Buffer, size_t Count)
2516 {
2517 size_t rest_length,length;
2518+ my_off_t pos_in_file= info->pos_in_file;
2519
2520- if (info->pos_in_file+info->buffer_length > info->end_of_file)
2521+ DBUG_EXECUTE_IF("simulate_huge_load_data_file",
2522+ {
2523+ pos_in_file=(my_off_t)(5000000000ULL);
2524+ });
2525+ if (pos_in_file+info->buffer_length > info->end_of_file)
2526 {
2527 my_errno=errno=EFBIG;
2528 return info->error = -1;
2529
2530=== modified file 'Percona-Server/mysys/my_getopt.c'
2531--- Percona-Server/mysys/my_getopt.c 2012-08-07 18:49:16 +0000
2532+++ Percona-Server/mysys/my_getopt.c 2012-10-17 04:01:25 +0000
2533@@ -980,6 +980,11 @@
2534 }
2535 *(ulong*)value= arg;
2536 }
2537+ else if (type < 0)
2538+ {
2539+ res= EXIT_AMBIGUOUS_OPTION;
2540+ goto ret;
2541+ }
2542 else
2543 *(ulong*)value= type - 1;
2544 }
2545
2546=== modified file 'Percona-Server/scripts/mysql_secure_installation.pl.in'
2547--- Percona-Server/scripts/mysql_secure_installation.pl.in 2011-06-30 15:37:13 +0000
2548+++ Percona-Server/scripts/mysql_secure_installation.pl.in 2012-10-17 04:01:25 +0000
2549@@ -1,7 +1,7 @@
2550 #!/usr/bin/perl
2551 # -*- cperl -*-
2552 #
2553-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
2554+# Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
2555 #
2556 # This program is free software; you can redistribute it and/or modify
2557 # it under the terms of the GNU General Public License as published by
2558@@ -28,7 +28,7 @@
2559 my $rootpass = "";
2560
2561
2562-$SIG{QUIT} = $SIG{INT} = sub {
2563+$SIG{QUIT} = $SIG{INT} = $SIG{TERM} = $SIG{ABRT} = $SIG{HUP} = sub {
2564 print "\nAborting!\n\n";
2565 echo_on();
2566 cleanup();
2567@@ -242,7 +242,11 @@
2568 }
2569
2570 sub cleanup {
2571- unlink($config,$command);
2572+ print "Cleaning up...\n";
2573+
2574+ foreach my $file ($config, $command) {
2575+ unlink $file or warn "Warning: Could not unlink $file: $!\n";
2576+ }
2577 }
2578
2579
2580
2581=== modified file 'Percona-Server/scripts/mysql_secure_installation.sh'
2582--- Percona-Server/scripts/mysql_secure_installation.sh 2011-06-30 15:37:13 +0000
2583+++ Percona-Server/scripts/mysql_secure_installation.sh 2012-10-17 04:01:25 +0000
2584@@ -1,6 +1,6 @@
2585 #!/bin/sh
2586
2587-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
2588+# Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
2589 #
2590 # This program is free software; you can redistribute it and/or modify
2591 # it under the terms of the GNU General Public License as published by
2592@@ -19,7 +19,7 @@
2593 command=".mysql.$$"
2594 mysql_client=""
2595
2596-trap "interrupt" 2
2597+trap "interrupt" 1 2 3 6 15
2598
2599 rootpass=""
2600 echo_n=
2601@@ -139,13 +139,16 @@
2602 if [ $? -eq 0 ]; then
2603 echo "Password updated successfully!"
2604 echo "Reloading privilege tables.."
2605- reload_privilege_tables || exit 1
2606+ reload_privilege_tables
2607+ if [ $? -eq 1 ]; then
2608+ clean_and_exit
2609+ fi
2610 echo
2611 rootpass=$password1
2612 make_config
2613 else
2614 echo "Password update failed!"
2615- exit 1
2616+ clean_and_exit
2617 fi
2618
2619 return 0
2620@@ -157,7 +160,7 @@
2621 echo " ... Success!"
2622 else
2623 echo " ... Failed!"
2624- exit 1
2625+ clean_and_exit
2626 fi
2627
2628 return 0
2629@@ -217,6 +220,11 @@
2630 rm -f $config $command
2631 }
2632
2633+# Remove the files before exiting.
2634+clean_and_exit() {
2635+ cleanup
2636+ exit 1
2637+}
2638
2639 # The actual script starts here
2640
2641
2642=== modified file 'Percona-Server/scripts/mysqlhotcopy.sh'
2643--- Percona-Server/scripts/mysqlhotcopy.sh 2011-06-30 15:46:53 +0000
2644+++ Percona-Server/scripts/mysqlhotcopy.sh 2012-10-17 04:01:25 +0000
2645@@ -272,23 +272,28 @@
2646 }
2647 }
2648
2649-# --- get list of tables to hotcopy ---
2650+# --- get list of tables and views to hotcopy ---
2651
2652 my $hc_locks = "";
2653 my $hc_tables = "";
2654+my $hc_base_tables = "";
2655+my $hc_views = "";
2656+my $num_base_tables = 0;
2657+my $num_views = 0;
2658 my $num_tables = 0;
2659 my $num_files = 0;
2660
2661 foreach my $rdb ( @db_desc ) {
2662 my $db = $rdb->{src};
2663- my @dbh_tables = get_list_of_tables( $db );
2664+ my @dbh_base_tables = get_list_of_tables( $db );
2665+ my @dbh_views = get_list_of_views( $db );
2666
2667 ## filter out certain system non-lockable tables.
2668 ## keep in sync with mysqldump.
2669 if ($db =~ m/^mysql$/i)
2670 {
2671- @dbh_tables = grep
2672- { !/^(apply_status|schema|general_log|slow_log)$/ } @dbh_tables
2673+ @dbh_base_tables = grep
2674+ { !/^(apply_status|schema|general_log|slow_log)$/ } @dbh_base_tables
2675 }
2676
2677 ## generate regex for tables/files
2678@@ -303,11 +308,20 @@
2679
2680 ## filter (out) tables specified in t_regex
2681 print "Filtering tables with '$t_regex'\n" if $opt{debug};
2682- @dbh_tables = ( $negated
2683- ? grep { $_ !~ $t_regex } @dbh_tables
2684- : grep { $_ =~ $t_regex } @dbh_tables );
2685+ @dbh_base_tables = ( $negated
2686+ ? grep { $_ !~ $t_regex } @dbh_base_tables
2687+ : grep { $_ =~ $t_regex } @dbh_base_tables );
2688+
2689+ ## filter (out) views specified in t_regex
2690+ print "Filtering tables with '$t_regex'\n" if $opt{debug};
2691+ @dbh_views = ( $negated
2692+ ? grep { $_ !~ $t_regex } @dbh_views
2693+ : grep { $_ =~ $t_regex } @dbh_views );
2694 }
2695
2696+ ## Now concatenate the base table and view arrays.
2697+ my @dbh_tables = (@dbh_base_tables, @dbh_views);
2698+
2699 ## get list of files to copy
2700 my $db_dir = "$datadir/$db";
2701 opendir(DBDIR, $db_dir )
2702@@ -347,15 +361,25 @@
2703
2704 $rdb->{files} = [ @db_files ];
2705 $rdb->{index} = [ @index_files ];
2706- my @hc_tables = map { quote_names("$db.$_") } @dbh_tables;
2707+ my @hc_base_tables = map { quote_names("$db.$_") } @dbh_base_tables;
2708+ my @hc_views = map { quote_names("$db.$_") } @dbh_views;
2709+
2710+ my @hc_tables = (@hc_base_tables, @hc_views);
2711 $rdb->{tables} = [ @hc_tables ];
2712
2713 $hc_locks .= ", " if ( length $hc_locks && @hc_tables );
2714 $hc_locks .= join ", ", map { "$_ READ" } @hc_tables;
2715- $hc_tables .= ", " if ( length $hc_tables && @hc_tables );
2716- $hc_tables .= join ", ", @hc_tables;
2717-
2718- $num_tables += scalar @hc_tables;
2719+
2720+ $hc_base_tables .= ", " if ( length $hc_base_tables && @hc_base_tables );
2721+ $hc_base_tables .= join ", ", @hc_base_tables;
2722+ $hc_views .= ", " if ( length $hc_views && @hc_views );
2723+ $hc_views .= join " READ, ", @hc_views;
2724+
2725+ @hc_tables = (@hc_base_tables, @hc_views);
2726+
2727+ $num_base_tables += scalar @hc_base_tables;
2728+ $num_views += scalar @hc_views;
2729+ $num_tables += $num_base_tables + $num_views;
2730 $num_files += scalar @{$rdb->{files}};
2731 }
2732
2733@@ -467,7 +491,10 @@
2734 print "FLUSH TABLES /*!32323 $hc_tables */\n";
2735 }
2736 else {
2737- print "FLUSH TABLES $hc_tables WITH READ LOCK\n";
2738+ # Lock base tables and views separately.
2739+ print "FLUSH TABLES $hc_base_tables WITH READ LOCK\n"
2740+ if ( $hc_base_tables );
2741+ print "LOCK TABLES $hc_views READ\n" if ( $hc_views );
2742 }
2743
2744 print "FLUSH LOGS\n" if ( $opt{flushlog} );
2745@@ -484,16 +511,24 @@
2746 # flush tables to make on-disk copy up to date
2747 $start = time;
2748 $dbh->do("FLUSH TABLES /*!32323 $hc_tables */");
2749+ printf "Flushed tables ($hc_tables) in %d seconds.\n", time-$start unless $opt{quiet};
2750 }
2751 else {
2752- $dbh->do("FLUSH TABLES $hc_tables WITH READ LOCK");
2753- printf "Locked $num_tables tables in %d seconds.\n", time-$start unless $opt{quiet};
2754+ # Lock base tables and views separately, as 'FLUSH TABLES <tbl_name>
2755+ # ... WITH READ LOCK' (introduced in 5.5) would fail for views.
2756+ # Also, flush tables to make on-disk copy up to date
2757+ $dbh->do("FLUSH TABLES $hc_base_tables WITH READ LOCK")
2758+ if ( $hc_base_tables );
2759+ printf "Flushed $num_base_tables tables with read lock ($hc_base_tables) in %d seconds.\n",
2760+ time-$start unless $opt{quiet};
2761+
2762+ $start = time;
2763+ $dbh->do("LOCK TABLES $hc_views READ") if ( $hc_views );
2764+ printf "Locked $num_views views ($hc_views) in %d seconds.\n",
2765+ time-$start unless $opt{quiet};
2766+
2767 $hc_started = time; # count from time lock is granted
2768-
2769- # flush tables to make on-disk copy up to date
2770- $start = time;
2771 }
2772- printf "Flushed tables ($hc_tables) in %d seconds.\n", time-$start unless $opt{quiet};
2773 $dbh->do( "FLUSH LOGS" ) if ( $opt{flushlog} );
2774 $dbh->do( "RESET MASTER" ) if ( $opt{resetmaster} );
2775 $dbh->do( "RESET SLAVE" ) if ( $opt{resetslave} );
2776@@ -802,14 +837,29 @@
2777
2778 my $tables =
2779 eval {
2780- $dbh->selectall_arrayref('SHOW TABLES FROM ' .
2781- $dbh->quote_identifier($db))
2782+ $dbh->selectall_arrayref('SHOW FULL TABLES FROM ' .
2783+ $dbh->quote_identifier($db) .
2784+ ' WHERE Table_type = \'BASE TABLE\'')
2785 } || [];
2786 warn "Unable to retrieve list of tables in $db: $@" if $@;
2787
2788 return (map { $_->[0] } @$tables);
2789 }
2790
2791+sub get_list_of_views {
2792+ my ( $db ) = @_;
2793+
2794+ my $views =
2795+ eval {
2796+ $dbh->selectall_arrayref('SHOW FULL TABLES FROM ' .
2797+ $dbh->quote_identifier($db) .
2798+ ' WHERE Table_type = \'VIEW\'')
2799+ } || [];
2800+ warn "Unable to retrieve list of views in $db: $@" if $@;
2801+
2802+ return (map { $_->[0] } @$views);
2803+}
2804+
2805 sub quote_names {
2806 my ( $name ) = @_;
2807 # given a db.table name, add quotes
2808
2809=== modified file 'Percona-Server/sql/filesort.cc'
2810--- Percona-Server/sql/filesort.cc 2012-05-18 04:37:44 +0000
2811+++ Percona-Server/sql/filesort.cc 2012-10-17 04:01:25 +0000
2812@@ -1,4 +1,4 @@
2813-/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
2814+/* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
2815
2816 This program is free software; you can redistribute it and/or modify
2817 it under the terms of the GNU General Public License as published by
2818@@ -284,9 +284,7 @@
2819 Use also the space previously used by string pointers in sort_buffer
2820 for temporary key storage.
2821 */
2822- param.keys=((param.keys *
2823- (param.rec_length+sizeof(char*))) /
2824- param.rec_length - 1);
2825+ param.keys= table_sort.sort_keys_size / param.rec_length;
2826 maxbuffer--; // Offset from 0
2827 if (merge_many_buff(&param,(uchar*) sort_keys,buffpek,&maxbuffer,
2828 &tempfile))
2829
2830=== modified file 'Percona-Server/sql/gen_lex_hash.cc'
2831--- Percona-Server/sql/gen_lex_hash.cc 2011-07-22 07:50:44 +0000
2832+++ Percona-Server/sql/gen_lex_hash.cc 2012-10-17 04:01:25 +0000
2833@@ -1,5 +1,5 @@
2834 /*
2835- Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
2836+ Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
2837
2838 This program is free software; you can redistribute it and/or modify
2839 it under the terms of the GNU General Public License as published by
2840@@ -378,7 +378,7 @@
2841 printf("/*\n\n Do " "not " "edit " "this " "file " "directly!\n\n*/\n");
2842
2843 puts("/*");
2844- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
2845+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
2846 puts("*/");
2847
2848 /* Broken up to indicate that it's not advice to you, gentle reader. */
2849
2850=== modified file 'Percona-Server/sql/ha_partition.cc'
2851--- Percona-Server/sql/ha_partition.cc 2012-05-15 10:45:52 +0000
2852+++ Percona-Server/sql/ha_partition.cc 2012-10-17 04:01:25 +0000
2853@@ -320,7 +320,7 @@
2854 for (i= 0; i < m_tot_parts; i++)
2855 delete m_file[i];
2856 }
2857- my_free(m_ordered_rec_buffer);
2858+ destroy_record_priority_queue();
2859 my_free(m_part_ids_sorted_by_num_of_records);
2860
2861 clear_handler_file();
2862@@ -2638,7 +2638,6 @@
2863 {
2864 char *name_buffer_ptr;
2865 int error= HA_ERR_INITIALIZATION;
2866- uint alloc_len;
2867 handler **file;
2868 char name_buff[FN_REFLEN];
2869 bool is_not_tmp_table= (table_share->tmp_table == NO_TMP_TABLE);
2870@@ -2656,32 +2655,6 @@
2871 m_start_key.length= 0;
2872 m_rec0= table->record[0];
2873 m_rec_length= table_share->reclength;
2874- alloc_len= m_tot_parts * (m_rec_length + PARTITION_BYTES_IN_POS);
2875- alloc_len+= table_share->max_key_length;
2876- if (!m_ordered_rec_buffer)
2877- {
2878- if (!(m_ordered_rec_buffer= (uchar*)my_malloc(alloc_len, MYF(MY_WME))))
2879- {
2880- DBUG_RETURN(error);
2881- }
2882- {
2883- /*
2884- We set-up one record per partition and each record has 2 bytes in
2885- front where the partition id is written. This is used by ordered
2886- index_read.
2887- We also set-up a reference to the first record for temporary use in
2888- setting up the scan.
2889- */
2890- char *ptr= (char*)m_ordered_rec_buffer;
2891- uint i= 0;
2892- do
2893- {
2894- int2store(ptr, i);
2895- ptr+= m_rec_length + PARTITION_BYTES_IN_POS;
2896- } while (++i < m_tot_parts);
2897- m_start_key.key= (const uchar*)ptr;
2898- }
2899- }
2900 if (!m_part_ids_sorted_by_num_of_records)
2901 {
2902 if (!(m_part_ids_sorted_by_num_of_records=
2903@@ -2711,7 +2684,7 @@
2904
2905 if (m_is_clone_of)
2906 {
2907- uint i;
2908+ uint i, alloc_len;
2909 DBUG_ASSERT(m_clone_mem_root);
2910 /* Allocate an array of handler pointers for the partitions handlers. */
2911 alloc_len= (m_tot_parts + 1) * sizeof(handler*);
2912@@ -2787,12 +2760,6 @@
2913 being opened once.
2914 */
2915 clear_handler_file();
2916- /*
2917- Initialize priority queue, initialized to reading forward.
2918- */
2919- if ((error= init_queue(&m_queue, m_tot_parts, (uint) PARTITION_BYTES_IN_POS,
2920- 0, key_rec_cmp, (void*)this)))
2921- goto err_handler;
2922
2923 /*
2924 Use table_share->ha_part_data to share auto_increment_value among
2925@@ -2917,7 +2884,7 @@
2926 DBUG_ENTER("ha_partition::close");
2927
2928 DBUG_ASSERT(table->s == table_share);
2929- delete_queue(&m_queue);
2930+ destroy_record_priority_queue();
2931 bitmap_free(&m_bulk_insert_started);
2932 if (!m_is_clone_of)
2933 bitmap_free(&(m_part_info->used_partitions));
2934@@ -4213,6 +4180,78 @@
2935 subset of the partitions are used, then only use those partitions.
2936 */
2937
2938+
2939+/**
2940+ Setup the ordered record buffer and the priority queue.
2941+*/
2942+
2943+bool ha_partition::init_record_priority_queue()
2944+{
2945+ DBUG_ENTER("ha_partition::init_record_priority_queue");
2946+ DBUG_ASSERT(!m_ordered_rec_buffer);
2947+ /*
2948+ Initialize the ordered record buffer.
2949+ */
2950+ if (!m_ordered_rec_buffer)
2951+ {
2952+ uint alloc_len;
2953+ uint used_parts= bitmap_bits_set(&m_part_info->used_partitions);
2954+ /* Allocate record buffer for each used partition. */
2955+ alloc_len= used_parts * (m_rec_length + PARTITION_BYTES_IN_POS);
2956+ /* Allocate a key for temporary use when setting up the scan. */
2957+ alloc_len+= table_share->max_key_length;
2958+
2959+ if (!(m_ordered_rec_buffer= (uchar*)my_malloc(alloc_len, MYF(MY_WME))))
2960+ DBUG_RETURN(true);
2961+
2962+ /*
2963+ We set-up one record per partition and each record has 2 bytes in
2964+ front where the partition id is written. This is used by ordered
2965+ index_read.
2966+ We also set-up a reference to the first record for temporary use in
2967+ setting up the scan.
2968+ */
2969+ char *ptr= (char*) m_ordered_rec_buffer;
2970+ uint16 i= 0;
2971+ do
2972+ {
2973+ if (bitmap_is_set(&m_part_info->used_partitions, i))
2974+ {
2975+ int2store(ptr, i);
2976+ ptr+= m_rec_length + PARTITION_BYTES_IN_POS;
2977+ }
2978+ } while (++i < m_tot_parts);
2979+ m_start_key.key= (const uchar*)ptr;
2980+ /* Initialize priority queue, initialized to reading forward. */
2981+ if (init_queue(&m_queue, used_parts, (uint) PARTITION_BYTES_IN_POS,
2982+ 0, key_rec_cmp, (void*)m_curr_key_info))
2983+ {
2984+ my_free(m_ordered_rec_buffer);
2985+ m_ordered_rec_buffer= NULL;
2986+ DBUG_RETURN(true);
2987+ }
2988+ }
2989+ DBUG_RETURN(false);
2990+}
2991+
2992+
2993+/**
2994+ Destroy the ordered record buffer and the priority queue.
2995+*/
2996+
2997+void ha_partition::destroy_record_priority_queue()
2998+{
2999+ DBUG_ENTER("ha_partition::destroy_record_priority_queue");
3000+ if (m_ordered_rec_buffer)
3001+ {
3002+ delete_queue(&m_queue);
3003+ my_free(m_ordered_rec_buffer);
3004+ m_ordered_rec_buffer= NULL;
3005+ }
3006+ DBUG_VOID_RETURN;
3007+}
3008+
3009+
3010 /*
3011 Initialize handler before start of index scan
3012
3013@@ -4254,6 +4293,10 @@
3014 }
3015 else
3016 m_curr_key_info[1]= NULL;
3017+
3018+ if (init_record_priority_queue())
3019+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
3020+
3021 /*
3022 Some handlers only read fields as specified by the bitmap for the
3023 read set. For partitioned handlers we always require that the
3024@@ -4328,11 +4371,11 @@
3025 do
3026 {
3027 int tmp;
3028- /* TODO RONM: Change to index_end() when code is stable */
3029 if (bitmap_is_set(&(m_part_info->used_partitions), (file - m_file)))
3030 if ((tmp= (*file)->ha_index_end()))
3031 error= tmp;
3032 } while (*(++file));
3033+ destroy_record_priority_queue();
3034 DBUG_RETURN(error);
3035 }
3036
3037@@ -5071,6 +5114,7 @@
3038 uint i;
3039 uint j= 0;
3040 bool found= FALSE;
3041+ uchar *part_rec_buf_ptr= m_ordered_rec_buffer;
3042 DBUG_ENTER("ha_partition::handle_ordered_index_scan");
3043
3044 m_top_entry= NO_CURRENT_PART_ID;
3045@@ -5081,7 +5125,7 @@
3046 {
3047 if (!(bitmap_is_set(&(m_part_info->used_partitions), i)))
3048 continue;
3049- uchar *rec_buf_ptr= rec_buf(i);
3050+ uchar *rec_buf_ptr= part_rec_buf_ptr + PARTITION_BYTES_IN_POS;
3051 int error;
3052 handler *file= m_file[i];
3053
3054@@ -5128,12 +5172,13 @@
3055 /*
3056 Initialize queue without order first, simply insert
3057 */
3058- queue_element(&m_queue, j++)= (uchar*)queue_buf(i);
3059+ queue_element(&m_queue, j++)= part_rec_buf_ptr;
3060 }
3061 else if (error != HA_ERR_KEY_NOT_FOUND && error != HA_ERR_END_OF_FILE)
3062 {
3063 DBUG_RETURN(error);
3064 }
3065+ part_rec_buf_ptr+= m_rec_length + PARTITION_BYTES_IN_POS;
3066 }
3067 if (found)
3068 {
3069@@ -5196,18 +5241,19 @@
3070 {
3071 int error;
3072 uint part_id= m_top_entry;
3073+ uchar *rec_buf= queue_top(&m_queue) + PARTITION_BYTES_IN_POS;
3074 handler *file= m_file[part_id];
3075 DBUG_ENTER("ha_partition::handle_ordered_next");
3076
3077 if (m_index_scan_type == partition_read_range)
3078 {
3079 error= file->read_range_next();
3080- memcpy(rec_buf(part_id), table->record[0], m_rec_length);
3081+ memcpy(rec_buf, table->record[0], m_rec_length);
3082 }
3083 else if (!is_next_same)
3084- error= file->index_next(rec_buf(part_id));
3085+ error= file->index_next(rec_buf);
3086 else
3087- error= file->index_next_same(rec_buf(part_id), m_start_key.key,
3088+ error= file->index_next_same(rec_buf, m_start_key.key,
3089 m_start_key.length);
3090 if (error)
3091 {
3092@@ -5250,10 +5296,11 @@
3093 {
3094 int error;
3095 uint part_id= m_top_entry;
3096+ uchar *rec_buf= queue_top(&m_queue) + PARTITION_BYTES_IN_POS;
3097 handler *file= m_file[part_id];
3098 DBUG_ENTER("ha_partition::handle_ordered_prev");
3099
3100- if ((error= file->index_prev(rec_buf(part_id))))
3101+ if ((error= file->index_prev(rec_buf)))
3102 {
3103 if (error == HA_ERR_END_OF_FILE)
3104 {
3105
3106=== modified file 'Percona-Server/sql/ha_partition.h'
3107--- Percona-Server/sql/ha_partition.h 2012-03-14 20:57:15 +0000
3108+++ Percona-Server/sql/ha_partition.h 2012-10-17 04:01:25 +0000
3109@@ -511,21 +511,13 @@
3110 virtual int read_range_next();
3111
3112 private:
3113+ bool init_record_priority_queue();
3114+ void destroy_record_priority_queue();
3115 int common_index_read(uchar * buf, bool have_start_key);
3116 int common_first_last(uchar * buf);
3117 int partition_scan_set_up(uchar * buf, bool idx_read_flag);
3118 int handle_unordered_next(uchar * buf, bool next_same);
3119 int handle_unordered_scan_next_partition(uchar * buf);
3120- uchar *queue_buf(uint part_id)
3121- {
3122- return (m_ordered_rec_buffer +
3123- (part_id * (m_rec_length + PARTITION_BYTES_IN_POS)));
3124- }
3125- uchar *rec_buf(uint part_id)
3126- {
3127- return (queue_buf(part_id) +
3128- PARTITION_BYTES_IN_POS);
3129- }
3130 int handle_ordered_index_scan(uchar * buf, bool reverse_order);
3131 int handle_ordered_next(uchar * buf, bool next_same);
3132 int handle_ordered_prev(uchar * buf);
3133
3134=== modified file 'Percona-Server/sql/handler.cc'
3135--- Percona-Server/sql/handler.cc 2012-09-17 13:08:32 +0000
3136+++ Percona-Server/sql/handler.cc 2012-10-17 04:01:25 +0000
3137@@ -4860,7 +4860,19 @@
3138 ? HA_ERR_END_OF_FILE
3139 : result);
3140
3141- DBUG_RETURN (compare_key(end_range) <= 0 ? 0 : HA_ERR_END_OF_FILE);
3142+ if (compare_key(end_range) <= 0)
3143+ {
3144+ DBUG_RETURN(0);
3145+ }
3146+ else
3147+ {
3148+ /*
3149+ The last read row does not fall in the range. So request
3150+ storage engine to release row lock if possible.
3151+ */
3152+ unlock_row();
3153+ DBUG_RETURN(HA_ERR_END_OF_FILE);
3154+ }
3155 }
3156
3157
3158@@ -4892,7 +4904,20 @@
3159 result= index_next(table->record[0]);
3160 if (result)
3161 DBUG_RETURN(result);
3162- DBUG_RETURN(compare_key(end_range) <= 0 ? 0 : HA_ERR_END_OF_FILE);
3163+
3164+ if (compare_key(end_range) <= 0)
3165+ {
3166+ DBUG_RETURN(0);
3167+ }
3168+ else
3169+ {
3170+ /*
3171+ The last read row does not fall in the range. So request
3172+ storage engine to release row lock if possible.
3173+ */
3174+ unlock_row();
3175+ DBUG_RETURN(HA_ERR_END_OF_FILE);
3176+ }
3177 }
3178
3179
3180
3181=== modified file 'Percona-Server/sql/item.cc'
3182--- Percona-Server/sql/item.cc 2012-09-17 13:08:32 +0000
3183+++ Percona-Server/sql/item.cc 2012-10-17 04:01:25 +0000
3184@@ -6429,7 +6429,12 @@
3185 if (from_field != not_found_field)
3186 {
3187 Item_field* fld;
3188- if (!(fld= new Item_field(thd, last_checked_context, from_field)))
3189+ Query_arena backup, *arena;
3190+ arena= thd->activate_stmt_arena_if_needed(&backup);
3191+ fld= new Item_field(thd, last_checked_context, from_field);
3192+ if (arena)
3193+ thd->restore_active_arena(arena, &backup);
3194+ if (!fld)
3195 goto error;
3196 thd->change_item_tree(reference, fld);
3197 mark_as_dependent(thd, last_checked_context->select_lex,
3198
3199=== modified file 'Percona-Server/sql/item.h'
3200--- Percona-Server/sql/item.h 2012-02-29 08:45:15 +0000
3201+++ Percona-Server/sql/item.h 2012-10-17 04:01:25 +0000
3202@@ -2676,6 +2676,7 @@
3203 resolved is a grouping one. After it has been fixed the ref field will point
3204 to either an Item_ref or an Item_direct_ref object which will be used to
3205 access the field.
3206+ The ref field may also point to an Item_field instance.
3207 See also comments for the fix_inner_refs() and the
3208 Item_field::fix_outer_field() functions.
3209 */
3210
3211=== modified file 'Percona-Server/sql/item_strfunc.cc'
3212--- Percona-Server/sql/item_strfunc.cc 2012-02-16 09:48:16 +0000
3213+++ Percona-Server/sql/item_strfunc.cc 2012-10-17 04:01:25 +0000
3214@@ -3295,23 +3295,21 @@
3215 String* Item_func_export_set::val_str(String* str)
3216 {
3217 DBUG_ASSERT(fixed == 1);
3218- ulonglong the_set = (ulonglong) args[0]->val_int();
3219- String yes_buf, *yes;
3220- yes = args[1]->val_str(&yes_buf);
3221- String no_buf, *no;
3222- no = args[2]->val_str(&no_buf);
3223- String *sep = NULL, sep_buf ;
3224+ String yes_buf, no_buf, sep_buf;
3225+ const ulonglong the_set = (ulonglong) args[0]->val_int();
3226+ const String *yes= args[1]->val_str(&yes_buf);
3227+ const String *no= args[2]->val_str(&no_buf);
3228+ const String *sep= NULL;
3229
3230 uint num_set_values = 64;
3231- ulonglong mask = 0x1;
3232 str->length(0);
3233 str->set_charset(collation.collation);
3234
3235 /* Check if some argument is a NULL value */
3236 if (args[0]->null_value || args[1]->null_value || args[2]->null_value)
3237 {
3238- null_value=1;
3239- return 0;
3240+ null_value= true;
3241+ return NULL;
3242 }
3243 /*
3244 Arg count can only be 3, 4 or 5 here. This is guaranteed from the
3245@@ -3324,37 +3322,56 @@
3246 num_set_values=64;
3247 if (args[4]->null_value)
3248 {
3249- null_value=1;
3250- return 0;
3251+ null_value= true;
3252+ return NULL;
3253 }
3254 /* Fall through */
3255 case 4:
3256 if (!(sep = args[3]->val_str(&sep_buf))) // Only true if NULL
3257 {
3258- null_value=1;
3259- return 0;
3260+ null_value= true;
3261+ return NULL;
3262 }
3263 break;
3264 case 3:
3265 {
3266 /* errors is not checked - assume "," can always be converted */
3267 uint errors;
3268- sep_buf.copy(STRING_WITH_LEN(","), &my_charset_bin, collation.collation, &errors);
3269+ sep_buf.copy(STRING_WITH_LEN(","), &my_charset_bin,
3270+ collation.collation, &errors);
3271 sep = &sep_buf;
3272 }
3273 break;
3274 default:
3275 DBUG_ASSERT(0); // cannot happen
3276 }
3277- null_value=0;
3278-
3279- for (uint i = 0; i < num_set_values; i++, mask = (mask << 1))
3280+ null_value= false;
3281+
3282+ const ulong max_allowed_packet= current_thd->variables.max_allowed_packet;
3283+ const uint num_separators= num_set_values > 0 ? num_set_values - 1 : 0;
3284+ const ulonglong max_total_length=
3285+ num_set_values * max(yes->length(), no->length()) +
3286+ num_separators * sep->length();
3287+
3288+ if (unlikely(max_total_length > max_allowed_packet))
3289+ {
3290+ push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
3291+ ER_WARN_ALLOWED_PACKET_OVERFLOWED,
3292+ ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED),
3293+ func_name(), max_allowed_packet);
3294+ null_value= true;
3295+ return NULL;
3296+ }
3297+
3298+ uint ix;
3299+ ulonglong mask;
3300+ for (ix= 0, mask=0x1; ix < num_set_values; ++ix, mask = (mask << 1))
3301 {
3302 if (the_set & mask)
3303 str->append(*yes);
3304 else
3305 str->append(*no);
3306- if (i != num_set_values - 1)
3307+ if (ix != num_separators)
3308 str->append(*sep);
3309 }
3310 return str;
3311
3312=== modified file 'Percona-Server/sql/item_subselect.cc'
3313--- Percona-Server/sql/item_subselect.cc 2012-05-07 20:20:42 +0000
3314+++ Percona-Server/sql/item_subselect.cc 2012-10-17 04:01:25 +0000
3315@@ -1146,7 +1146,7 @@
3316 }
3317 else
3318 {
3319- Item *item= (Item*) select_lex->item_list.head();
3320+ Item *item= (Item*) select_lex->item_list.head()->real_item();
3321
3322 if (select_lex->table_list.elements)
3323 {
3324
3325=== modified file 'Percona-Server/sql/log.cc'
3326--- Percona-Server/sql/log.cc 2012-09-28 01:36:45 +0000
3327+++ Percona-Server/sql/log.cc 2012-10-17 04:01:25 +0000
3328@@ -290,7 +290,7 @@
3329 before_stmt_pos= MY_OFF_T_UNDEF;
3330 }
3331
3332- void set_binlog_cache_info(ulong param_max_binlog_cache_size,
3333+ void set_binlog_cache_info(my_off_t param_max_binlog_cache_size,
3334 ulong *param_ptr_binlog_cache_use,
3335 ulong *param_ptr_binlog_cache_disk_use)
3336 {
3337@@ -367,7 +367,7 @@
3338 is configured. This corresponds to either
3339 . max_binlog_cache_size or max_binlog_stmt_cache_size.
3340 */
3341- ulong saved_max_binlog_cache_size;
3342+ my_off_t saved_max_binlog_cache_size;
3343
3344 /*
3345 Stores a pointer to the status variable that keeps track of the in-memory
3346@@ -419,8 +419,8 @@
3347
3348 class binlog_cache_mngr {
3349 public:
3350- binlog_cache_mngr(ulong param_max_binlog_stmt_cache_size,
3351- ulong param_max_binlog_cache_size,
3352+ binlog_cache_mngr(my_off_t param_max_binlog_stmt_cache_size,
3353+ my_off_t param_max_binlog_cache_size,
3354 ulong *param_ptr_binlog_stmt_cache_use,
3355 ulong *param_ptr_binlog_stmt_cache_disk_use,
3356 ulong *param_ptr_binlog_cache_use,
3357
3358=== modified file 'Percona-Server/sql/log_event.h'
3359--- Percona-Server/sql/log_event.h 2012-10-08 18:17:10 +0000
3360+++ Percona-Server/sql/log_event.h 2012-10-17 04:01:25 +0000
3361@@ -2572,7 +2572,7 @@
3362 User_var_log_event(THD* thd_arg, char *name_arg, uint name_len_arg,
3363 char *val_arg, ulong val_len_arg, Item_result type_arg,
3364 uint charset_number_arg, uchar flags_arg)
3365- :Log_event(), name(name_arg), name_len(name_len_arg), val(val_arg),
3366+ :Log_event(thd_arg,0,0), name(name_arg), name_len(name_len_arg), val(val_arg),
3367 val_len(val_len_arg), type(type_arg), charset_number(charset_number_arg),
3368 flags(flags_arg), deferred(false)
3369 { is_null= !val; }
3370
3371=== modified file 'Percona-Server/sql/mdl.cc'
3372--- Percona-Server/sql/mdl.cc 2011-11-15 18:00:14 +0000
3373+++ Percona-Server/sql/mdl.cc 2012-10-17 04:01:25 +0000
3374@@ -378,7 +378,8 @@
3375
3376 bool has_pending_conflicting_lock(enum_mdl_type type);
3377
3378- bool can_grant_lock(enum_mdl_type type, MDL_context *requstor_ctx) const;
3379+ bool can_grant_lock(enum_mdl_type type, MDL_context *requstor_ctx,
3380+ bool ignore_lock_priority) const;
3381
3382 inline static MDL_lock *create(const MDL_key *key);
3383
3384@@ -392,14 +393,24 @@
3385 virtual bool needs_notification(const MDL_ticket *ticket) const = 0;
3386 virtual void notify_conflicting_locks(MDL_context *ctx) = 0;
3387
3388+ virtual bitmap_t hog_lock_types_bitmap() const = 0;
3389+
3390 /** List of granted tickets for this lock. */
3391 Ticket_list m_granted;
3392 /** Tickets for contexts waiting to acquire a lock. */
3393 Ticket_list m_waiting;
3394+
3395+ /**
3396+ Number of times high priority lock requests have been granted while
3397+ low priority lock requests were waiting.
3398+ */
3399+ ulong m_hog_lock_count;
3400+
3401 public:
3402
3403 MDL_lock(const MDL_key *key_arg)
3404 : key(key_arg),
3405+ m_hog_lock_count(0),
3406 m_ref_usage(0),
3407 m_ref_release(0),
3408 m_is_destroyed(FALSE),
3409@@ -484,6 +495,15 @@
3410 }
3411 virtual void notify_conflicting_locks(MDL_context *ctx);
3412
3413+ /*
3414+ In scoped locks, only IX lock request would starve because of X/S. But that
3415+ is practically very rare case. So just return 0 from this function.
3416+ */
3417+ virtual bitmap_t hog_lock_types_bitmap() const
3418+ {
3419+ return 0;
3420+ }
3421+
3422 private:
3423 static const bitmap_t m_granted_incompatible[MDL_TYPE_END];
3424 static const bitmap_t m_waiting_incompatible[MDL_TYPE_END];
3425@@ -536,6 +556,18 @@
3426 }
3427 virtual void notify_conflicting_locks(MDL_context *ctx);
3428
3429+ /*
3430+ To prevent starvation, these lock types that are only granted
3431+ max_write_lock_count times in a row while other lock types are
3432+ waiting.
3433+ */
3434+ virtual bitmap_t hog_lock_types_bitmap() const
3435+ {
3436+ return (MDL_BIT(MDL_SHARED_NO_WRITE) |
3437+ MDL_BIT(MDL_SHARED_NO_READ_WRITE) |
3438+ MDL_BIT(MDL_EXCLUSIVE));
3439+ }
3440+
3441 private:
3442 static const bitmap_t m_granted_incompatible[MDL_TYPE_END];
3443 static const bitmap_t m_waiting_incompatible[MDL_TYPE_END];
3444@@ -1267,6 +1299,41 @@
3445 {
3446 MDL_lock::Ticket_iterator it(m_waiting);
3447 MDL_ticket *ticket;
3448+ bool skip_high_priority= false;
3449+ bitmap_t hog_lock_types= hog_lock_types_bitmap();
3450+
3451+ if (m_hog_lock_count >= max_write_lock_count)
3452+ {
3453+ /*
3454+ If number of successively granted high-prio, strong locks has exceeded
3455+ max_write_lock_count give a way to low-prio, weak locks to avoid their
3456+ starvation.
3457+ */
3458+
3459+ if ((m_waiting.bitmap() & ~hog_lock_types) != 0)
3460+ {
3461+ /*
3462+ Even though normally when m_hog_lock_count is non-0 there is
3463+ some pending low-prio lock, we still can encounter situation
3464+ when m_hog_lock_count is non-0 and there are no pending low-prio
3465+ locks. This, for example, can happen when a ticket for pending
3466+ low-prio lock was removed from waiters list due to timeout,
3467+ and reschedule_waiters() is called after that to update the
3468+ waiters queue. m_hog_lock_count will be reset to 0 at the
3469+ end of this call in such case.
3470+
3471+ Note that it is not an issue if we fail to wake up any pending
3472+ waiters for weak locks in the loop below. This would mean that
3473+ all of them are either killed, timed out or chosen as a victim
3474+ by deadlock resolver, but have not managed to remove ticket
3475+ from the waiters list yet. After tickets will be removed from
3476+ the waiters queue there will be another call to
3477+ reschedule_waiters() with pending bitmap updated to reflect new
3478+ state of waiters queue.
3479+ */
3480+ skip_high_priority= true;
3481+ }
3482+ }
3483
3484 /*
3485 Find the first (and hence the oldest) waiting request which
3486@@ -1288,7 +1355,16 @@
3487 */
3488 while ((ticket= it++))
3489 {
3490- if (can_grant_lock(ticket->get_type(), ticket->get_ctx()))
3491+ /*
3492+ Skip high-prio, strong locks if earlier we have decided to give way to
3493+ low-prio, weaker locks.
3494+ */
3495+ if (skip_high_priority &&
3496+ ((MDL_BIT(ticket->get_type()) & hog_lock_types) != 0))
3497+ continue;
3498+
3499+ if (can_grant_lock(ticket->get_type(), ticket->get_ctx(),
3500+ skip_high_priority))
3501 {
3502 if (! ticket->get_ctx()->m_wait.set_status(MDL_wait::GRANTED))
3503 {
3504@@ -1302,6 +1378,13 @@
3505 */
3506 m_waiting.remove_ticket(ticket);
3507 m_granted.add_ticket(ticket);
3508+
3509+ /*
3510+ Increase counter of successively granted high-priority strong locks,
3511+ if we have granted one.
3512+ */
3513+ if ((MDL_BIT(ticket->get_type()) & hog_lock_types) != 0)
3514+ m_hog_lock_count++;
3515 }
3516 /*
3517 If we could not update the wait slot of the waiter,
3518@@ -1313,6 +1396,24 @@
3519 */
3520 }
3521 }
3522+
3523+ if ((m_waiting.bitmap() & ~hog_lock_types) == 0)
3524+ {
3525+ /*
3526+ Reset number of successively granted high-prio, strong locks
3527+ if there are no pending low-prio, weak locks.
3528+ This ensures:
3529+ - That m_hog_lock_count is correctly reset after strong lock
3530+ is released and weak locks are granted (or there are no
3531+ other lock requests).
3532+ - That situation when SNW lock is granted along with some SR
3533+ locks, but SW locks are still blocked are handled correctly.
3534+ - That m_hog_lock_count is zero in most cases when there are no pending
3535+ weak locks (see comment at the start of this method for example of
3536+ exception). This allows to save on checks at the start of this method.
3537+ */
3538+ m_hog_lock_count= 0;
3539+ }
3540 }
3541
3542
3543@@ -1467,8 +1568,9 @@
3544 Check if request for the metadata lock can be satisfied given its
3545 current state.
3546
3547- @param type_arg The requested lock type.
3548- @param requestor_ctx The MDL context of the requestor.
3549+ @param type_arg The requested lock type.
3550+ @param requestor_ctx The MDL context of the requestor.
3551+ @param ignore_lock_priority Ignore lock priority.
3552
3553 @retval TRUE Lock request can be satisfied
3554 @retval FALSE There is some conflicting lock.
3555@@ -1480,19 +1582,21 @@
3556
3557 bool
3558 MDL_lock::can_grant_lock(enum_mdl_type type_arg,
3559- MDL_context *requestor_ctx) const
3560+ MDL_context *requestor_ctx,
3561+ bool ignore_lock_priority) const
3562 {
3563 bool can_grant= FALSE;
3564 bitmap_t waiting_incompat_map= incompatible_waiting_types_bitmap()[type_arg];
3565 bitmap_t granted_incompat_map= incompatible_granted_types_bitmap()[type_arg];
3566+
3567 /*
3568 New lock request can be satisfied iff:
3569 - There are no incompatible types of satisfied requests
3570 in other contexts
3571 - There are no waiting requests which have higher priority
3572- than this request.
3573+ than this request when priority was not ignored.
3574 */
3575- if (! (m_waiting.bitmap() & waiting_incompat_map))
3576+ if (ignore_lock_priority || !(m_waiting.bitmap() & waiting_incompat_map))
3577 {
3578 if (! (m_granted.bitmap() & granted_incompat_map))
3579 can_grant= TRUE;
3580@@ -1788,7 +1892,7 @@
3581
3582 ticket->m_lock= lock;
3583
3584- if (lock->can_grant_lock(mdl_request->type, this))
3585+ if (lock->can_grant_lock(mdl_request->type, this, false))
3586 {
3587 lock->m_granted.add_ticket(ticket);
3588
3589
3590=== modified file 'Percona-Server/sql/mdl.h'
3591--- Percona-Server/sql/mdl.h 2011-11-15 18:00:14 +0000
3592+++ Percona-Server/sql/mdl.h 2012-10-17 04:01:25 +0000
3593@@ -859,4 +859,10 @@
3594 extern ulong mdl_locks_cache_size;
3595 static const ulong MDL_LOCKS_CACHE_SIZE_DEFAULT = 1024;
3596
3597+/*
3598+ Metadata locking subsystem tries not to grant more than
3599+ max_write_lock_count high-prio, strong locks successively,
3600+ to avoid starving out weak, low-prio locks.
3601+*/
3602+extern "C" ulong max_write_lock_count;
3603 #endif
3604
3605=== modified file 'Percona-Server/sql/mysqld.cc'
3606--- Percona-Server/sql/mysqld.cc 2012-09-28 01:36:45 +0000
3607+++ Percona-Server/sql/mysqld.cc 2012-10-17 04:01:25 +0000
3608@@ -622,6 +622,21 @@
3609 Rpl_filter* rpl_filter;
3610 Rpl_filter* binlog_filter;
3611
3612+THD *first_global_thread()
3613+{
3614+ if (threads.is_empty())
3615+ return NULL;
3616+ return threads.head();
3617+}
3618+
3619+THD *next_global_thread(THD *thd)
3620+{
3621+ if (threads.is_last(thd))
3622+ return NULL;
3623+ struct ilink *next= thd->next;
3624+ return static_cast<THD*>(next);
3625+}
3626+
3627 struct system_variables global_system_variables;
3628 struct system_variables max_system_variables;
3629 struct system_status_var global_status_var;
3630@@ -6904,7 +6919,7 @@
3631 if (!default_collation_name)
3632 default_collation_name= (char*) default_charset_info->name;
3633 print_version();
3634- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2011"));
3635+ puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
3636 puts("Starts the MySQL database server.\n");
3637 printf("Usage: %s [OPTIONS]\n", my_progname);
3638 if (!opt_verbose)
3639
3640=== modified file 'Percona-Server/sql/opt_range.cc'
3641--- Percona-Server/sql/opt_range.cc 2012-08-07 06:10:00 +0000
3642+++ Percona-Server/sql/opt_range.cc 2012-10-17 04:01:25 +0000
3643@@ -3077,27 +3077,28 @@
3644 ppar->cur_subpart_fields+= ppar->is_subpart_keypart[key_tree_part];
3645 *(ppar->arg_stack_end++)= key_tree;
3646
3647+ if (ignore_part_fields)
3648+ {
3649+ /*
3650+ We come here when a condition on the first partitioning
3651+ fields led to evaluating the partitioning condition
3652+ (due to finding a condition of the type a < const or
3653+ b > const). Thus we must ignore the rest of the
3654+ partitioning fields but we still want to analyse the
3655+ subpartitioning fields.
3656+ */
3657+ if (key_tree->next_key_part)
3658+ res= find_used_partitions(ppar, key_tree->next_key_part);
3659+ else
3660+ res= -1;
3661+ goto pop_and_go_right;
3662+ }
3663+
3664 if (key_tree->type == SEL_ARG::KEY_RANGE)
3665 {
3666 if (ppar->part_info->get_part_iter_for_interval &&
3667 key_tree->part <= ppar->last_part_partno)
3668 {
3669- if (ignore_part_fields)
3670- {
3671- /*
3672- We come here when a condition on the first partitioning
3673- fields led to evaluating the partitioning condition
3674- (due to finding a condition of the type a < const or
3675- b > const). Thus we must ignore the rest of the
3676- partitioning fields but we still want to analyse the
3677- subpartitioning fields.
3678- */
3679- if (key_tree->next_key_part)
3680- res= find_used_partitions(ppar, key_tree->next_key_part);
3681- else
3682- res= -1;
3683- goto pop_and_go_right;
3684- }
3685 /* Collect left and right bound, their lengths and flags */
3686 uchar *min_key= ppar->cur_min_key;
3687 uchar *max_key= ppar->cur_max_key;
3688@@ -3338,6 +3339,13 @@
3689 res= -1;
3690 goto pop_and_go_right;
3691 }
3692+ /*
3693+ No meaning in continuing with rest of partitioning key parts.
3694+ Will try to continue with subpartitioning key parts.
3695+ */
3696+ ppar->ignore_part_fields= true;
3697+ did_set_ignore_part_fields= true;
3698+ goto process_next_key_part;
3699 }
3700 }
3701
3702
3703=== modified file 'Percona-Server/sql/set_var.cc'
3704--- Percona-Server/sql/set_var.cc 2012-09-18 05:11:08 +0000
3705+++ Percona-Server/sql/set_var.cc 2012-10-17 04:01:25 +0000
3706@@ -134,9 +134,9 @@
3707 put your additional checks here
3708 @param on_update_func a function to be called at the end of sys_var::update,
3709 any post-update activity should happen here
3710- @param deprecated_version if not 0 - when this variable will go away
3711- @param substitute if not 0 - what one should use instead when this
3712- deprecated variable
3713+ @param substitute If non-NULL, this variable is deprecated and the
3714+ string describes what one should use instead. If an empty string,
3715+ the variable is deprecated but no replacement is offered.
3716 @param parse_flag either PARSE_EARLY or PARSE_NORMAL
3717 */
3718 sys_var::sys_var(sys_var_chain *chain, const char *name_arg,
3719@@ -146,12 +146,12 @@
3720 PolyLock *lock, enum binlog_status_enum binlog_status_arg,
3721 on_check_function on_check_func,
3722 on_update_function on_update_func,
3723- uint deprecated_version, const char *substitute,
3724- int parse_flag) :
3725+ const char *substitute, int parse_flag) :
3726 next(0),
3727 binlog_status(binlog_status_arg),
3728 flags(flags_arg), m_parse_flag(parse_flag), show_val_type(show_val_type_arg),
3729 guard(lock), offset(off), on_check(on_check_func), on_update(on_update_func),
3730+ deprecation_substitute(substitute),
3731 is_os_charset(FALSE)
3732 {
3733 /*
3734@@ -177,12 +177,6 @@
3735 option.value= (uchar **)global_var_ptr();
3736 option.def_value= def_val;
3737
3738- deprecated.version= deprecated_version;
3739- deprecated.substitute= substitute;
3740- DBUG_ASSERT((deprecated_version != 0) || (substitute == 0));
3741- DBUG_ASSERT(deprecated_version % 100 == 0);
3742- DBUG_ASSERT(!deprecated_version || MYSQL_VERSION_ID < deprecated_version);
3743-
3744 if (chain->last)
3745 chain->last->next= this;
3746 else
3747@@ -277,21 +271,24 @@
3748
3749 void sys_var::do_deprecated_warning(THD *thd)
3750 {
3751- if (deprecated.version)
3752+ if (deprecation_substitute != NULL)
3753 {
3754- char buf1[NAME_CHAR_LEN + 3], buf2[10];
3755+ char buf1[NAME_CHAR_LEN + 3];
3756 strxnmov(buf1, sizeof(buf1)-1, "@@", name.str, 0);
3757- my_snprintf(buf2, sizeof(buf2), "%d.%d", deprecated.version/100/100,
3758- deprecated.version/100%100);
3759- uint errmsg= deprecated.substitute
3760- ? ER_WARN_DEPRECATED_SYNTAX_WITH_VER
3761- : ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT;
3762+
3763+ /*
3764+ if deprecation_substitute is an empty string,
3765+ there is no replacement for the syntax
3766+ */
3767+ uint errmsg= deprecation_substitute[0] == '\0'
3768+ ? ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
3769+ : ER_WARN_DEPRECATED_SYNTAX;
3770 if (thd)
3771 push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
3772 ER_WARN_DEPRECATED_SYNTAX, ER(errmsg),
3773- buf1, buf2, deprecated.substitute);
3774+ buf1, deprecation_substitute);
3775 else
3776- sql_print_warning(ER_DEFAULT(errmsg), buf1, buf2, deprecated.substitute);
3777+ sql_print_warning(ER_DEFAULT(errmsg), buf1, deprecation_substitute);
3778 }
3779 }
3780
3781
3782=== modified file 'Percona-Server/sql/set_var.h'
3783--- Percona-Server/sql/set_var.h 2012-08-28 19:36:04 +0000
3784+++ Percona-Server/sql/set_var.h 2012-10-17 04:01:25 +0000
3785@@ -82,7 +82,7 @@
3786 ptrdiff_t offset; ///< offset to the value from global_system_variables
3787 on_check_function on_check;
3788 on_update_function on_update;
3789- struct { uint version; const char *substitute; } deprecated;
3790+ const char *const deprecation_substitute;
3791 bool is_os_charset; ///< true if the value is in character_set_filesystem
3792
3793 public:
3794@@ -91,7 +91,7 @@
3795 enum get_opt_arg_type getopt_arg_type, SHOW_TYPE show_val_type_arg,
3796 longlong def_val, PolyLock *lock, enum binlog_status_enum binlog_status_arg,
3797 on_check_function on_check_func, on_update_function on_update_func,
3798- uint deprecated_version, const char *substitute, int parse_flag);
3799+ const char *substitute, int parse_flag);
3800
3801 virtual ~sys_var() {}
3802
3803
3804=== modified file 'Percona-Server/sql/share/charsets/Index.xml'
3805--- Percona-Server/sql/share/charsets/Index.xml 2006-12-23 19:20:40 +0000
3806+++ Percona-Server/sql/share/charsets/Index.xml 2012-10-17 04:01:25 +0000
3807@@ -3,7 +3,7 @@
3808 <charsets max-id="99">
3809
3810 <copyright>
3811- Copyright (C) 2003 MySQL AB
3812+ Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
3813
3814 This program is free software; you can redistribute it and/or modify
3815 it under the terms of the GNU General Public License as published by
3816
3817=== modified file 'Percona-Server/sql/share/errmsg-utf8.txt'
3818--- Percona-Server/sql/share/errmsg-utf8.txt 2012-05-07 20:20:42 +0000
3819+++ Percona-Server/sql/share/errmsg-utf8.txt 2012-10-17 04:01:25 +0000
3820@@ -6343,8 +6343,8 @@
3821 ER_PATH_LENGTH
3822 eng "The path specified for %.64s is too long."
3823 ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
3824- eng "The syntax '%s' is deprecated and will be removed in MySQL %s."
3825- ger "Die Syntax '%s' ist veraltet und wird in MySQL %s entfernt."
3826+ eng "'%s' is deprecated and will be removed in a future release."
3827+ ger "'%s' ist veraltet und wird in einer zukünftigen Version entfernt werden."
3828
3829 ER_WRONG_NATIVE_TABLE_STRUCTURE
3830 eng "Native table '%-.64s'.'%-.64s' has the wrong structure"
3831
3832=== modified file 'Percona-Server/sql/spatial.cc'
3833--- Percona-Server/sql/spatial.cc 2012-05-07 20:20:42 +0000
3834+++ Percona-Server/sql/spatial.cc 2012-10-17 04:01:25 +0000
3835@@ -507,12 +507,13 @@
3836 const char *wkb_end;
3837 Gis_point p;
3838
3839- if (len < 4)
3840+ if (len < 4 ||
3841+ (n_points= wkb_get_uint(wkb, bo)) < 1 ||
3842+ n_points > max_n_points)
3843 return 0;
3844- n_points= wkb_get_uint(wkb, bo);
3845 proper_length= 4 + n_points * POINT_DATA_SIZE;
3846
3847- if (!n_points || len < proper_length || res->reserve(proper_length))
3848+ if (len < proper_length || res->reserve(proper_length))
3849 return 0;
3850
3851 res->q_append(n_points);
3852@@ -1054,9 +1055,9 @@
3853 Gis_point p;
3854 const char *wkb_end;
3855
3856- if (len < 4)
3857+ if (len < 4 ||
3858+ (n_points= wkb_get_uint(wkb, bo)) > max_n_points)
3859 return 0;
3860- n_points= wkb_get_uint(wkb, bo);
3861 proper_size= 4 + n_points * (WKB_HEADER_SIZE + POINT_DATA_SIZE);
3862
3863 if (len < proper_size || res->reserve(proper_size))
3864
3865=== modified file 'Percona-Server/sql/spatial.h'
3866--- Percona-Server/sql/spatial.h 2011-06-30 15:46:53 +0000
3867+++ Percona-Server/sql/spatial.h 2012-10-17 04:01:25 +0000
3868@@ -383,6 +383,10 @@
3869
3870 class Gis_line_string: public Geometry
3871 {
3872+ // Maximum number of points in LineString that can fit into String
3873+ static const uint32 max_n_points=
3874+ (uint32) (UINT_MAX32 - WKB_HEADER_SIZE - 4 /* n_points */) /
3875+ POINT_DATA_SIZE;
3876 public:
3877 Gis_line_string() {} /* Remove gcc warning */
3878 virtual ~Gis_line_string() {} /* Remove gcc warning */
3879@@ -439,6 +443,10 @@
3880
3881 class Gis_multi_point: public Geometry
3882 {
3883+ // Maximum number of points in MultiPoint that can fit into String
3884+ static const uint32 max_n_points=
3885+ (uint32) (UINT_MAX32 - WKB_HEADER_SIZE - 4 /* n_points */) /
3886+ (WKB_HEADER_SIZE + POINT_DATA_SIZE);
3887 public:
3888 Gis_multi_point() {} /* Remove gcc warning */
3889 virtual ~Gis_multi_point() {} /* Remove gcc warning */
3890
3891=== modified file 'Percona-Server/sql/sql_base.cc'
3892--- Percona-Server/sql/sql_base.cc 2012-09-17 13:08:32 +0000
3893+++ Percona-Server/sql/sql_base.cc 2012-10-17 04:01:25 +0000
3894@@ -4979,8 +4979,6 @@
3895 */
3896 if (thd->locked_tables_mode <= LTM_LOCK_TABLES)
3897 {
3898- bool need_prelocking= FALSE;
3899- TABLE_LIST **save_query_tables_last= thd->lex->query_tables_last;
3900 /*
3901 Process elements of the prelocking set which are present there
3902 since parsing stage or were added to it by invocations of
3903@@ -4993,10 +4991,19 @@
3904 for (Sroutine_hash_entry *rt= *sroutine_to_open; rt;
3905 sroutine_to_open= &rt->next, rt= rt->next)
3906 {
3907+ bool need_prelocking= false;
3908+ TABLE_LIST **save_query_tables_last= thd->lex->query_tables_last;
3909+
3910 error= open_and_process_routine(thd, thd->lex, rt, prelocking_strategy,
3911 has_prelocking_list, &ot_ctx,
3912 &need_prelocking);
3913
3914+ if (need_prelocking && ! thd->lex->requires_prelocking())
3915+ thd->lex->mark_as_requiring_prelocking(save_query_tables_last);
3916+
3917+ if (need_prelocking && ! *start)
3918+ *start= thd->lex->query_tables;
3919+
3920 if (error)
3921 {
3922 if (ot_ctx.can_recover_from_failed_open())
3923@@ -5017,12 +5024,6 @@
3924 goto err;
3925 }
3926 }
3927-
3928- if (need_prelocking && ! thd->lex->requires_prelocking())
3929- thd->lex->mark_as_requiring_prelocking(save_query_tables_last);
3930-
3931- if (need_prelocking && ! *start)
3932- *start= thd->lex->query_tables;
3933 }
3934 }
3935
3936@@ -5296,6 +5297,12 @@
3937 DBUG_ENTER("check_lock_and_start_stmt");
3938
3939 /*
3940+ Prelocking placeholder is not set for TABLE_LIST that
3941+ are directly used by TOP level statement.
3942+ */
3943+ DBUG_ASSERT(table_list->prelocking_placeholder == false);
3944+
3945+ /*
3946 TL_WRITE_DEFAULT and TL_READ_DEFAULT are supposed to be parser only
3947 types of locks so they should be converted to appropriate other types
3948 to be passed to storage engine. The exact lock type passed to the
3949
3950=== modified file 'Percona-Server/sql/sql_class.cc'
3951--- Percona-Server/sql/sql_class.cc 2012-09-17 13:08:32 +0000
3952+++ Percona-Server/sql/sql_class.cc 2012-10-17 04:01:25 +0000
3953@@ -255,6 +255,18 @@
3954 }
3955
3956 /**
3957+ Get net_wait_timeout for THD object
3958+
3959+ @param thd THD object
3960+
3961+ @retval net_wait_timeout value for thread on THD
3962+*/
3963+ulong thd_get_net_wait_timeout(THD* thd)
3964+{
3965+ return thd->variables.net_wait_timeout;
3966+}
3967+
3968+/**
3969 Set reference to Performance Schema object for THD object
3970
3971 @param thd THD object
3972@@ -423,6 +435,17 @@
3973 }
3974
3975 /**
3976+ Get reading/writing on socket from THD object
3977+ @param thd THD object
3978+
3979+ @retval net.reading_or_writing value for thread on THD.
3980+*/
3981+uint thd_get_net_read_write(THD *thd)
3982+{
3983+ return thd->net.reading_or_writing;
3984+}
3985+
3986+/**
3987 Set reference to mysys variable in THD object
3988
3989 @param thd THD object
3990
3991=== modified file 'Percona-Server/sql/sql_list.h'
3992--- Percona-Server/sql/sql_list.h 2011-06-30 15:46:53 +0000
3993+++ Percona-Server/sql/sql_list.h 2012-10-17 04:01:25 +0000
3994@@ -585,6 +585,9 @@
3995 inline void empty() { first= &last; last.prev= &first; }
3996 base_ilist() { empty(); }
3997 inline bool is_empty() { return first == &last; }
3998+ // Returns true if p is the last "real" object in the list,
3999+ // i.e. p->next points to the sentinel.
4000+ inline bool is_last(ilink *p) { return p->next == NULL || p->next == &last; }
4001 inline void append(ilink *a)
4002 {
4003 first->prev= &a->next;
4004@@ -660,6 +663,7 @@
4005 {
4006 public:
4007 I_List() :base_ilist() {}
4008+ inline bool is_last(T *p) { return base_ilist::is_last(p); }
4009 inline void empty() { base_ilist::empty(); }
4010 inline bool is_empty() { return base_ilist::is_empty(); }
4011 inline void append(T* a) { base_ilist::append(a); }
4012
4013=== modified file 'Percona-Server/sql/sql_plugin.cc'
4014--- Percona-Server/sql/sql_plugin.cc 2012-08-13 00:36:54 +0000
4015+++ Percona-Server/sql/sql_plugin.cc 2012-10-17 04:01:25 +0000
4016@@ -223,7 +223,7 @@
4017 (plugin_var_arg->flags & PLUGIN_VAR_THDLOCAL ? SESSION : GLOBAL) |
4018 (plugin_var_arg->flags & PLUGIN_VAR_READONLY ? READONLY : 0),
4019 0, -1, NO_ARG, pluginvar_show_type(plugin_var_arg), 0, 0,
4020- VARIABLE_NOT_IN_BINLOG, 0, 0, 0, 0, PARSE_NORMAL),
4021+ VARIABLE_NOT_IN_BINLOG, NULL, NULL, NULL, PARSE_NORMAL),
4022 plugin_var(plugin_var_arg), orig_pluginvar_name(plugin_var_arg->name)
4023 { plugin_var->name= name_arg; }
4024 sys_var_pluginvar *cast_pluginvar() { return this; }
4025@@ -1900,7 +1900,8 @@
4026 mysql_audit_acquire_plugins(thd, MYSQL_AUDIT_GENERAL_CLASS);
4027
4028 mysql_mutex_lock(&LOCK_plugin);
4029- if (!(plugin= plugin_find_internal(name, MYSQL_ANY_PLUGIN)))
4030+ if (!(plugin= plugin_find_internal(name, MYSQL_ANY_PLUGIN)) ||
4031+ plugin->state & (PLUGIN_IS_UNINITIALIZED | PLUGIN_IS_DYING))
4032 {
4033 my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "PLUGIN", name->str);
4034 goto err;
4035
4036=== modified file 'Percona-Server/sql/sql_prepare.cc'
4037--- Percona-Server/sql/sql_prepare.cc 2012-09-17 13:08:32 +0000
4038+++ Percona-Server/sql/sql_prepare.cc 2012-10-17 04:01:25 +0000
4039@@ -878,6 +878,14 @@
4040 param->set_param_func(param, &read_pos, (uint) (data_end - read_pos));
4041 if (param->state == Item_param::NO_VALUE)
4042 DBUG_RETURN(1);
4043+
4044+ if (param->limit_clause_param && param->item_type != Item::INT_ITEM)
4045+ {
4046+ param->set_int(param->val_int(), MY_INT64_NUM_DECIMAL_DIGITS);
4047+ param->item_type= Item::INT_ITEM;
4048+ if (!param->unsigned_flag && param->value.integer < 0)
4049+ DBUG_RETURN(1);
4050+ }
4051 }
4052 }
4053 /*
4054
4055=== modified file 'Percona-Server/sql/sql_select.cc'
4056--- Percona-Server/sql/sql_select.cc 2012-09-17 13:08:32 +0000
4057+++ Percona-Server/sql/sql_select.cc 2012-10-17 04:01:25 +0000
4058@@ -578,8 +578,6 @@
4059
4060 if (having)
4061 {
4062- Query_arena backup, *arena;
4063- arena= thd->activate_stmt_arena_if_needed(&backup);
4064 nesting_map save_allow_sum_func= thd->lex->allow_sum_func;
4065 thd->where="having clause";
4066 thd->lex->allow_sum_func|= 1 << select_lex_arg->nest_level;
4067@@ -589,8 +587,6 @@
4068 having->check_cols(1)));
4069 select_lex->having_fix_field= 0;
4070 select_lex->having= having;
4071- if (arena)
4072- thd->restore_active_arena(arena, &backup);
4073
4074 if (having_fix_rc || thd->is_error())
4075 DBUG_RETURN(-1); /* purecov: inspected */
4076@@ -1541,12 +1537,19 @@
4077 DBUG_RETURN(1);
4078 }
4079 }
4080-
4081+ /*
4082+ Calculate a possible 'limit' of table rows for 'GROUP BY': 'need_tmp'
4083+ implies that there will be more postprocessing so the specified
4084+ 'limit' should not be enforced yet in the call to
4085+ 'test_if_skip_sort_order'.
4086+ */
4087+ const ha_rows limit = need_tmp ? HA_POS_ERROR : unit->select_limit_cnt;
4088+
4089 if (!(select_options & SELECT_BIG_RESULT) &&
4090 ((group_list &&
4091 (!simple_group ||
4092 !test_if_skip_sort_order(&join_tab[const_tables], group_list,
4093- unit->select_limit_cnt, 0,
4094+ limit, 0,
4095 &join_tab[const_tables].table->
4096 keys_in_use_for_group_by))) ||
4097 select_distinct) &&
4098@@ -6042,19 +6045,33 @@
4099 key_part->length,
4100 keyuse->val);
4101 }
4102- else if (keyuse->val->type() == Item::FIELD_ITEM ||
4103- (keyuse->val->type() == Item::REF_ITEM &&
4104- ((Item_ref*)keyuse->val)->ref_type() == Item_ref::OUTER_REF &&
4105- (*(Item_ref**)((Item_ref*)keyuse->val)->ref)->ref_type() ==
4106- Item_ref::DIRECT_REF &&
4107- keyuse->val->real_item()->type() == Item::FIELD_ITEM))
4108+
4109+ Item_field *field_item= NULL;
4110+ if (keyuse->val->type() == Item::FIELD_ITEM)
4111+ field_item= static_cast<Item_field*>(keyuse->val->real_item());
4112+ else if (keyuse->val->type() == Item::REF_ITEM)
4113+ {
4114+ Item_ref *item_ref= static_cast<Item_ref*>(keyuse->val);
4115+ if (item_ref->ref_type() == Item_ref::OUTER_REF)
4116+ {
4117+ if ((*item_ref->ref)->type() == Item::FIELD_ITEM)
4118+ field_item= static_cast<Item_field*>(item_ref->real_item());
4119+ else if ((*(Item_ref**)(item_ref)->ref)->ref_type()
4120+ == Item_ref::DIRECT_REF
4121+ &&
4122+ item_ref->real_item()->type() == Item::FIELD_ITEM)
4123+ field_item= static_cast<Item_field*>(item_ref->real_item());
4124+ }
4125+ }
4126+ if (field_item)
4127 return new store_key_field(thd,
4128- key_part->field,
4129- key_buff + maybe_null,
4130- maybe_null ? key_buff : 0,
4131- key_part->length,
4132- ((Item_field*) keyuse->val->real_item())->field,
4133- keyuse->val->full_name());
4134+ key_part->field,
4135+ key_buff + maybe_null,
4136+ maybe_null ? key_buff : 0,
4137+ key_part->length,
4138+ field_item->field,
4139+ keyuse->val->full_name());
4140+
4141 return new store_key_item(thd,
4142 key_part->field,
4143 key_buff + maybe_null,
4144
4145=== modified file 'Percona-Server/sql/sql_string.h'
4146--- Percona-Server/sql/sql_string.h 2012-05-10 07:49:14 +0000
4147+++ Percona-Server/sql/sql_string.h 2012-10-17 04:01:25 +0000
4148@@ -1,7 +1,7 @@
4149 #ifndef SQL_STRING_INCLUDED
4150 #define SQL_STRING_INCLUDED
4151
4152-/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
4153+/* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
4154
4155 This program is free software; you can redistribute it and/or modify
4156 it under the terms of the GNU General Public License as published by
4157@@ -235,8 +235,12 @@
4158 }
4159 bool real_alloc(uint32 arg_length); // Empties old string
4160 bool realloc(uint32 arg_length);
4161- inline void shrink(uint32 arg_length) // Shrink buffer
4162+
4163+ // Shrink the buffer, but only if it is allocated on the heap.
4164+ inline void shrink(uint32 arg_length)
4165 {
4166+ if (!is_alloced())
4167+ return;
4168 if (arg_length < Alloced_length)
4169 {
4170 char *new_ptr;
4171@@ -252,7 +256,7 @@
4172 }
4173 }
4174 }
4175- bool is_alloced() { return alloced; }
4176+ bool is_alloced() const { return alloced; }
4177 inline String& operator = (const String &s)
4178 {
4179 if (&s != this)
4180
4181=== modified file 'Percona-Server/sql/sys_vars.cc'
4182--- Percona-Server/sql/sys_vars.cc 2012-09-28 01:36:45 +0000
4183+++ Percona-Server/sql/sys_vars.cc 2012-10-17 04:01:25 +0000
4184@@ -143,7 +143,7 @@
4185
4186 #define PFS_TRAILING_PROPERTIES \
4187 NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(NULL), ON_UPDATE(NULL), \
4188- 0, NULL, sys_var::PARSE_EARLY
4189+ NULL, sys_var::PARSE_EARLY
4190
4191 static Sys_var_mybool Sys_pfs_enabled(
4192 "performance_schema",
4193@@ -1335,7 +1335,7 @@
4194 SESSION_VAR(max_join_size), NO_CMD_LINE,
4195 VALID_RANGE(1, HA_POS_ERROR), DEFAULT(HA_POS_ERROR), BLOCK_SIZE(1),
4196 NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
4197- ON_UPDATE(fix_max_join_size), DEPRECATED(70000, 0));
4198+ ON_UPDATE(fix_max_join_size), DEPRECATED(""));
4199
4200 static Sys_var_ulong Sys_max_long_data_size(
4201 "max_long_data_size",
4202@@ -1774,7 +1774,7 @@
4203 GLOBAL_VAR(rpl_recovery_rank), CMD_LINE(REQUIRED_ARG),
4204 VALID_RANGE(0, ULONG_MAX), DEFAULT(0), BLOCK_SIZE(1),
4205 NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(0),
4206- DEPRECATED(70000, 0));
4207+ DEPRECATED(""));
4208
4209 static Sys_var_ulong Sys_range_alloc_block_size(
4210 "range_alloc_block_size",
4211@@ -2394,7 +2394,7 @@
4212 CMD_LINE(OPT_ARG, OPT_ENGINE_CONDITION_PUSHDOWN),
4213 DEFAULT(TRUE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(NULL),
4214 ON_UPDATE(fix_engine_condition_pushdown),
4215- DEPRECATED(70000, "'@@optimizer_switch'"));
4216+ DEPRECATED("'@@optimizer_switch'"));
4217
4218 static Sys_var_plugin Sys_default_storage_engine(
4219 "default_storage_engine", "The default storage engine for new tables",
4220@@ -3081,7 +3081,7 @@
4221 "log", "Alias for --general-log. Deprecated",
4222 GLOBAL_VAR(opt_log), NO_CMD_LINE,
4223 DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
4224- ON_UPDATE(fix_log_state), DEPRECATED(70000, "'@@general_log'"));
4225+ ON_UPDATE(fix_log_state), DEPRECATED("'@@general_log'"));
4226
4227 static Sys_var_mybool Sys_slow_query_log(
4228 "slow_query_log",
4229@@ -3226,7 +3226,7 @@
4230 "Alias for --slow-query-log. Deprecated",
4231 GLOBAL_VAR(opt_slow_log), NO_CMD_LINE,
4232 DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
4233- ON_UPDATE(fix_log_state), DEPRECATED(70000, "'@@slow_query_log'"));
4234+ ON_UPDATE(fix_log_state), DEPRECATED("'@@slow_query_log'"));
4235
4236 static bool fix_log_state(sys_var *self, THD *thd, enum_var_type type)
4237 {
4238
4239=== modified file 'Percona-Server/sql/sys_vars.h'
4240--- Percona-Server/sql/sys_vars.h 2012-08-13 00:36:54 +0000
4241+++ Percona-Server/sql/sys_vars.h 2012-10-17 04:01:25 +0000
4242@@ -58,7 +58,7 @@
4243 @@foreign_key_checks <-> OPTION_NO_FOREIGN_KEY_CHECKS
4244 */
4245 #define REVERSE(X) ~(X)
4246-#define DEPRECATED(X, Y) X, Y
4247+#define DEPRECATED(X) X
4248
4249 #define session_var(THD, TYPE) (*(TYPE*)session_var_ptr(THD))
4250 #define global_var(TYPE) (*(TYPE*)global_var_ptr())
4251@@ -108,11 +108,11 @@
4252 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4253 on_check_function on_check_func=0,
4254 on_update_function on_update_func=0,
4255- uint deprecated_version=0, const char *substitute=0,
4256+ const char *substitute=0,
4257 int parse_flag= PARSE_NORMAL)
4258 : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
4259 getopt.arg_type, SHOWT, def_val, lock, binlog_status_arg,
4260- on_check_func, on_update_func, deprecated_version,
4261+ on_check_func, on_update_func,
4262 substitute, parse_flag)
4263 {
4264 option.var_type= ARGT;
4265@@ -201,11 +201,11 @@
4266 ulonglong def_val, PolyLock *lock,
4267 enum binlog_status_enum binlog_status_arg,
4268 on_check_function on_check_func, on_update_function on_update_func,
4269- uint deprecated_version, const char *substitute, int parse_flag= PARSE_NORMAL)
4270+ const char *substitute, int parse_flag= PARSE_NORMAL)
4271 : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
4272 getopt.arg_type, show_val_type_arg, def_val, lock,
4273 binlog_status_arg, on_check_func,
4274- on_update_func, deprecated_version, substitute, parse_flag)
4275+ on_update_func, substitute, parse_flag)
4276 {
4277 for (typelib.count= 0; values[typelib.count]; typelib.count++) /*no-op */;
4278 typelib.name="";
4279@@ -268,11 +268,11 @@
4280 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4281 on_check_function on_check_func=0,
4282 on_update_function on_update_func=0,
4283- uint deprecated_version=0, const char *substitute=0)
4284+ const char *substitute=0)
4285 : Sys_var_typelib(name_arg, comment, flag_args, off, getopt,
4286 SHOW_CHAR, values, def_val, lock,
4287 binlog_status_arg, on_check_func, on_update_func,
4288- deprecated_version, substitute)
4289+ substitute)
4290 {
4291 option.var_type= GET_ENUM;
4292 global_var(ulong)= def_val;
4293@@ -315,12 +315,12 @@
4294 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4295 on_check_function on_check_func=0,
4296 on_update_function on_update_func=0,
4297- uint deprecated_version=0, const char *substitute=0,
4298+ const char *substitute=0,
4299 int parse_flag= PARSE_NORMAL)
4300 : Sys_var_typelib(name_arg, comment, flag_args, off, getopt,
4301 SHOW_MY_BOOL, bool_values, def_val, lock,
4302 binlog_status_arg, on_check_func, on_update_func,
4303- deprecated_version, substitute, parse_flag)
4304+ substitute, parse_flag)
4305 {
4306 option.var_type= GET_BOOL;
4307 global_var(my_bool)= def_val;
4308@@ -371,12 +371,12 @@
4309 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4310 on_check_function on_check_func=0,
4311 on_update_function on_update_func=0,
4312- uint deprecated_version=0, const char *substitute=0,
4313+ const char *substitute=0,
4314 int parse_flag= PARSE_NORMAL)
4315 : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
4316 getopt.arg_type, SHOW_CHAR_PTR, (intptr)def_val,
4317 lock, binlog_status_arg, on_check_func, on_update_func,
4318- deprecated_version, substitute, parse_flag)
4319+ substitute, parse_flag)
4320 {
4321 is_os_charset= is_os_charset_arg == IN_FS_CHARSET;
4322 /*
4323@@ -465,7 +465,7 @@
4324 : sys_var(&all_sys_vars, name_arg, comment,
4325 sys_var::READONLY+sys_var::ONLY_SESSION, 0, -1,
4326 NO_ARG, SHOW_CHAR, 0, NULL, VARIABLE_NOT_IN_BINLOG,
4327- NULL, NULL, 0, NULL, PARSE_NORMAL)
4328+ NULL, NULL, NULL, PARSE_NORMAL)
4329 {
4330 is_os_charset= is_os_charset_arg == IN_FS_CHARSET;
4331 option.var_type= GET_STR;
4332@@ -538,10 +538,10 @@
4333 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4334 on_check_function on_check_func=0,
4335 on_update_function on_update_func=0,
4336- uint deprecated_version=0, const char *substitute=0)
4337+ const char *substitute=0)
4338 : Sys_var_charptr(name_arg, comment, flag_args, off, sizeof(char*),
4339 getopt, is_os_charset_arg, def_val, lock, binlog_status_arg,
4340- on_check_func, on_update_func, deprecated_version, substitute)
4341+ on_check_func, on_update_func, substitute)
4342 {
4343 global_var(LEX_STRING).length= strlen(def_val);
4344 DBUG_ASSERT(size == sizeof(LEX_STRING));
4345@@ -578,12 +578,12 @@
4346 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4347 on_check_function on_check_func=0,
4348 on_update_function on_update_func=0,
4349- uint deprecated_version=0, const char *substitute=0,
4350+ const char *substitute=0,
4351 int parse_flag= PARSE_NORMAL)
4352 : sys_var(&all_sys_vars, name_arg, comment, flag_args, 0, getopt.id,
4353 getopt.arg_type, SHOW_CHAR, (intptr)def_val,
4354 lock, binlog_status_arg, on_check_func, on_update_func,
4355- deprecated_version, substitute, parse_flag)
4356+ substitute, parse_flag)
4357 { option.var_type= GET_NO_ARG; }
4358 bool do_check(THD *thd, set_var *var)
4359 {
4360@@ -663,11 +663,11 @@
4361 enum binlog_status_enum binlog_status_arg,
4362 on_check_function on_check_func,
4363 keycache_update_function on_update_func,
4364- uint deprecated_version=0, const char *substitute=0)
4365+ const char *substitute=0)
4366 : Sys_var_ulonglong(name_arg, comment, flag_args, off, size,
4367 getopt, min_val, max_val, def_val,
4368 block_size, lock, binlog_status_arg, on_check_func, 0,
4369- deprecated_version, substitute),
4370+ substitute),
4371 keycache_update(on_update_func)
4372 {
4373 option.var_type|= GET_ASK_ADDR;
4374@@ -731,12 +731,12 @@
4375 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4376 on_check_function on_check_func=0,
4377 on_update_function on_update_func=0,
4378- uint deprecated_version=0, const char *substitute=0,
4379+ const char *substitute=0,
4380 int parse_flag= PARSE_NORMAL)
4381 : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
4382 getopt.arg_type, SHOW_DOUBLE, (longlong) double2ulonglong(def_val),
4383 lock, binlog_status_arg, on_check_func, on_update_func,
4384- deprecated_version, substitute, parse_flag)
4385+ substitute, parse_flag)
4386 {
4387 option.var_type= GET_DOUBLE;
4388 option.min_value= (longlong) double2ulonglong(min_val);
4389@@ -806,11 +806,11 @@
4390 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4391 on_check_function on_check_func=0,
4392 on_update_function on_update_func=0,
4393- uint deprecated_version=0, const char *substitute=0)
4394+ const char *substitute=0)
4395 : Sys_var_uint(name_arg, comment, SESSION, off, size, getopt,
4396 min_val, max_val, def_val, block_size,
4397 lock, binlog_status_arg, on_check_func, on_update_func,
4398- deprecated_version, substitute)
4399+ substitute)
4400 { }
4401 uchar *session_value_ptr(THD *thd, LEX_STRING *base)
4402 {
4403@@ -848,11 +848,11 @@
4404 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4405 on_check_function on_check_func=0,
4406 on_update_function on_update_func=0,
4407- uint deprecated_version=0, const char *substitute=0)
4408+ const char *substitute=0)
4409 : Sys_var_typelib(name_arg, comment, flag_args, off, getopt,
4410 SHOW_CHAR, values, def_val, lock,
4411 binlog_status_arg, on_check_func, on_update_func,
4412- deprecated_version, substitute)
4413+ substitute)
4414 {
4415 option.var_type= GET_FLAGSET;
4416 global_var(ulonglong)= def_val;
4417@@ -959,11 +959,11 @@
4418 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4419 on_check_function on_check_func=0,
4420 on_update_function on_update_func=0,
4421- uint deprecated_version=0, const char *substitute=0)
4422+ const char *substitute=0)
4423 : Sys_var_typelib(name_arg, comment, flag_args, off, getopt,
4424 SHOW_CHAR, values, def_val, lock,
4425 binlog_status_arg, on_check_func, on_update_func,
4426- deprecated_version, substitute)
4427+ substitute)
4428 {
4429 option.var_type= GET_SET;
4430 global_var(ulonglong)= def_val;
4431@@ -1065,12 +1065,12 @@
4432 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4433 on_check_function on_check_func=0,
4434 on_update_function on_update_func=0,
4435- uint deprecated_version=0, const char *substitute=0,
4436+ const char *substitute=0,
4437 int parse_flag= PARSE_NORMAL)
4438 : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
4439 getopt.arg_type, SHOW_CHAR, (intptr)def_val,
4440 lock, binlog_status_arg, on_check_func, on_update_func,
4441- deprecated_version, substitute, parse_flag),
4442+ substitute, parse_flag),
4443 plugin_type(plugin_type_arg)
4444 {
4445 option.var_type= GET_STR;
4446@@ -1179,12 +1179,12 @@
4447 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4448 on_check_function on_check_func=0,
4449 on_update_function on_update_func=0,
4450- uint deprecated_version=0, const char *substitute=0,
4451+ const char *substitute=0,
4452 int parse_flag= PARSE_NORMAL)
4453 : sys_var(&all_sys_vars, name_arg, comment, flag_args, 0, getopt.id,
4454 getopt.arg_type, SHOW_CHAR, (intptr)def_val,
4455 lock, binlog_status_arg, on_check_func, on_update_func,
4456- deprecated_version, substitute, parse_flag)
4457+ substitute, parse_flag)
4458 {
4459 DBUG_ASSERT(scope() == ONLY_SESSION);
4460 option.var_type= GET_NO_ARG;
4461@@ -1272,11 +1272,11 @@
4462 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4463 on_check_function on_check_func=0,
4464 on_update_function on_update_func=0,
4465- uint deprecated_version=0, const char *substitute=0)
4466+ const char *substitute=0)
4467 : Sys_var_typelib(name_arg, comment, flag_args, off, getopt,
4468 SHOW_MY_BOOL, bool_values, def_val, lock,
4469 binlog_status_arg, on_check_func, on_update_func,
4470- deprecated_version, substitute)
4471+ substitute)
4472 {
4473 option.var_type= GET_BOOL;
4474 reverse_semantics= my_count_bits(bitmask_arg) > 1;
4475@@ -1345,11 +1345,11 @@
4476 on_check_function on_check_func,
4477 session_special_update_function update_func_arg,
4478 session_special_read_function read_func_arg,
4479- uint deprecated_version=0, const char *substitute=0)
4480+ const char *substitute=0)
4481 : Sys_var_ulonglong(name_arg, comment, flag_args, 0,
4482 sizeof(ulonglong), getopt, min_val,
4483 max_val, 0, block_size, lock, binlog_status_arg, on_check_func, 0,
4484- deprecated_version, substitute),
4485+ substitute),
4486 read_func(read_func_arg), update_func(update_func_arg)
4487 {
4488 DBUG_ASSERT(scope() == ONLY_SESSION);
4489@@ -1398,12 +1398,12 @@
4490 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4491 on_check_function on_check_func=0,
4492 on_update_function on_update_func=0,
4493- uint deprecated_version=0, const char *substitute=0,
4494+ const char *substitute=0,
4495 int parse_flag= PARSE_NORMAL)
4496 : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
4497 getopt.arg_type, SHOW_CHAR, 0,
4498 lock, binlog_status_arg, on_check_func, on_update_func,
4499- deprecated_version, substitute, parse_flag)
4500+ substitute, parse_flag)
4501 {
4502 DBUG_ASSERT(scope() == GLOBAL);
4503 DBUG_ASSERT(getopt.id == -1);
4504@@ -1467,12 +1467,12 @@
4505 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4506 on_check_function on_check_func=0,
4507 on_update_function on_update_func=0,
4508- uint deprecated_version=0, const char *substitute=0,
4509+ const char *substitute=0,
4510 int parse_flag= PARSE_NORMAL)
4511 : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
4512 getopt.arg_type, SHOW_CHAR, (intptr)def_val,
4513 lock, binlog_status_arg, on_check_func, on_update_func,
4514- deprecated_version, substitute, parse_flag),
4515+ substitute, parse_flag),
4516 name_offset(name_off)
4517 {
4518 option.var_type= GET_STR;
4519@@ -1540,12 +1540,12 @@
4520 enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG,
4521 on_check_function on_check_func=0,
4522 on_update_function on_update_func=0,
4523- uint deprecated_version=0, const char *substitute=0,
4524+ const char *substitute=0,
4525 int parse_flag= PARSE_NORMAL)
4526 : sys_var(&all_sys_vars, name_arg, comment, flag_args, off, getopt.id,
4527 getopt.arg_type, SHOW_CHAR, (intptr)def_val,
4528 lock, binlog_status_arg, on_check_func, on_update_func,
4529- deprecated_version, substitute, parse_flag)
4530+ substitute, parse_flag)
4531 {
4532 DBUG_ASSERT(getopt.id == -1);
4533 DBUG_ASSERT(size == sizeof(Time_zone *));
4534
4535=== modified file 'Percona-Server/storage/archive/ha_archive.cc'
4536--- Percona-Server/storage/archive/ha_archive.cc 2012-05-31 09:47:13 +0000
4537+++ Percona-Server/storage/archive/ha_archive.cc 2012-10-17 04:01:25 +0000
4538@@ -277,7 +277,7 @@
4539
4540 build_table_filename(az_file, sizeof(az_file) - 1, db, name, ARZ, 0);
4541
4542- if (!(mysql_file_stat(arch_key_file_data, az_file, &file_stat, MYF(0))))
4543+ if (!(mysql_file_stat(/* arch_key_file_data */ 0, az_file, &file_stat, MYF(0))))
4544 goto err;
4545
4546 if (!(azopen(&frm_stream, az_file, O_RDONLY|O_BINARY)))
4547@@ -727,7 +727,7 @@
4548 There is a chance that the file was "discovered". In this case
4549 just use whatever file is there.
4550 */
4551- if (!(mysql_file_stat(arch_key_file_data, name_buff, &file_stat, MYF(0))))
4552+ if (!(mysql_file_stat(/* arch_key_file_data */ 0, name_buff, &file_stat, MYF(0))))
4553 {
4554 my_errno= 0;
4555 if (!(azopen(&create_stream, name_buff, O_CREAT|O_RDWR|O_BINARY)))
4556@@ -1622,7 +1622,7 @@
4557 {
4558 MY_STAT file_stat; // Stat information for the data file
4559
4560- (void) mysql_file_stat(arch_key_file_data, share->data_file_name, &file_stat, MYF(MY_WME));
4561+ (void) mysql_file_stat(/* arch_key_file_data */ 0, share->data_file_name, &file_stat, MYF(MY_WME));
4562
4563 if (flag & HA_STATUS_TIME)
4564 stats.update_time= (ulong) file_stat.st_mtime;
4565
4566=== modified file 'Percona-Server/storage/federated/ha_federated.cc'
4567--- Percona-Server/storage/federated/ha_federated.cc 2012-05-10 07:49:14 +0000
4568+++ Percona-Server/storage/federated/ha_federated.cc 2012-10-17 04:01:25 +0000
4569@@ -1397,7 +1397,7 @@
4570 break;
4571 }
4572 DBUG_PRINT("info", ("federated HA_READ_AFTER_KEY %d", i));
4573- if (store_length >= length) /* end key */
4574+ if ((store_length >= length) || (i > 0)) /* for all parts of end key*/
4575 {
4576 if (emit_key_part_name(&tmp, key_part))
4577 goto err;
4578
4579=== modified file 'Percona-Server/storage/innobase/btr/btr0btr.c'
4580--- Percona-Server/storage/innobase/btr/btr0btr.c 2012-09-28 07:53:51 +0000
4581+++ Percona-Server/storage/innobase/btr/btr0btr.c 2012-10-17 04:01:25 +0000
4582@@ -1891,6 +1891,7 @@
4583 root = btr_cur_get_page(cursor);
4584 root_block = btr_cur_get_block(cursor);
4585 root_page_zip = buf_block_get_page_zip(root_block);
4586+ ut_ad(page_get_n_recs(root) > 0);
4587 #ifdef UNIV_ZIP_DEBUG
4588 ut_a(!root_page_zip || page_zip_validate(root_page_zip, root));
4589 #endif /* UNIV_ZIP_DEBUG */
4590@@ -2371,12 +2372,20 @@
4591 BTR_CONT_MODIFY_TREE,
4592 &cursor, 0, file, line, mtr);
4593
4594- err = btr_cur_pessimistic_insert(BTR_NO_LOCKING_FLAG
4595- | BTR_KEEP_SYS_FLAG
4596- | BTR_NO_UNDO_LOG_FLAG,
4597- &cursor, tuple, &rec,
4598- &dummy_big_rec, 0, NULL, mtr);
4599- ut_a(err == DB_SUCCESS);
4600+ ut_ad(cursor.flag == BTR_CUR_BINARY);
4601+
4602+ err = btr_cur_optimistic_insert(
4603+ BTR_NO_LOCKING_FLAG | BTR_KEEP_SYS_FLAG
4604+ | BTR_NO_UNDO_LOG_FLAG, &cursor, tuple, &rec,
4605+ &dummy_big_rec, 0, NULL, mtr);
4606+
4607+ if (err == DB_FAIL) {
4608+ err = btr_cur_pessimistic_insert(
4609+ BTR_NO_LOCKING_FLAG | BTR_KEEP_SYS_FLAG
4610+ | BTR_NO_UNDO_LOG_FLAG,
4611+ &cursor, tuple, &rec, &dummy_big_rec, 0, NULL, mtr);
4612+ ut_a(err == DB_SUCCESS);
4613+ }
4614 }
4615
4616 /**************************************************************//**
4617
4618=== modified file 'Percona-Server/storage/innobase/btr/btr0cur.c'
4619--- Percona-Server/storage/innobase/btr/btr0cur.c 2012-09-17 13:08:32 +0000
4620+++ Percona-Server/storage/innobase/btr/btr0cur.c 2012-10-17 04:01:25 +0000
4621@@ -1412,7 +1412,12 @@
4622
4623 if (UNIV_UNLIKELY(reorg)) {
4624 ut_a(zip_size);
4625- ut_a(*rec);
4626+ /* It's possible for rec to be NULL if the
4627+ page is compressed. This is because a
4628+ reorganized page may become incompressible. */
4629+ if (!*rec) {
4630+ goto fail;
4631+ }
4632 }
4633 }
4634
4635@@ -1548,20 +1553,9 @@
4636 ut_ad((thr && thr_get_trx(thr)->fake_changes) || mtr_memo_contains(mtr, btr_cur_get_block(cursor),
4637 MTR_MEMO_PAGE_X_FIX));
4638
4639- /* Try first an optimistic insert; reset the cursor flag: we do not
4640- assume anything of how it was positioned */
4641-
4642 cursor->flag = BTR_CUR_BINARY;
4643
4644- err = btr_cur_optimistic_insert(flags, cursor, entry, rec,
4645- big_rec, n_ext, thr, mtr);
4646- if (err != DB_FAIL) {
4647-
4648- return(err);
4649- }
4650-
4651- /* Retry with a pessimistic insert. Check locks and write to undo log,
4652- if specified */
4653+ /* Check locks and write to undo log, if specified */
4654
4655 err = btr_cur_ins_lock_and_undo(flags, cursor, entry,
4656 thr, mtr, &dummy_inh);
4657@@ -2188,8 +2182,12 @@
4658 goto err_exit;
4659 }
4660
4661- max_size = old_rec_size
4662- + page_get_max_insert_size_after_reorganize(page, 1);
4663+ /* We do not attempt to reorganize if the page is compressed.
4664+ This is because the page may fail to compress after reorganization. */
4665+ max_size = page_zip
4666+ ? page_get_max_insert_size(page, 1)
4667+ : (old_rec_size
4668+ + page_get_max_insert_size_after_reorganize(page, 1));
4669
4670 if (!(((max_size >= BTR_CUR_PAGE_REORGANIZE_LIMIT)
4671 && (max_size >= new_rec_size))
4672@@ -2559,7 +2557,12 @@
4673 err = DB_SUCCESS;
4674 goto return_after_reservations;
4675 } else {
4676- ut_a(optim_err != DB_UNDERFLOW);
4677+ /* If the page is compressed and it initially
4678+ compresses very well, and there is a subsequent insert
4679+ of a badly-compressing record, it is possible for
4680+ btr_cur_optimistic_update() to return DB_UNDERFLOW and
4681+ btr_cur_insert_if_possible() to return FALSE. */
4682+ ut_a(page_zip || optim_err != DB_UNDERFLOW);
4683
4684 /* Out of space: reset the free bits. */
4685 if (!dict_index_is_clust(index)
4686@@ -2588,7 +2591,9 @@
4687 was_first = page_cur_is_before_first(page_cursor);
4688
4689 /* Lock checks and undo logging were already performed by
4690- btr_cur_upd_lock_and_undo(). */
4691+ btr_cur_upd_lock_and_undo(). We do not try
4692+ btr_cur_optimistic_insert() because
4693+ btr_cur_insert_if_possible() already failed above. */
4694
4695 err = btr_cur_pessimistic_insert(BTR_NO_UNDO_LOG_FLAG
4696 | BTR_NO_LOCKING_FLAG
4697
4698=== modified file 'Percona-Server/storage/innobase/btr/btr0pcur.c'
4699--- Percona-Server/storage/innobase/btr/btr0pcur.c 2012-06-01 12:15:25 +0000
4700+++ Percona-Server/storage/innobase/btr/btr0pcur.c 2012-10-17 04:01:25 +0000
4701@@ -354,44 +354,39 @@
4702 /* Restore the old search mode */
4703 cursor->search_mode = old_mode;
4704
4705- if (btr_pcur_is_on_user_rec(cursor)) {
4706- switch (cursor->rel_pos) {
4707- case BTR_PCUR_ON:
4708- if (!cmp_dtuple_rec(
4709- tuple, btr_pcur_get_rec(cursor),
4710- rec_get_offsets(btr_pcur_get_rec(cursor),
4711- index, NULL,
4712- ULINT_UNDEFINED, &heap))) {
4713-
4714- /* We have to store the NEW value for
4715- the modify clock, since the cursor can
4716- now be on a different page! But we can
4717- retain the value of old_rec */
4718-
4719- cursor->block_when_stored =
4720- btr_pcur_get_block(cursor);
4721- cursor->modify_clock =
4722- buf_block_get_modify_clock(
4723- cursor->block_when_stored);
4724- cursor->old_stored = BTR_PCUR_OLD_STORED;
4725-
4726- mem_heap_free(heap);
4727-
4728- return(TRUE);
4729- }
4730-
4731- break;
4732- case BTR_PCUR_BEFORE:
4733- page_cur_move_to_next(btr_pcur_get_page_cur(cursor));
4734- break;
4735- case BTR_PCUR_AFTER:
4736- page_cur_move_to_prev(btr_pcur_get_page_cur(cursor));
4737- break;
4738+ switch (cursor->rel_pos) {
4739+ case BTR_PCUR_ON:
4740+ if (btr_pcur_is_on_user_rec(cursor)
4741+ && !cmp_dtuple_rec(
4742+ tuple, btr_pcur_get_rec(cursor),
4743+ rec_get_offsets(btr_pcur_get_rec(cursor),
4744+ index, NULL,
4745+ ULINT_UNDEFINED, &heap))) {
4746+
4747+ /* We have to store the NEW value for
4748+ the modify clock, since the cursor can
4749+ now be on a different page! But we can
4750+ retain the value of old_rec */
4751+
4752+ cursor->block_when_stored =
4753+ btr_pcur_get_block(cursor);
4754+ cursor->modify_clock =
4755+ buf_block_get_modify_clock(
4756+ cursor->block_when_stored);
4757+ cursor->old_stored = BTR_PCUR_OLD_STORED;
4758+
4759+ mem_heap_free(heap);
4760+
4761+ return(TRUE);
4762+ }
4763 #ifdef UNIV_DEBUG
4764- default:
4765- ut_error;
4766+ /* fall through */
4767+ case BTR_PCUR_BEFORE:
4768+ case BTR_PCUR_AFTER:
4769+ break;
4770+ default:
4771+ ut_error;
4772 #endif /* UNIV_DEBUG */
4773- }
4774 }
4775
4776 mem_heap_free(heap);
4777
4778=== modified file 'Percona-Server/storage/innobase/buf/buf0buf.c'
4779--- Percona-Server/storage/innobase/buf/buf0buf.c 2012-10-12 06:24:13 +0000
4780+++ Percona-Server/storage/innobase/buf/buf0buf.c 2012-10-17 04:01:25 +0000
4781@@ -336,15 +336,6 @@
4782 # endif /* !PFS_SKIP_BUFFER_MUTEX_RWLOCK */
4783 #endif /* UNIV_PFS_MUTEX || UNIV_PFS_RWLOCK */
4784
4785-/** A chunk of buffers. The buffer pool is allocated in chunks. (moved to buf0buf.h)*/
4786-//struct buf_chunk_struct{
4787-// ulint mem_size; /*!< allocated size of the chunk */
4788-// ulint size; /*!< size of frames[] and blocks[] */
4789-// void* mem; /*!< pointer to the memory area which
4790-// was allocated for the frames */
4791-// buf_block_t* blocks; /*!< array of buffer control blocks */
4792-//};
4793-
4794 /********************************************************************//**
4795 Gets the smallest oldest_modification lsn for any page in the pool. Returns
4796 zero if all modified pages have been flushed to disk.
4797@@ -4973,7 +4964,7 @@
4798 Collect buffer pool stats information for a buffer pool. Also
4799 record aggregated stats if there are more than one buffer pool
4800 in the server */
4801-static
4802+UNIV_INTERN
4803 void
4804 buf_stats_get_pool_info(
4805 /*====================*/
4806
4807=== modified file 'Percona-Server/storage/innobase/buf/buf0lru.c'
4808--- Percona-Server/storage/innobase/buf/buf0lru.c 2012-10-01 00:47:22 +0000
4809+++ Percona-Server/storage/innobase/buf/buf0lru.c 2012-10-17 04:01:25 +0000
4810@@ -2384,7 +2384,7 @@
4811 #endif
4812 mutex_t* block_mutex = buf_page_get_mutex(bpage);
4813
4814- ut_ad(buf_pool_mutex_own(buf_pool));
4815+ ut_ad(mutex_own(&buf_pool->LRU_list_mutex));
4816 ut_ad(mutex_own(block_mutex));
4817
4818 if (buf_LRU_block_remove_hashed_page(bpage, TRUE)
4819
4820=== modified file 'Percona-Server/storage/innobase/buf/buf0rea.c'
4821--- Percona-Server/storage/innobase/buf/buf0rea.c 2012-08-07 06:10:00 +0000
4822+++ Percona-Server/storage/innobase/buf/buf0rea.c 2012-10-17 04:01:25 +0000
4823@@ -64,7 +64,7 @@
4824 == BUF_BLOCK_FILE_PAGE);
4825
4826 /* First unfix and release lock on the bpage */
4827- buf_pool_mutex_enter(buf_pool);
4828+ mutex_enter(&buf_pool->LRU_list_mutex);
4829 mutex_enter(buf_page_get_mutex(bpage));
4830 ut_ad(buf_page_get_io_fix(bpage) == BUF_IO_READ);
4831 ut_ad(bpage->buf_fix_count == 0);
4832@@ -85,7 +85,7 @@
4833 buf_pool->n_pend_reads--;
4834
4835 mutex_exit(buf_page_get_mutex(bpage));
4836- buf_pool_mutex_exit(buf_pool);
4837+ mutex_exit(&buf_pool->LRU_list_mutex);
4838 }
4839
4840 /********************************************************************//**
4841
4842=== modified file 'Percona-Server/storage/innobase/handler/ha_innodb.cc'
4843--- Percona-Server/storage/innobase/handler/ha_innodb.cc 2012-10-01 00:49:13 +0000
4844+++ Percona-Server/storage/innobase/handler/ha_innodb.cc 2012-10-17 04:01:25 +0000
4845@@ -13019,7 +13019,10 @@
4846 i_s_innodb_buffer_pool_pages_index,
4847 i_s_innodb_buffer_pool_pages_blob,
4848 i_s_innodb_admin_command,
4849-i_s_innodb_changed_pages
4850+i_s_innodb_changed_pages,
4851+i_s_innodb_buffer_page,
4852+i_s_innodb_buffer_page_lru,
4853+i_s_innodb_buffer_stats
4854 mysql_declare_plugin_end;
4855
4856 /** @brief Initialize the default value of innodb_commit_concurrency.
4857
4858=== modified file 'Percona-Server/storage/innobase/handler/i_s.cc'
4859--- Percona-Server/storage/innobase/handler/i_s.cc 2012-09-18 04:40:37 +0000
4860+++ Percona-Server/storage/innobase/handler/i_s.cc 2012-10-17 04:01:25 +0000
4861@@ -63,8 +63,93 @@
4862 #include "buf0lru.h" /* for XTRA_LRU_[DUMP/RESTORE] */
4863 #include "btr0btr.h" /* for btr_page_get_index_id */
4864 #include "log0online.h"
4865+#include "btr0btr.h"
4866+#include "page0zip.h"
4867+#include "log0log.h"
4868 }
4869
4870+/** structure associates a name string with a file page type and/or buffer
4871+page state. */
4872+struct buffer_page_desc_str_struct{
4873+ const char* type_str; /*!< String explain the page
4874+ type/state */
4875+ ulint type_value; /*!< Page type or page state */
4876+};
4877+
4878+typedef struct buffer_page_desc_str_struct buf_page_desc_str_t;
4879+
4880+/** Any states greater than FIL_PAGE_TYPE_LAST would be treated as unknown. */
4881+#define I_S_PAGE_TYPE_UNKNOWN (FIL_PAGE_TYPE_LAST + 1)
4882+
4883+/** We also define I_S_PAGE_TYPE_INDEX as the Index Page's position
4884+in i_s_page_type[] array */
4885+#define I_S_PAGE_TYPE_INDEX 1
4886+
4887+/** Name string for File Page Types */
4888+static buf_page_desc_str_t i_s_page_type[] = {
4889+ {"ALLOCATED", FIL_PAGE_TYPE_ALLOCATED},
4890+ {"INDEX", FIL_PAGE_INDEX},
4891+ {"UNDO_LOG", FIL_PAGE_UNDO_LOG},
4892+ {"INODE", FIL_PAGE_INODE},
4893+ {"IBUF_FREE_LIST", FIL_PAGE_IBUF_FREE_LIST},
4894+ {"IBUF_BITMAP", FIL_PAGE_IBUF_BITMAP},
4895+ {"SYSTEM", FIL_PAGE_TYPE_SYS},
4896+ {"TRX_SYSTEM", FIL_PAGE_TYPE_TRX_SYS},
4897+ {"FILE_SPACE_HEADER", FIL_PAGE_TYPE_FSP_HDR},
4898+ {"EXTENT_DESCRIPTOR", FIL_PAGE_TYPE_XDES},
4899+ {"BLOB", FIL_PAGE_TYPE_BLOB},
4900+ {"COMPRESSED_BLOB", FIL_PAGE_TYPE_ZBLOB},
4901+ {"COMPRESSED_BLOB2", FIL_PAGE_TYPE_ZBLOB2},
4902+ {"UNKNOWN", I_S_PAGE_TYPE_UNKNOWN}
4903+};
4904+
4905+/* Check if we can hold all page type in a 4 bit value */
4906+#if I_S_PAGE_TYPE_UNKNOWN > 1<<4
4907+# error "i_s_page_type[] is too large"
4908+#endif
4909+
4910+/** This structure defines information we will fetch from pages
4911+currently cached in the buffer pool. It will be used to populate
4912+table INFORMATION_SCHEMA.INNODB_BUFFER_PAGE */
4913+struct buffer_page_info_struct{
4914+ ulint block_id; /*!< Buffer Pool block ID */
4915+ unsigned space_id:32; /*!< Tablespace ID */
4916+ unsigned page_num:32; /*!< Page number/offset */
4917+ unsigned access_time:32; /*!< Time of first access */
4918+ unsigned pool_id:MAX_BUFFER_POOLS_BITS;
4919+ /*!< Buffer Pool ID. Must be less than
4920+ MAX_BUFFER_POOLS */
4921+ unsigned flush_type:2; /*!< Flush type */
4922+ unsigned io_fix:2; /*!< type of pending I/O operation */
4923+ unsigned fix_count:19; /*!< Count of how manyfold this block
4924+ is bufferfixed */
4925+ unsigned hashed:1; /*!< Whether hash index has been
4926+ built on this page */
4927+ unsigned is_old:1; /*!< TRUE if the block is in the old
4928+ blocks in buf_pool->LRU_old */
4929+ unsigned freed_page_clock:31; /*!< the value of
4930+ buf_pool->freed_page_clock */
4931+ unsigned zip_ssize:PAGE_ZIP_SSIZE_BITS;
4932+ /*!< Compressed page size */
4933+ unsigned page_state:BUF_PAGE_STATE_BITS; /*!< Page state */
4934+ unsigned page_type:4; /*!< Page type */
4935+ unsigned num_recs;
4936+ /*!< Number of records on Page */
4937+ unsigned data_size;
4938+ /*!< Sum of the sizes of the records */
4939+ lsn_t newest_mod; /*!< Log sequence number of
4940+ the youngest modification */
4941+ lsn_t oldest_mod; /*!< Log sequence number of
4942+ the oldest modification */
4943+ index_id_t index_id; /*!< Index ID if a index page */
4944+};
4945+
4946+typedef struct buffer_page_info_struct buf_page_info_t;
4947+
4948+/** maximum number of buffer page info we would cache. */
4949+#define MAX_BUF_INFO_CACHED 10000
4950+
4951+
4952 #define OK(expr) \
4953 if ((expr) != 0) { \
4954 DBUG_RETURN(1); \
4955@@ -1599,7 +1684,6 @@
4956
4957 buf_pool = buf_pool_from_array(i);
4958
4959- //buf_pool_mutex_enter(buf_pool);
4960 mutex_enter(&buf_pool->zip_free_mutex);
4961
4962 for (uint x = 0; x <= BUF_BUDDY_SIZES; x++) {
4963@@ -1630,7 +1714,6 @@
4964 }
4965 }
4966
4967- //buf_pool_mutex_exit(buf_pool);
4968 mutex_exit(&buf_pool->zip_free_mutex);
4969
4970 if (status) {
4971@@ -1812,6 +1895,1773 @@
4972 STRUCT_FLD(flags, 0UL),
4973 };
4974
4975+/* Fields of the dynamic table INNODB_BUFFER_POOL_STATS. */
4976+static ST_FIELD_INFO i_s_innodb_buffer_stats_fields_info[] =
4977+{
4978+#define IDX_BUF_STATS_POOL_ID 0
4979+ {STRUCT_FLD(field_name, "POOL_ID"),
4980+ STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
4981+ STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
4982+ STRUCT_FLD(value, 0),
4983+ STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
4984+ STRUCT_FLD(old_name, ""),
4985+ STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
4986+
4987+#define IDX_BUF_STATS_POOL_SIZE 1
4988+ {STRUCT_FLD(field_name, "POOL_SIZE"),
4989+ STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
4990+ STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
4991+ STRUCT_FLD(value, 0),
4992+ STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
4993+ STRUCT_FLD(old_name, ""),
4994+ STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
4995+
4996+#define IDX_BUF_STATS_FREE_BUFFERS 2
4997+ {STRUCT_FLD(field_name, "FREE_BUFFERS"),
4998+ STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
4999+ STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
5000+ STRUCT_FLD(value, 0),
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches