mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge from 5.5
This commit is contained in:
@ -50,7 +50,6 @@
|
||||
#include "mysql.h"
|
||||
#include "mysql_version.h"
|
||||
#include "mysqld_error.h"
|
||||
#include "../sql/ha_ndbcluster_tables.h"
|
||||
|
||||
/* Exit codes */
|
||||
|
||||
|
@ -250,11 +250,14 @@ struct st_connection
|
||||
my_bool pending;
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
pthread_t tid;
|
||||
const char *cur_query;
|
||||
int cur_query_len;
|
||||
pthread_mutex_t mutex;
|
||||
pthread_cond_t cond;
|
||||
pthread_t tid;
|
||||
int command, result;
|
||||
pthread_mutex_t query_mutex;
|
||||
pthread_cond_t query_cond;
|
||||
pthread_mutex_t result_mutex;
|
||||
pthread_cond_t result_cond;
|
||||
int query_done;
|
||||
my_bool has_thread;
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
@ -710,71 +713,146 @@ void handle_no_error(struct st_command*);
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
|
||||
#define EMB_SEND_QUERY 1
|
||||
#define EMB_READ_QUERY_RESULT 2
|
||||
#define EMB_END_CONNECTION 3
|
||||
|
||||
/* attributes of the query thread */
|
||||
pthread_attr_t cn_thd_attrib;
|
||||
|
||||
|
||||
/*
|
||||
send_one_query executes query in separate thread, which is
|
||||
necessary in embedded library to run 'send' in proper way.
|
||||
This implementation doesn't handle errors returned
|
||||
by mysql_send_query. It's technically possible, though
|
||||
I don't see where it is needed.
|
||||
This procedure represents the connection and actually
|
||||
runs queries when in the EMBEDDED-SERVER mode.
|
||||
The run_query_normal() just sends request for running
|
||||
mysql_send_query and mysql_read_query_result() here.
|
||||
*/
|
||||
pthread_handler_t send_one_query(void *arg)
|
||||
|
||||
pthread_handler_t connection_thread(void *arg)
|
||||
{
|
||||
struct st_connection *cn= (struct st_connection*)arg;
|
||||
|
||||
mysql_thread_init();
|
||||
(void) mysql_send_query(&cn->mysql, cn->cur_query, cn->cur_query_len);
|
||||
while (cn->command != EMB_END_CONNECTION)
|
||||
{
|
||||
if (!cn->command)
|
||||
{
|
||||
pthread_mutex_lock(&cn->query_mutex);
|
||||
while (!cn->command)
|
||||
pthread_cond_wait(&cn->query_cond, &cn->query_mutex);
|
||||
pthread_mutex_unlock(&cn->query_mutex);
|
||||
}
|
||||
switch (cn->command)
|
||||
{
|
||||
case EMB_END_CONNECTION:
|
||||
goto end_thread;
|
||||
case EMB_SEND_QUERY:
|
||||
cn->result= mysql_send_query(&cn->mysql, cn->cur_query, cn->cur_query_len);
|
||||
break;
|
||||
case EMB_READ_QUERY_RESULT:
|
||||
cn->result= mysql_read_query_result(&cn->mysql);
|
||||
break;
|
||||
default:
|
||||
DBUG_ASSERT(0);
|
||||
}
|
||||
cn->command= 0;
|
||||
pthread_mutex_lock(&cn->result_mutex);
|
||||
cn->query_done= 1;
|
||||
pthread_cond_signal(&cn->result_cond);
|
||||
pthread_mutex_unlock(&cn->result_mutex);
|
||||
}
|
||||
|
||||
mysql_thread_end();
|
||||
pthread_mutex_lock(&cn->mutex);
|
||||
end_thread:
|
||||
cn->query_done= 1;
|
||||
pthread_cond_signal(&cn->cond);
|
||||
pthread_mutex_unlock(&cn->mutex);
|
||||
mysql_thread_end();
|
||||
pthread_exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int do_send_query(struct st_connection *cn, const char *q, int q_len,
|
||||
int flags)
|
||||
static void wait_query_thread_done(struct st_connection *con)
|
||||
{
|
||||
if (flags & QUERY_REAP_FLAG)
|
||||
DBUG_ASSERT(con->has_thread);
|
||||
if (!con->query_done)
|
||||
{
|
||||
pthread_mutex_lock(&con->result_mutex);
|
||||
while (!con->query_done)
|
||||
pthread_cond_wait(&con->result_cond, &con->result_mutex);
|
||||
pthread_mutex_unlock(&con->result_mutex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void signal_connection_thd(struct st_connection *cn, int command)
|
||||
{
|
||||
DBUG_ASSERT(cn->has_thread);
|
||||
cn->query_done= 0;
|
||||
cn->command= command;
|
||||
pthread_mutex_lock(&cn->query_mutex);
|
||||
pthread_cond_signal(&cn->query_cond);
|
||||
pthread_mutex_unlock(&cn->query_mutex);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Sometimes we try to execute queries when the connection is closed.
|
||||
It's done to make sure it was closed completely.
|
||||
So that if our connection is closed (cn->has_thread == 0), we just return
|
||||
the mysql_send_query() result which is an error in this case.
|
||||
*/
|
||||
|
||||
static int do_send_query(struct st_connection *cn, const char *q, int q_len)
|
||||
{
|
||||
if (!cn->has_thread)
|
||||
return mysql_send_query(&cn->mysql, q, q_len);
|
||||
|
||||
if (pthread_mutex_init(&cn->mutex, NULL) ||
|
||||
pthread_cond_init(&cn->cond, NULL))
|
||||
die("Error in the thread library");
|
||||
|
||||
cn->cur_query= q;
|
||||
cn->cur_query_len= q_len;
|
||||
cn->query_done= 0;
|
||||
if (pthread_create(&cn->tid, &cn_thd_attrib, send_one_query, (void*)cn))
|
||||
die("Cannot start new thread for query");
|
||||
|
||||
cn->has_thread= TRUE;
|
||||
signal_connection_thd(cn, EMB_SEND_QUERY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void wait_query_thread_end(struct st_connection *con)
|
||||
static int do_read_query_result(struct st_connection *cn)
|
||||
{
|
||||
if (!con->query_done)
|
||||
{
|
||||
pthread_mutex_lock(&con->mutex);
|
||||
while (!con->query_done)
|
||||
pthread_cond_wait(&con->cond, &con->mutex);
|
||||
pthread_mutex_unlock(&con->mutex);
|
||||
}
|
||||
if (con->has_thread)
|
||||
{
|
||||
pthread_join(con->tid, NULL);
|
||||
con->has_thread= FALSE;
|
||||
}
|
||||
DBUG_ASSERT(cn->has_thread);
|
||||
wait_query_thread_done(cn);
|
||||
signal_connection_thd(cn, EMB_READ_QUERY_RESULT);
|
||||
wait_query_thread_done(cn);
|
||||
|
||||
return cn->result;
|
||||
}
|
||||
|
||||
|
||||
static void emb_close_connection(struct st_connection *cn)
|
||||
{
|
||||
if (!cn->has_thread)
|
||||
return;
|
||||
wait_query_thread_done(cn);
|
||||
signal_connection_thd(cn, EMB_END_CONNECTION);
|
||||
pthread_join(cn->tid, NULL);
|
||||
cn->has_thread= FALSE;
|
||||
pthread_mutex_destroy(&cn->query_mutex);
|
||||
pthread_cond_destroy(&cn->query_cond);
|
||||
pthread_mutex_destroy(&cn->result_mutex);
|
||||
pthread_cond_destroy(&cn->result_cond);
|
||||
}
|
||||
|
||||
|
||||
static void init_connection_thd(struct st_connection *cn)
|
||||
{
|
||||
cn->query_done= 1;
|
||||
cn->command= 0;
|
||||
if (pthread_mutex_init(&cn->query_mutex, NULL) ||
|
||||
pthread_cond_init(&cn->query_cond, NULL) ||
|
||||
pthread_mutex_init(&cn->result_mutex, NULL) ||
|
||||
pthread_cond_init(&cn->result_cond, NULL) ||
|
||||
pthread_create(&cn->tid, &cn_thd_attrib, connection_thread, (void*)cn))
|
||||
die("Error in the thread library");
|
||||
cn->has_thread=TRUE;
|
||||
}
|
||||
|
||||
#else /*EMBEDDED_LIBRARY*/
|
||||
|
||||
#define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len)
|
||||
#define do_send_query(cn,q,q_len) mysql_send_query(&cn->mysql, q, q_len)
|
||||
#define do_read_query_result(cn) mysql_read_query_result(&cn->mysql)
|
||||
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
|
||||
@ -1117,6 +1195,9 @@ void close_connections()
|
||||
DBUG_ENTER("close_connections");
|
||||
for (--next_con; next_con >= connections; --next_con)
|
||||
{
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
emb_close_connection(next_con);
|
||||
#endif
|
||||
if (next_con->stmt)
|
||||
mysql_stmt_close(next_con->stmt);
|
||||
next_con->stmt= 0;
|
||||
@ -4919,7 +5000,7 @@ void do_close_connection(struct st_command *command)
|
||||
we need to check if the query's thread was finished and probably wait
|
||||
(embedded-server specific)
|
||||
*/
|
||||
wait_query_thread_end(con);
|
||||
emb_close_connection(con);
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
if (con->stmt)
|
||||
mysql_stmt_close(con->stmt);
|
||||
@ -5286,9 +5367,9 @@ void do_connect(struct st_command *command)
|
||||
}
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
con_slot->query_done= 1;
|
||||
con_slot->has_thread= FALSE;
|
||||
#endif
|
||||
init_connection_thd(con_slot);
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
|
||||
if (!mysql_init(&con_slot->mysql))
|
||||
die("Failed on mysql_init()");
|
||||
|
||||
@ -6845,21 +6926,13 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
||||
/*
|
||||
Send the query
|
||||
*/
|
||||
if (do_send_query(cn, query, query_len, flags))
|
||||
if (do_send_query(cn, query, query_len))
|
||||
{
|
||||
handle_error(command, mysql_errno(mysql), mysql_error(mysql),
|
||||
mysql_sqlstate(mysql), ds);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
/*
|
||||
Here we handle 'reap' command, so we need to check if the
|
||||
query's thread was finished and probably wait
|
||||
*/
|
||||
else if (flags & QUERY_REAP_FLAG)
|
||||
wait_query_thread_end(cn);
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
if (!(flags & QUERY_REAP_FLAG))
|
||||
{
|
||||
cn->pending= TRUE;
|
||||
@ -6872,7 +6945,7 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
||||
When on first result set, call mysql_read_query_result to retrieve
|
||||
answer to the query sent earlier
|
||||
*/
|
||||
if ((counter==0) && mysql_read_query_result(mysql))
|
||||
if ((counter==0) && do_read_query_result(cn))
|
||||
{
|
||||
handle_error(command, mysql_errno(mysql), mysql_error(mysql),
|
||||
mysql_sqlstate(mysql), ds);
|
||||
@ -8049,6 +8122,9 @@ int main(int argc, char **argv)
|
||||
ps_protocol_enabled= 1;
|
||||
|
||||
st_connection *con= connections;
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
init_connection_thd(con);
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
if (!( mysql_init(&con->mysql)))
|
||||
die("Failed in mysql_init()");
|
||||
if (opt_connect_timeout)
|
||||
|
@ -13,13 +13,30 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_COMPILER_IS_GNUCXX
|
||||
AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
IF(NOT DEFINED BUGGY_GCC_NO_DTRACE_MODULES)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1} --version
|
||||
OUTPUT_VARIABLE out)
|
||||
IF(out MATCHES "3.4.6")
|
||||
# This gcc causes crashes in dlopen() for dtraced shared libs,
|
||||
# while standard shipped with Solaris10 3.4.3 is ok
|
||||
SET(BUGGY_GCC_NO_DTRACE_MODULES 1 CACHE INTERNAL "")
|
||||
ELSE()
|
||||
SET(BUGGY_GCC_NO_DTRACE_MODULES 0 CACHE INTERNAL "")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Check if OS supports DTrace
|
||||
MACRO(CHECK_DTRACE)
|
||||
FIND_PROGRAM(DTRACE dtrace)
|
||||
MARK_AS_ADVANCED(DTRACE)
|
||||
|
||||
# On FreeBSD, dtrace does not handle userland tracing yet
|
||||
IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD"
|
||||
AND NOT BUGGY_GCC_NO_DTRACE_MODULES)
|
||||
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
|
||||
ENDIF()
|
||||
SET(HAVE_DTRACE ${ENABLE_DTRACE})
|
||||
@ -72,22 +89,6 @@ IF(ENABLE_DTRACE)
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_COMPILER_IS_GNUCXX
|
||||
AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
IF(NOT DEFINED BUGGY_GCC_NO_DTRACE_MODULES)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1} --version
|
||||
OUTPUT_VARIABLE out)
|
||||
IF(out MATCHES "3.4.6")
|
||||
# This gcc causes crashes in dlopen() for dtraced shared libs,
|
||||
# while standard shipped with Solaris10 3.4.3 is ok
|
||||
SET(BUGGY_GCC_NO_DTRACE_MODULES 1 CACHE INTERNAL "")
|
||||
ELSE()
|
||||
SET(BUGGY_GCC_NO_DTRACE_MODULES 0 CACHE INTERNAL "")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
FUNCTION(DTRACE_INSTRUMENT target)
|
||||
IF(BUGGY_GCC_NO_DTRACE_MODULES)
|
||||
GET_TARGET_PROPERTY(target_type ${target} TYPE)
|
||||
|
@ -1335,15 +1335,11 @@ void _db_doprnt_(const char *format,...)
|
||||
* This function is intended as a
|
||||
* vfprintf clone with consistent, platform independent output for
|
||||
* problematic formats like %p, %zd and %lld.
|
||||
* However: full functionality for my_vsnprintf has not been backported yet,
|
||||
* so code using "%g" or "%f" will have undefined behaviour.
|
||||
*/
|
||||
static void DbugVfprintf(FILE *stream, const char* format, va_list args)
|
||||
{
|
||||
char cvtbuf[1024];
|
||||
size_t len;
|
||||
/* Do not use my_vsnprintf, it does not support "%g". */
|
||||
len = vsnprintf(cvtbuf, sizeof(cvtbuf), format, args);
|
||||
(void) my_vsnprintf(cvtbuf, sizeof(cvtbuf), format, args);
|
||||
(void) fprintf(stream, "%s\n", cvtbuf);
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@
|
||||
<length modifier> can be 'l', 'll', or 'z'.
|
||||
|
||||
Supported formats are 's' (null pointer is accepted, printed as
|
||||
"(null)"), 'b' (extension, see below), 'c', 'd', 'u', 'x', 'o',
|
||||
"(null)"), 'b' (extension, see below), 'c', 'd', 'i', 'u', 'x', 'o',
|
||||
'X', 'p' (works as 0x%x).
|
||||
|
||||
Standard syntax for positional arguments $n is supported.
|
||||
|
@ -1,21 +1,17 @@
|
||||
# Copyright (C) 2001-2006 MySQL AB
|
||||
# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Library General Public
|
||||
# License as published by the Free Software Foundation; version 2
|
||||
# of the License.
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Library General Public License for more details.
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Library General Public
|
||||
# License along with this library; if not, write to the Free
|
||||
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
# MA 02111-1307, USA
|
||||
#
|
||||
# This file is public domain and comes with NO WARRANTY of any kind
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
MYSQLDATAdir = $(localstatedir)
|
||||
MYSQLSHAREdir = $(pkgdatadir)
|
||||
|
@ -481,6 +481,10 @@ int init_embedded_server(int argc, char **argv, char **groups)
|
||||
char *fake_argv[] = { (char *)"", 0 };
|
||||
const char *fake_groups[] = { "server", "embedded", 0 };
|
||||
my_bool acl_error;
|
||||
|
||||
if (my_thread_init())
|
||||
return 1;
|
||||
|
||||
if (argc)
|
||||
{
|
||||
argcp= &argc;
|
||||
|
@ -13,6 +13,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
IF(INSTALL_MYSQLTESTDIR)
|
||||
INSTALL(
|
||||
DIRECTORY .
|
||||
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
||||
@ -28,6 +29,7 @@ INSTALL(
|
||||
PATTERN "*.am" EXCLUDE
|
||||
PATTERN "*.in" EXCLUDE
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
||||
@ -48,9 +50,11 @@ IF(UNIX)
|
||||
./mysql-test-run.pl mysql-test-run
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run
|
||||
DESTINATION ${INSTALL_MYSQLTESTDIR})
|
||||
IF(INSTALL_MYSQLTESTDIR)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run
|
||||
DESTINATION ${INSTALL_MYSQLTESTDIR})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
|
@ -92,5 +92,3 @@ parts.partition_mgm_lc1_ndb # joro : NDB tests marked as experiment
|
||||
parts.partition_mgm_lc2_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
||||
parts.partition_syntax_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
||||
parts.partition_value_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
||||
main.mysqlhotcopy_myisam # horst: due to bug#54129
|
||||
main.mysqlhotcopy_archive # horst: due to bug#54129
|
||||
|
@ -52,13 +52,19 @@ inc $count;
|
||||
FLUSH TABLES;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
insert delayed into t1 values (null),(null),(null),(null);
|
||||
RESET MASTER;
|
||||
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||
inc $count; inc $count; inc $count; inc $count;
|
||||
--source include/wait_until_rows_count.inc
|
||||
|
||||
insert delayed into t1 values (null),(null),(400),(null);
|
||||
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
||||
inc $count; inc $count; inc $count; inc $count;
|
||||
--source include/wait_until_rows_count.inc
|
||||
|
||||
if (`SELECT @@SESSION.BINLOG_FORMAT = 'STATEMENT'`) {
|
||||
FLUSH TABLES;
|
||||
source include/show_binlog_events.inc;
|
||||
}
|
||||
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
@ -338,10 +338,21 @@ if ($CRC_RET_stmt_sidef) {
|
||||
SHOW BINLOG EVENTS;
|
||||
--die Warnings printed
|
||||
}
|
||||
# The first event is format_description, the second is
|
||||
# Query_event('BEGIN'), and the third should be our Table_map.
|
||||
--let $event_type= query_get_value(SHOW BINLOG EVENTS, Event_type, 3)
|
||||
if (`SELECT '$event_type' != 'Table_map'`) {
|
||||
# The first event is format_description, the second is
|
||||
# Query_event('BEGIN'), and the third should be our Query
|
||||
# for 'INSERT DELAYED' unsafe_type 3, which is safe after
|
||||
# the fix of bug#54579.
|
||||
if (`SELECT $unsafe_type = 3 AND '$event_type' != 'Query'`) {
|
||||
--enable_query_log
|
||||
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Query'. ********
|
||||
SHOW BINLOG EVENTS;
|
||||
--die Wrong events in binlog.
|
||||
}
|
||||
# The first event is format_description, the second is
|
||||
# Query_event('BEGIN'), and the third should be our Table_map
|
||||
# for unsafe statement.
|
||||
if (`SELECT $unsafe_type != 3 AND '$event_type' != 'Table_map'`) {
|
||||
--enable_query_log
|
||||
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
|
||||
SHOW BINLOG EVENTS;
|
||||
|
@ -43,5 +43,11 @@ log-bin=mysqld-bin
|
||||
|
||||
# Run tests with the performance schema instrumentation
|
||||
loose-enable-performance-schema
|
||||
# Run tests with a small number of instrumented objects
|
||||
# to limit memory consumption with MTR
|
||||
loose-performance-schema-max-mutex-instances=10000
|
||||
loose-performance-schema-max-rwlock-instances=10000
|
||||
loose-performance-schema-max-table-instances=500
|
||||
loose-performance-schema-max-table-handles=1000
|
||||
|
||||
binlog-direct-non-transactional-updates
|
||||
|
@ -1200,6 +1200,8 @@ set time_zone= @@global.time_zone;
|
||||
select str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE;
|
||||
str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1411 Incorrect datetime value: '10:00 PM' for function str_to_date
|
||||
create table t1 (field DATE);
|
||||
insert into t1 values ('2006-11-06');
|
||||
select * from t1 where field < '2006-11-06 04:08:36.0';
|
||||
|
@ -556,9 +556,13 @@ DROP TABLE IF EXISTS t1;
|
||||
SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE;
|
||||
STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1411 Incorrect datetime value: '10:00 PM' for function str_to_date
|
||||
SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE;
|
||||
STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1411 Incorrect datetime value: '10:00 PM' for function str_to_date
|
||||
SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
|
||||
"1997-12-31 23:59:59" + INTERVAL 1 SECOND
|
||||
1998-01-01 00:00:00
|
||||
|
@ -4171,9 +4171,10 @@ str_to_date('2007-10-00','%Y-%m-%d') between '2007/09/01 00:00:00'
|
||||
set SQL_MODE=TRADITIONAL;
|
||||
select str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34';
|
||||
str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34'
|
||||
0
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect datetime value: '2007-10-00 12:34'
|
||||
Warning 1411 Incorrect datetime value: '2007-10-00 12:34' for function str_to_date
|
||||
select str_to_date('2007-10-01 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34';
|
||||
str_to_date('2007-10-01 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34'
|
||||
0
|
||||
@ -4181,17 +4182,16 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect datetime value: '2007-10-00 12:34'
|
||||
select str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-01 12:34';
|
||||
str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-01 12:34'
|
||||
0
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect datetime value: '2007-10-00 12:34:00'
|
||||
Warning 1411 Incorrect datetime value: '2007-10-00 12:34' for function str_to_date
|
||||
select str_to_date('2007-10-00','%Y-%m-%d') between '2007/09/01'
|
||||
and '2007/10/20';
|
||||
str_to_date('2007-10-00','%Y-%m-%d') between '2007/09/01'
|
||||
and '2007/10/20'
|
||||
0
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Incorrect datetime value: '2007-10-00' for column '2007/09/01' at row 1
|
||||
Warning 1292 Incorrect datetime value: '2007-10-00' for column '2007/10/20' at row 1
|
||||
Warning 1411 Incorrect datetime value: '2007-10-00' for function str_to_date
|
||||
set SQL_MODE=DEFAULT;
|
||||
select str_to_date('2007-10-00','%Y-%m-%d') between '' and '2007/10/20';
|
||||
str_to_date('2007-10-00','%Y-%m-%d') between '' and '2007/10/20'
|
||||
|
@ -206,12 +206,11 @@ INSERT INTO t1 (col1) VALUES (STR_TO_DATE('15.10.2004','%d.%m.%Y'));
|
||||
INSERT INTO t1 (col2) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
|
||||
INSERT INTO t1 (col3) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'col1' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '31.10.0000 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect date value: '2004-00-31 15:30:00' for column 'col1' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '31.0.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect date value: '2004-10-00 15:30:00' for column 'col1' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '0.10.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect date value: '2004-09-31 15:30:00' for column 'col1' at row 1
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
@ -221,12 +220,13 @@ ERROR 22007: Incorrect date value: '2003-02-29 15:30:00' for column 'col1' at ro
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR HY000: Incorrect datetime value: '15.13.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||
ERROR 22007: Incorrect date value: '0000-00-00' for column 'col1' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '00.00.0000' for function str_to_date
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR HY000: Incorrect datetime value: '31.10.0000 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect datetime value: '2004-00-31 15:30:00' for column 'col2' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '31.0.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect datetime value: '2004-10-00 15:30:00' for column 'col2' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '0.10.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect datetime value: '2004-09-31 15:30:00' for column 'col2' at row 1
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
@ -236,13 +236,13 @@ ERROR 22007: Incorrect datetime value: '2003-02-29 15:30:00' for column 'col2' a
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR HY000: Incorrect datetime value: '15.13.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||
ERROR 22007: Incorrect datetime value: '0000-00-00' for column 'col2' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '00.00.0000' for function str_to_date
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect datetime value: '0000-10-31 15:30:00' for column 'col3' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '31.10.0000 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect datetime value: '2004-00-31 15:30:00' for column 'col3' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '31.0.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect datetime value: '2004-10-00 15:30:00' for column 'col3' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '0.10.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR 22007: Incorrect datetime value: '2004-09-31 15:30:00' for column 'col3' at row 1
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
@ -252,7 +252,7 @@ ERROR 22007: Incorrect datetime value: '2003-02-29 15:30:00' for column 'col3' a
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
ERROR HY000: Incorrect datetime value: '15.13.2004 15.30' for function str_to_date
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||
ERROR 22007: Incorrect datetime value: '0000-00-00' for column 'col3' at row 1
|
||||
ERROR HY000: Incorrect datetime value: '00.00.0000' for function str_to_date
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (col1 date, col2 datetime, col3 timestamp);
|
||||
INSERT INTO t1 (col1) VALUES (CAST('2004-10-15' AS DATE));
|
||||
@ -1108,6 +1108,9 @@ Warnings:
|
||||
Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
|
||||
Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
|
||||
Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
|
||||
Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
|
||||
Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
|
||||
Warning 1411 Incorrect datetime value: '2004.12.12 10:22:61' for function str_to_date
|
||||
drop table t1;
|
||||
create table t1 (col1 char(3), col2 integer);
|
||||
insert into t1 (col1) values (cast(1000 as char(3)));
|
||||
|
@ -655,5 +655,30 @@ Note 1003 select `test`.`t1`.`Id` AS `Id`,`test`.`t1`.`AtTime` AS `AtTime` from
|
||||
DROP TABLE t1;
|
||||
SET NAMES latin1;
|
||||
#
|
||||
# Bug#56271: Wrong comparison result with STR_TO_DATE function
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
`year` int(4) NOT NULL,
|
||||
`month` int(2) NOT NULL
|
||||
);
|
||||
INSERT INTO t1 VALUES (2010,3),(2010,4),(2009,8),(2008,9);
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE STR_TO_DATE(CONCAT_WS('/01/',`month`,`year`), '%m/%d/%Y') >=
|
||||
STR_TO_DATE('1/1/2010', '%m/%d/%Y');
|
||||
year month
|
||||
2010 3
|
||||
2010 4
|
||||
create table t2(f1 datetime primary key);
|
||||
insert into t2 select STR_TO_DATE(CONCAT_WS('/01/',`month`,`year`), '%m/%d/%Y') from t1;
|
||||
select * from t2 where f1=STR_TO_DATE('4/1/2010', '%m/%d/%Y');
|
||||
f1
|
||||
2010-04-01 00:00:00
|
||||
t2 should be const
|
||||
explain select * from t2 where f1=STR_TO_DATE('4/1/2010', '%m/%d/%Y');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 const PRIMARY PRIMARY 8 const 1 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
|
@ -1908,4 +1908,16 @@ group by PAY.id + 1;
|
||||
mult v_net_with_discount v_total
|
||||
1.0000 27.18 27.180000
|
||||
DROP TABLE currencies, payments, sub_tasks;
|
||||
#
|
||||
# BUG#52171: distinct aggregates on unsigned decimal fields trigger assertions
|
||||
#
|
||||
CREATE TABLE t1 (a DECIMAL(4,4) UNSIGNED);
|
||||
INSERT INTO t1 VALUES (0);
|
||||
SELECT AVG(DISTINCT a) FROM t1;
|
||||
AVG(DISTINCT a)
|
||||
0.00000000
|
||||
SELECT SUM(DISTINCT a) FROM t1;
|
||||
SUM(DISTINCT a)
|
||||
0.0000
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
@ -1267,8 +1267,9 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||
insert delayed into t1 values (null),(null),(null),(null);
|
||||
insert delayed into t1 values (null),(null),(400),(null);
|
||||
RESET MASTER;
|
||||
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
||||
select * from t1;
|
||||
a
|
||||
207
|
||||
|
@ -20,12 +20,21 @@ master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (300)
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||
insert delayed into t1 values (null),(null),(null),(null);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
insert delayed into t1 values (null),(null),(400),(null);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
RESET MASTER;
|
||||
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
||||
FLUSH TABLES;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=301
|
||||
master-bin.000001 # Query # # use `test`; insert /* before delayed */ /* after delayed */ into t1 values (null),(null),(null),(null)
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=305
|
||||
master-bin.000001 # Query # # use `test`; insert /*! */ into t1 values (null),(null),(400),(null)
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||
select * from t1;
|
||||
a
|
||||
207
|
||||
|
@ -758,8 +758,9 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||
insert delayed into t1 values (null),(null),(null),(null);
|
||||
insert delayed into t1 values (null),(null),(400),(null);
|
||||
RESET MASTER;
|
||||
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
||||
select * from t1;
|
||||
a
|
||||
207
|
||||
|
@ -862,65 +862,51 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
||||
* Invoke statement so that return value is dicarded: expect no warning.
|
||||
SELECT * FROM data_table LIMIT 1;
|
||||
|
||||
==== Testing INSERT DELAYED unsafeness ====
|
||||
==== Testing INSERT DELAYED safeness after BUG#54579 is fixed ====
|
||||
|
||||
Invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); RETURN 0; END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO t1 SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
|
||||
Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO t2 SELECT func_sidef_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP FUNCTION func_sidef_2;
|
||||
|
||||
Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE PROCEDURE proc_2() BEGIN INSERT INTO t1 SELECT func_sidef_1(); INSERT INTO ta2 VALUES (47); END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
CALL proc_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP PROCEDURE proc_2;
|
||||
|
||||
Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO trigger_table_2 VALUES (1);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP VIEW view_sidef_2;
|
||||
|
||||
Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||
PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
EXECUTE prep_2;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP PREPARE prep_2;
|
||||
@ -928,49 +914,39 @@ DROP FUNCTION func_sidef_1;
|
||||
|
||||
Invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE PROCEDURE proc_1() BEGIN INSERT DELAYED INTO t0 VALUES (1), (2); INSERT INTO ta1 VALUES (47); END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
CALL proc_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
|
||||
Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO t2 SELECT func_sidef_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP FUNCTION func_sidef_2;
|
||||
|
||||
Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE PROCEDURE proc_2() BEGIN CALL proc_1(); INSERT INTO ta2 VALUES (47); END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
CALL proc_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP PROCEDURE proc_2;
|
||||
|
||||
Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO trigger_table_2 VALUES (1);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP TRIGGER trig_2;
|
||||
|
||||
Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||
PREPARE prep_2 FROM "CALL proc_1()";
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
EXECUTE prep_2;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP PREPARE prep_2;
|
||||
@ -978,49 +954,39 @@ DROP PROCEDURE proc_1;
|
||||
|
||||
Invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO trigger_table_1 VALUES (1);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
|
||||
Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO t2 SELECT func_sidef_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP FUNCTION func_sidef_2;
|
||||
|
||||
Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE PROCEDURE proc_2() BEGIN INSERT INTO trigger_table_1 VALUES (1); INSERT INTO ta2 VALUES (47); END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
CALL proc_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP PROCEDURE proc_2;
|
||||
|
||||
Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT INTO trigger_table_2 VALUES (1);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP TRIGGER trig_2;
|
||||
|
||||
Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||
PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
EXECUTE prep_2;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP PREPARE prep_2;
|
||||
@ -1028,19 +994,15 @@ DROP TRIGGER trig_1;
|
||||
|
||||
Invoking prepared statement prep_1 invoking unsafe INSERT DELAYED statement.
|
||||
PREPARE prep_1 FROM "INSERT DELAYED INTO t0 VALUES (1), (2)";
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
EXECUTE prep_1;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
DROP PREPARE prep_1;
|
||||
|
||||
Invoking unsafe INSERT DELAYED statement.
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
* binlog_format = STATEMENT: expect 0 warnings.
|
||||
INSERT DELAYED INTO t0 VALUES (1), (2);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||
|
||||
@ -1798,11 +1760,10 @@ SELECT COUNT(*) FROM mysql.general_log;
|
||||
|
||||
Invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||
CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; RETURN 0; END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO t1 SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1813,11 +1774,10 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
||||
|
||||
Invoking function func_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO t2 SELECT func_sidef_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1829,11 +1789,10 @@ DROP FUNCTION func_sidef_2;
|
||||
|
||||
Invoking procedure proc_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||
CREATE PROCEDURE proc_2() BEGIN INSERT INTO t1 SELECT func_sidef_1(); INSERT INTO ta2 VALUES (47); END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
CALL proc_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1845,11 +1804,10 @@ DROP PROCEDURE proc_2;
|
||||
|
||||
Invoking trigger trig_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO trigger_table_2 VALUES (1);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1863,17 +1821,15 @@ Invoking view view_sidef_2 invoking function func_sidef_1 invoking statement tha
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1885,11 +1841,10 @@ DROP VIEW view_sidef_2;
|
||||
|
||||
Invoking prepared statement prep_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||
PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
EXECUTE prep_2;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1902,11 +1857,10 @@ DROP FUNCTION func_sidef_1;
|
||||
|
||||
Invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||
CREATE PROCEDURE proc_1() BEGIN INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; INSERT INTO ta1 VALUES (47); END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
CALL proc_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1917,11 +1871,10 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
||||
|
||||
Invoking function func_sidef_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO t2 SELECT func_sidef_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1933,11 +1886,10 @@ DROP FUNCTION func_sidef_2;
|
||||
|
||||
Invoking procedure proc_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||
CREATE PROCEDURE proc_2() BEGIN CALL proc_1(); INSERT INTO ta2 VALUES (47); END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
CALL proc_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1949,11 +1901,10 @@ DROP PROCEDURE proc_2;
|
||||
|
||||
Invoking trigger trig_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO trigger_table_2 VALUES (1);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1965,11 +1916,10 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking prepared statement prep_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||
PREPARE prep_2 FROM "CALL proc_1()";
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
EXECUTE prep_2;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1982,11 +1932,10 @@ DROP PROCEDURE proc_1;
|
||||
|
||||
Invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||
CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO trigger_table_1 VALUES (1);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -1997,11 +1946,10 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
||||
|
||||
Invoking function func_sidef_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO t2 SELECT func_sidef_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -2013,11 +1961,10 @@ DROP FUNCTION func_sidef_2;
|
||||
|
||||
Invoking procedure proc_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||
CREATE PROCEDURE proc_2() BEGIN INSERT INTO trigger_table_1 VALUES (1); INSERT INTO ta2 VALUES (47); END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
CALL proc_2();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -2029,11 +1976,10 @@ DROP PROCEDURE proc_2;
|
||||
|
||||
Invoking trigger trig_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT INTO trigger_table_2 VALUES (1);
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -2045,11 +1991,10 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking prepared statement prep_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||
PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
EXECUTE prep_2;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -2062,11 +2007,10 @@ DROP TRIGGER trig_1;
|
||||
|
||||
Invoking prepared statement prep_1 invoking statement that is unsafe in many ways.
|
||||
PREPARE prep_1 FROM "INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1";
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
EXECUTE prep_1;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -2077,11 +2021,10 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
||||
DROP PREPARE prep_1;
|
||||
|
||||
Invoking statement that is unsafe in many ways.
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
* binlog_format = STATEMENT: expect 6 warnings.
|
||||
INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||
@ -2554,8 +2497,7 @@ func_limit()
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # use `test`; INSERT DELAYED INTO t1 VALUES (1), (2)
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
|
@ -179,13 +179,13 @@ while (`SELECT $unsafe_type < 9`) {
|
||||
}
|
||||
|
||||
if (`SELECT $unsafe_type = 3`) {
|
||||
--echo ==== Testing INSERT DELAYED unsafeness ====
|
||||
--echo ==== Testing INSERT DELAYED safeness after BUG#54579 is fixed ====
|
||||
--let $desc_0= unsafe INSERT DELAYED statement
|
||||
--let $stmt_sidef_0= INSERT DELAYED INTO t0 VALUES (1), (2)
|
||||
--let $value_0=
|
||||
--let $sel_sidef_0=
|
||||
--let $sel_retval_0=
|
||||
--let $CRC_ARG_expected_number_of_warnings= 1
|
||||
--let $CRC_ARG_expected_number_of_warnings= 0
|
||||
}
|
||||
|
||||
if (`SELECT $unsafe_type = 4`) {
|
||||
@ -227,7 +227,7 @@ while (`SELECT $unsafe_type < 9`) {
|
||||
--let $value_0=
|
||||
--let $sel_sidef_0=
|
||||
--let $sel_retval_0=
|
||||
--let $CRC_ARG_expected_number_of_warnings= 7
|
||||
--let $CRC_ARG_expected_number_of_warnings= 6
|
||||
}
|
||||
|
||||
if (`SELECT $unsafe_type = 8`) {
|
||||
|
@ -18,7 +18,7 @@
|
||||
#
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL_UPGRADE --skip-verbose > $out_file 2> $err_file
|
||||
--exec $MYSQL_UPGRADE --skip-verbose --force > $out_file 2> $err_file
|
||||
|
||||
# Verify that mysql_upgrade complained about the performance_schema
|
||||
--cat_file $err_file
|
||||
|
34
mysql-test/suite/perfschema/r/checksum.result
Normal file
34
mysql-test/suite/perfschema/r/checksum.result
Normal file
@ -0,0 +1,34 @@
|
||||
checksum table performance_schema.COND_INSTANCES;
|
||||
checksum table performance_schema.EVENTS_WAITS_CURRENT;
|
||||
checksum table performance_schema.EVENTS_WAITS_HISTORY;
|
||||
checksum table performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||
checksum table performance_schema.FILE_INSTANCES;
|
||||
checksum table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||
checksum table performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||
checksum table performance_schema.MUTEX_INSTANCES;
|
||||
checksum table performance_schema.PERFORMANCE_TIMERS;
|
||||
checksum table performance_schema.RWLOCK_INSTANCES;
|
||||
checksum table performance_schema.SETUP_CONSUMERS;
|
||||
checksum table performance_schema.SETUP_INSTRUMENTS;
|
||||
checksum table performance_schema.SETUP_TIMERS;
|
||||
checksum table performance_schema.THREADS;
|
||||
checksum table performance_schema.COND_INSTANCES extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_CURRENT extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_HISTORY extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_HISTORY_LONG extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME extended;
|
||||
checksum table performance_schema.FILE_INSTANCES extended;
|
||||
checksum table performance_schema.FILE_SUMMARY_BY_EVENT_NAME extended;
|
||||
checksum table performance_schema.FILE_SUMMARY_BY_INSTANCE extended;
|
||||
checksum table performance_schema.MUTEX_INSTANCES extended;
|
||||
checksum table performance_schema.PERFORMANCE_TIMERS extended;
|
||||
checksum table performance_schema.RWLOCK_INSTANCES extended;
|
||||
checksum table performance_schema.SETUP_CONSUMERS extended;
|
||||
checksum table performance_schema.SETUP_INSTRUMENTS extended;
|
||||
checksum table performance_schema.SETUP_TIMERS extended;
|
||||
checksum table performance_schema.THREADS extended;
|
@ -116,18 +116,10 @@ where name like "wait/synch/mutex/sql/LOCK_rpl_status";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOG_INFO::lock";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/Query_cache::structure_guard_mutex";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/Event_scheduler::LOCK_scheduler_state";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_event_metadata";
|
||||
count(name)
|
||||
1
|
||||
@ -144,6 +136,10 @@ where name like "wait/synch/mutex/sql/Cversion_lock";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_audit_mask";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_xid_cache";
|
||||
count(name)
|
||||
1
|
||||
@ -152,10 +148,6 @@ where name like "wait/synch/mutex/sql/LOCK_plugin";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_gdl";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/tz_LOCK";
|
||||
count(name)
|
||||
1
|
||||
@ -212,10 +204,6 @@ where name like "wait/synch/cond/sql/Query_cache::COND_cache_status_changed";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from COND_INSTANCES
|
||||
where name like "wait/synch/cond/sql/Event_scheduler::COND_state";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from COND_INSTANCES
|
||||
where name like "wait/synch/cond/sql/COND_queue_state";
|
||||
count(name)
|
||||
1
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 0
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 0
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 0
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -47,9 +47,9 @@ performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 0
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 0
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 0
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 0
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 0
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
||||
performance_schema_max_file_handles 32768
|
||||
performance_schema_max_file_instances 10000
|
||||
performance_schema_max_mutex_classes 200
|
||||
performance_schema_max_mutex_instances 1000000
|
||||
performance_schema_max_mutex_instances 10000
|
||||
performance_schema_max_rwlock_classes 30
|
||||
performance_schema_max_rwlock_instances 1000000
|
||||
performance_schema_max_table_handles 100000
|
||||
performance_schema_max_table_instances 50000
|
||||
performance_schema_max_rwlock_instances 10000
|
||||
performance_schema_max_table_handles 1000
|
||||
performance_schema_max_table_instances 500
|
||||
performance_schema_max_thread_classes 50
|
||||
performance_schema_max_thread_instances 1000
|
||||
show engine PERFORMANCE_SCHEMA status;
|
||||
|
64
mysql-test/suite/perfschema/t/checksum.test
Normal file
64
mysql-test/suite/perfschema/t/checksum.test
Normal file
@ -0,0 +1,64 @@
|
||||
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||
|
||||
# Tests for PERFORMANCE_SCHEMA
|
||||
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_perfschema.inc
|
||||
|
||||
#
|
||||
# The checksum value itself is random (data is volatile),
|
||||
# just testing that this does not crash
|
||||
#
|
||||
--disable_result_log
|
||||
|
||||
checksum table performance_schema.COND_INSTANCES;
|
||||
checksum table performance_schema.EVENTS_WAITS_CURRENT;
|
||||
checksum table performance_schema.EVENTS_WAITS_HISTORY;
|
||||
checksum table performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||
checksum table performance_schema.FILE_INSTANCES;
|
||||
checksum table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||
checksum table performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||
checksum table performance_schema.MUTEX_INSTANCES;
|
||||
checksum table performance_schema.PERFORMANCE_TIMERS;
|
||||
checksum table performance_schema.RWLOCK_INSTANCES;
|
||||
checksum table performance_schema.SETUP_CONSUMERS;
|
||||
checksum table performance_schema.SETUP_INSTRUMENTS;
|
||||
checksum table performance_schema.SETUP_TIMERS;
|
||||
checksum table performance_schema.THREADS;
|
||||
|
||||
checksum table performance_schema.COND_INSTANCES extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_CURRENT extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_HISTORY extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_HISTORY_LONG extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME extended;
|
||||
checksum table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME extended;
|
||||
checksum table performance_schema.FILE_INSTANCES extended;
|
||||
checksum table performance_schema.FILE_SUMMARY_BY_EVENT_NAME extended;
|
||||
checksum table performance_schema.FILE_SUMMARY_BY_INSTANCE extended;
|
||||
checksum table performance_schema.MUTEX_INSTANCES extended;
|
||||
checksum table performance_schema.PERFORMANCE_TIMERS extended;
|
||||
checksum table performance_schema.RWLOCK_INSTANCES extended;
|
||||
checksum table performance_schema.SETUP_CONSUMERS extended;
|
||||
checksum table performance_schema.SETUP_INSTRUMENTS extended;
|
||||
checksum table performance_schema.SETUP_TIMERS extended;
|
||||
checksum table performance_schema.THREADS extended;
|
||||
|
||||
--enable_result_log
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -10,8 +10,8 @@
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||
|
||||
# Tests for PERFORMANCE_SCHEMA
|
||||
|
||||
@ -43,10 +43,6 @@ select count(name) from MUTEX_INSTANCES
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/mysys/THR_LOCK_myisam";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/mysys/THR_LOCK_myisam_log";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/mysys/THR_LOCK_heap";
|
||||
|
||||
@ -83,11 +79,6 @@ select count(name) from MUTEX_INSTANCES
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_delayed_insert";
|
||||
|
||||
# Named LOCK_uuid_short in 6.0 only
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/LOCK_uuid_short";
|
||||
|
||||
# Named LOCK_uuid_generator in 5.5, LOCK_uuid_short in 6.0
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_uuid_generator";
|
||||
|
||||
@ -130,14 +121,16 @@ select count(name) from MUTEX_INSTANCES
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_rpl_status";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOG_INFO::lock";
|
||||
# LOG_INFO object are created on demand, and are not global.
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/LOG_INFO::lock";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/Query_cache::structure_guard_mutex";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/Event_scheduler::LOCK_scheduler_state";
|
||||
# The event scheduler may be disabled
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/Event_scheduler::LOCK_scheduler_state";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_event_metadata";
|
||||
@ -148,16 +141,11 @@ select count(name) from MUTEX_INSTANCES
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_user_locks";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/LOCK_mdl";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/Cversion_lock";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/LOCK_audit_mask";
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_audit_mask";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_xid_cache";
|
||||
@ -165,28 +153,13 @@ select count(name) from MUTEX_INSTANCES
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_plugin";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_gdl";
|
||||
# Not a global variable, may be destroyed already.
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/LOCK_gdl";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/tz_LOCK";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/slave_start";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/BML_class::THR_LOCK_BML";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/BML_class::THR_LOCK_BML_active";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from MUTEX_INSTANCES
|
||||
# where name like "wait/synch/mutex/sql/BML_class::THR_LOCK_BML_get";
|
||||
|
||||
# Verify that these global rwlocks have been properly initilized in sql
|
||||
|
||||
select count(name) from RWLOCK_INSTANCES
|
||||
@ -230,25 +203,10 @@ select count(name) from COND_INSTANCES
|
||||
select count(name) from COND_INSTANCES
|
||||
where name like "wait/synch/cond/sql/Query_cache::COND_cache_status_changed";
|
||||
|
||||
select count(name) from COND_INSTANCES
|
||||
where name like "wait/synch/cond/sql/Event_scheduler::COND_state";
|
||||
# The event scheduler may be disabled
|
||||
# select count(name) from COND_INSTANCES
|
||||
# where name like "wait/synch/cond/sql/Event_scheduler::COND_state";
|
||||
|
||||
select count(name) from COND_INSTANCES
|
||||
where name like "wait/synch/cond/sql/COND_queue_state";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from COND_INSTANCES
|
||||
# where name like "wait/synch/cond/sql/COND_mdl";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from COND_INSTANCES
|
||||
# where name like "wait/synch/cond/sql/BML_class::COND_BML";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from COND_INSTANCES
|
||||
# where name like "wait/synch/cond/sql/BML_class::COND_BML_registered";
|
||||
|
||||
# Does not exist in mysql 5.5, 6.0 only
|
||||
# select count(name) from COND_INSTANCES
|
||||
# where name like "wait/synch/cond/sql/BML_class::COND_BML_release";
|
||||
|
||||
|
@ -11,7 +11,6 @@
|
||||
##############################################################################
|
||||
|
||||
rpl_failed_optimize : WL#4284: Can't optimize table used by a pending transaction (there is metadata lock on the table).
|
||||
rpl_plugin_load : Bug#55966 2010-08-13 alik "plugin" tests fail in 5.5
|
||||
rpl_read_only : WL#4284: Setting Read only won't succeed until all metadata locks are released.
|
||||
rpl_row_create_table : Bug#51574 2010-02-27 andrei failed different way than earlier with bug#45576
|
||||
rpl_spec_variables : BUG#47661 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux
|
||||
|
@ -11,10 +11,9 @@
|
||||
##############################################################################
|
||||
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
||||
lowercase_table3 : Bug#54845 2010-06-30 alik main.lowercase_table3 on Mac OSX
|
||||
mysqlhotcopy_myisam : Bug#54129 2010-08-31 alik mysqlhotcopy* fails
|
||||
mysqlhotcopy_archive : Bug#54129 2010-08-31 alik mysqlhotcopy* fails
|
||||
partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings
|
||||
plugin : Bug#55966 2010-08-13 alik "plugin" tests fail in 5.5
|
||||
plugin_load : Bug#55966 2010-08-13 alik "plugin" tests fail in 5.5
|
||||
plugin_not_embedded : Bug#55966 2010-08-13 alik "plugin" tests fail in 5.5
|
||||
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
|
||||
sp_sync : Bug#48157 2010-02-06 5.5-m3 demands a differnt solution
|
||||
ctype_utf8mb4_ndb : Bug#55799, Bug#51907, disabled by Konstantin 2010-08-06
|
||||
|
@ -7,6 +7,7 @@
|
||||
# changed (see explanation in log_state.test)
|
||||
let $fixed_bug38124 = 0;
|
||||
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
# Several subtests modify global variables. Save the initial values only here,
|
||||
|
@ -192,11 +192,11 @@ INSERT INTO t1 (col3) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
|
||||
# All test cases expected to fail should return
|
||||
# SQLSTATE 22007 <invalid date value>
|
||||
|
||||
--error 1411
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
@ -206,18 +206,18 @@ INSERT INTO t1 (col1) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1411
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||
|
||||
## Test INSERT with STR_TO_DATE into DATETIME
|
||||
# All test cases expected to fail should return
|
||||
# SQLSTATE 22007 <invalid datetime value>
|
||||
|
||||
--error 1411
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
@ -227,18 +227,18 @@ INSERT INTO t1 (col2) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1411
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||
|
||||
## Test INSERT with STR_TO_DATE into TIMESTAMP
|
||||
# All test cases expected to fail should return
|
||||
# SQLSTATE 22007 <invalid datetime value>
|
||||
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
@ -248,7 +248,7 @@ INSERT INTO t1 (col3) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1411
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||
--error 1292
|
||||
--error 1411
|
||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||
|
||||
drop table t1;
|
||||
|
@ -461,6 +461,29 @@ EXPLAIN EXTENDED SELECT * FROM t1 FORCE INDEX(attime) WHERE AtTime = '2010-02-22
|
||||
DROP TABLE t1;
|
||||
SET NAMES latin1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#56271: Wrong comparison result with STR_TO_DATE function
|
||||
--echo #
|
||||
CREATE TABLE t1 (
|
||||
`year` int(4) NOT NULL,
|
||||
`month` int(2) NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES (2010,3),(2010,4),(2009,8),(2008,9);
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE STR_TO_DATE(CONCAT_WS('/01/',`month`,`year`), '%m/%d/%Y') >=
|
||||
STR_TO_DATE('1/1/2010', '%m/%d/%Y');
|
||||
|
||||
create table t2(f1 datetime primary key);
|
||||
insert into t2 select STR_TO_DATE(CONCAT_WS('/01/',`month`,`year`), '%m/%d/%Y') from t1;
|
||||
select * from t2 where f1=STR_TO_DATE('4/1/2010', '%m/%d/%Y');
|
||||
--echo t2 should be const
|
||||
explain select * from t2 where f1=STR_TO_DATE('4/1/2010', '%m/%d/%Y');
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.5 tests
|
||||
--echo #
|
||||
|
@ -1509,5 +1509,14 @@ group by PAY.id + 1;
|
||||
|
||||
DROP TABLE currencies, payments, sub_tasks;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#52171: distinct aggregates on unsigned decimal fields trigger assertions
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a DECIMAL(4,4) UNSIGNED);
|
||||
INSERT INTO t1 VALUES (0);
|
||||
SELECT AVG(DISTINCT a) FROM t1;
|
||||
SELECT SUM(DISTINCT a) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -745,3 +745,38 @@
|
||||
Memcheck:Addr1
|
||||
fun:buf_buddy_relocate
|
||||
}
|
||||
|
||||
#
|
||||
# See related Bug#56666
|
||||
# Race condition between the server main thread and the kill server thread.
|
||||
#
|
||||
# Because of this race condition, the call to shutdown_performance_schema()
|
||||
# was commented in sql/mysqld.cc, causing the reported leaks.
|
||||
#
|
||||
|
||||
{
|
||||
missing shutdown_performance_schema 1
|
||||
Memcheck:Leak
|
||||
fun:malloc
|
||||
fun:_Z10pfs_mallocmi
|
||||
}
|
||||
|
||||
{
|
||||
missing shutdown_performance_schema 2
|
||||
Memcheck:Leak
|
||||
fun:malloc
|
||||
fun:my_malloc
|
||||
fun:_lf_alloc_new
|
||||
fun:lf_hash_insert
|
||||
}
|
||||
|
||||
{
|
||||
missing shutdown_performance_schema 3
|
||||
Memcheck:Leak
|
||||
fun:malloc
|
||||
fun:my_malloc
|
||||
fun:initialize_bucket
|
||||
fun:lf_hash_search
|
||||
fun:_Z19find_or_create_fileP10PFS_threadP14PFS_file_classPKcj
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ my_bool my_gethwaddr(uchar *to)
|
||||
if (ifm->ifm_type == RTM_IFINFO)
|
||||
{
|
||||
sdl = (struct sockaddr_dl *)(ifm + 1);
|
||||
addr=LLADDR(sdl);
|
||||
addr=(uchar *)LLADDR(sdl);
|
||||
res=memcpy_and_test(to, addr, ETHER_ADDR_LEN);
|
||||
}
|
||||
}
|
||||
|
@ -187,6 +187,7 @@ int handle_options(int *argc, char ***argv,
|
||||
{
|
||||
char **first= pos;
|
||||
char *cur_arg= *pos;
|
||||
opt_found= 0;
|
||||
if (!is_cmdline_arg && (cur_arg == args_separator))
|
||||
{
|
||||
is_cmdline_arg= 1;
|
||||
|
@ -100,9 +100,9 @@ static const char cur_dir_name[]= {FN_CURLIB, 0};
|
||||
RETURN
|
||||
0 if ok, !=0 if error
|
||||
*/
|
||||
#ifdef NEED_EXPLICIT_SYNC_DIR
|
||||
int my_sync_dir(const char *dir_name, myf my_flags)
|
||||
{
|
||||
#ifdef NEED_EXPLICIT_SYNC_DIR
|
||||
File dir_fd;
|
||||
int res= 0;
|
||||
const char *correct_dir_name;
|
||||
@ -124,10 +124,14 @@ int my_sync_dir(const char *dir_name, myf my_flags)
|
||||
else
|
||||
res= 1;
|
||||
DBUG_RETURN(res);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
#else /* NEED_EXPLICIT_SYNC_DIR */
|
||||
int my_sync_dir(const char *dir_name __attribute__((unused)),
|
||||
myf my_flags __attribute__((unused)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* NEED_EXPLICIT_SYNC_DIR */
|
||||
|
||||
|
||||
/*
|
||||
@ -141,15 +145,18 @@ int my_sync_dir(const char *dir_name, myf my_flags)
|
||||
RETURN
|
||||
0 if ok, !=0 if error
|
||||
*/
|
||||
#ifdef NEED_EXPLICIT_SYNC_DIR
|
||||
int my_sync_dir_by_file(const char *file_name, myf my_flags)
|
||||
{
|
||||
#ifdef NEED_EXPLICIT_SYNC_DIR
|
||||
char dir_name[FN_REFLEN];
|
||||
size_t dir_name_length;
|
||||
dirname_part(dir_name, file_name, &dir_name_length);
|
||||
return my_sync_dir(dir_name, my_flags);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#else /* NEED_EXPLICIT_SYNC_DIR */
|
||||
int my_sync_dir_by_file(const char *file_name __attribute__((unused)),
|
||||
myf my_flags __attribute__((unused)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* NEED_EXPLICIT_SYNC_DIR */
|
||||
|
@ -35,6 +35,8 @@ static void init_myfunc_errs(void);
|
||||
C_MODE_START
|
||||
static const char **get_server_errmsgs()
|
||||
{
|
||||
if (!current_thd)
|
||||
return DEFAULT_ERRMSGS;
|
||||
return CURRENT_THD_ERRMSGS;
|
||||
}
|
||||
C_MODE_END
|
||||
|
@ -9115,7 +9115,7 @@ void Create_field::init_for_tmp_table(enum_field_types sql_type_arg,
|
||||
case MYSQL_TYPE_NEWDECIMAL:
|
||||
case MYSQL_TYPE_FLOAT:
|
||||
case MYSQL_TYPE_DOUBLE:
|
||||
pack_flag= FIELDFLAG_DECIMAL | FIELDFLAG_NUMBER |
|
||||
pack_flag= FIELDFLAG_NUMBER |
|
||||
(decimals_arg & FIELDFLAG_MAX_DEC) << FIELDFLAG_DEC_SHIFT;
|
||||
break;
|
||||
|
||||
@ -9164,12 +9164,13 @@ void Create_field::init_for_tmp_table(enum_field_types sql_type_arg,
|
||||
(maybe_null ? FIELDFLAG_MAYBE_NULL : 0) |
|
||||
(is_unsigned ? 0 : FIELDFLAG_DECIMAL);
|
||||
|
||||
DBUG_PRINT("debug", ("pack_flag: %s%s%s%s%s, pack_type: %d",
|
||||
DBUG_PRINT("debug", ("pack_flag: %s%s%s%s%s%s, pack_type: %d",
|
||||
FLAGSTR(pack_flag, FIELDFLAG_BINARY),
|
||||
FLAGSTR(pack_flag, FIELDFLAG_NUMBER),
|
||||
FLAGSTR(pack_flag, FIELDFLAG_INTERVAL),
|
||||
FLAGSTR(pack_flag, FIELDFLAG_GEOM),
|
||||
FLAGSTR(pack_flag, FIELDFLAG_BLOB),
|
||||
FLAGSTR(pack_flag, FIELDFLAG_DECIMAL),
|
||||
f_packtype(pack_flag)));
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
@ -3368,6 +3368,8 @@ void Item_func_str_to_date::fix_length_and_dec()
|
||||
cached_field_type= MYSQL_TYPE_DATETIME;
|
||||
max_length= MAX_DATETIME_FULL_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
cached_timestamp_type= MYSQL_TIMESTAMP_NONE;
|
||||
sql_mode= (current_thd->variables.sql_mode &
|
||||
(MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE));
|
||||
if ((const_item= args[1]->const_item()))
|
||||
{
|
||||
char format_buff[64];
|
||||
@ -3433,6 +3435,14 @@ bool Item_func_str_to_date::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
|
||||
return 0;
|
||||
|
||||
null_date:
|
||||
if (fuzzy_date & TIME_NO_ZERO_DATE)
|
||||
{
|
||||
char buff[128];
|
||||
strmake(buff, val->ptr(), min(val->length(), sizeof(buff)-1));
|
||||
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||
ER_WRONG_VALUE_FOR_TYPE, ER(ER_WRONG_VALUE_FOR_TYPE),
|
||||
"datetime", buff, "str_to_date");
|
||||
}
|
||||
return (null_value=1);
|
||||
}
|
||||
|
||||
@ -3442,7 +3452,7 @@ String *Item_func_str_to_date::val_str(String *str)
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
MYSQL_TIME ltime;
|
||||
|
||||
if (Item_func_str_to_date::get_date(<ime, TIME_FUZZY_DATE))
|
||||
if (Item_func_str_to_date::get_date(<ime, TIME_FUZZY_DATE | sql_mode))
|
||||
return 0;
|
||||
|
||||
if (!make_datetime((const_item ? cached_format_type :
|
||||
@ -3453,6 +3463,29 @@ String *Item_func_str_to_date::val_str(String *str)
|
||||
}
|
||||
|
||||
|
||||
longlong Item_func_str_to_date::val_int()
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
MYSQL_TIME ltime;
|
||||
|
||||
if (Item_func_str_to_date::get_date(<ime, TIME_FUZZY_DATE | sql_mode))
|
||||
return 0;
|
||||
|
||||
if (const_item)
|
||||
{
|
||||
switch (cached_field_type) {
|
||||
case MYSQL_TYPE_DATE:
|
||||
return TIME_to_ulonglong_date(<ime);
|
||||
case MYSQL_TYPE_TIME:
|
||||
return TIME_to_ulonglong_time(<ime);
|
||||
default:
|
||||
return TIME_to_ulonglong_datetime(<ime);
|
||||
}
|
||||
}
|
||||
return TIME_to_ulonglong_datetime(<ime);
|
||||
}
|
||||
|
||||
|
||||
bool Item_func_last_day::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
|
||||
{
|
||||
if (get_arg0_date(ltime, fuzzy_date & ~TIME_FUZZY_DATE) ||
|
||||
|
@ -1039,6 +1039,7 @@ class Item_func_str_to_date :public Item_str_func
|
||||
date_time_format_types cached_format_type;
|
||||
timestamp_type cached_timestamp_type;
|
||||
bool const_item;
|
||||
ulonglong sql_mode;
|
||||
public:
|
||||
Item_func_str_to_date(Item *a, Item *b)
|
||||
:Item_str_func(a, b), const_item(false)
|
||||
@ -1052,6 +1053,8 @@ public:
|
||||
{
|
||||
return tmp_table_field_from_field_type(table, 1);
|
||||
}
|
||||
longlong val_int();
|
||||
bool result_as_longlong() { return TRUE; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -5288,11 +5288,8 @@ int MYSQL_BIN_LOG::wait_for_update_bin_log(THD* thd,
|
||||
const struct timespec *timeout)
|
||||
{
|
||||
int ret= 0;
|
||||
const char* old_msg = thd->proc_info;
|
||||
DBUG_ENTER("wait_for_update_bin_log");
|
||||
old_msg= thd->enter_cond(&update_cond, &LOCK_log,
|
||||
"Master has sent all binlog to slave; "
|
||||
"waiting for binlog to be updated");
|
||||
|
||||
if (!timeout)
|
||||
mysql_cond_wait(&update_cond, &LOCK_log);
|
||||
else
|
||||
|
@ -460,6 +460,7 @@ public:
|
||||
inline char* get_log_fname() { return log_file_name; }
|
||||
inline char* get_name() { return name; }
|
||||
inline mysql_mutex_t* get_log_lock() { return &LOCK_log; }
|
||||
inline mysql_cond_t* get_log_cond() { return &update_cond; }
|
||||
inline IO_CACHE* get_log_file() { return &log_file; }
|
||||
|
||||
inline void lock_index() { mysql_mutex_lock(&LOCK_index);}
|
||||
|
@ -1395,6 +1395,12 @@ static void mysqld_exit(int exit_code)
|
||||
mysql_audit_finalize();
|
||||
clean_up_mutexes();
|
||||
clean_up_error_log_mutex();
|
||||
#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
|
||||
/*
|
||||
Bug#56666 needs to be fixed before calling:
|
||||
shutdown_performance_schema();
|
||||
*/
|
||||
#endif
|
||||
my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
|
||||
exit(exit_code); /* purecov: inspected */
|
||||
}
|
||||
@ -1486,6 +1492,7 @@ void clean_up(bool print_message)
|
||||
cleanup_errmsgs();
|
||||
MYSQL_CALLBACK(thread_scheduler, end, ());
|
||||
finish_client_errs();
|
||||
(void) my_error_unregister(ER_ERROR_FIRST, ER_ERROR_LAST); // finish server errs
|
||||
DBUG_PRINT("quit", ("Error messages freed"));
|
||||
/* Tell main we are ready */
|
||||
logger.cleanup_end();
|
||||
@ -2732,6 +2739,11 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
|
||||
if (!abort_loop)
|
||||
{
|
||||
abort_loop=1; // mark abort for threads
|
||||
#ifdef HAVE_PSI_INTERFACE
|
||||
/* Delete the instrumentation for the signal thread */
|
||||
if (likely(PSI_server != NULL))
|
||||
PSI_server->delete_current_thread();
|
||||
#endif
|
||||
#ifdef USE_ONE_SIGNAL_HAND
|
||||
pthread_t tmp;
|
||||
if (mysql_thread_create(0, /* Not instrumented */
|
||||
@ -4587,6 +4599,15 @@ int mysqld_main(int argc, char **argv)
|
||||
#endif
|
||||
#endif /* __WIN__ */
|
||||
|
||||
#ifdef HAVE_PSI_INTERFACE
|
||||
/*
|
||||
Disable the main thread instrumentation,
|
||||
to avoid recording events during the shutdown.
|
||||
*/
|
||||
if (PSI_server)
|
||||
PSI_server->delete_current_thread();
|
||||
#endif
|
||||
|
||||
/* Wait until cleanup is done */
|
||||
mysql_mutex_lock(&LOCK_thread_count);
|
||||
while (!ready_to_exit)
|
||||
@ -4604,18 +4625,6 @@ int mysqld_main(int argc, char **argv)
|
||||
}
|
||||
#endif
|
||||
clean_up(1);
|
||||
#ifdef HAVE_PSI_INTERFACE
|
||||
/*
|
||||
Disable the instrumentation, to avoid recording events
|
||||
during the shutdown.
|
||||
*/
|
||||
if (PSI_server)
|
||||
{
|
||||
PSI_server->delete_current_thread();
|
||||
PSI_server= NULL;
|
||||
}
|
||||
shutdown_performance_schema();
|
||||
#endif
|
||||
mysqld_exit(0);
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ void sys_var_end()
|
||||
my_hash_free(&system_variable_hash);
|
||||
|
||||
for (sys_var *var=all_sys_vars.first; var; var= var->next)
|
||||
var->~sys_var();
|
||||
var->cleanup();
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
@ -91,11 +91,13 @@ public:
|
||||
longlong def_val, PolyLock *lock, enum binlog_status_enum binlog_status_arg,
|
||||
on_check_function on_check_func, on_update_function on_update_func,
|
||||
uint deprecated_version, const char *substitute, int parse_flag);
|
||||
/**
|
||||
The instance should only be destroyed on shutdown, as it doesn't unlink
|
||||
itself from the chain.
|
||||
*/
|
||||
|
||||
virtual ~sys_var() {}
|
||||
|
||||
/**
|
||||
All the cleanup procedures should be performed here
|
||||
*/
|
||||
virtual void cleanup() {}
|
||||
/**
|
||||
downcast for sys_var_pluginvar. Returns this if it's an instance
|
||||
of sys_var_pluginvar, and 0 otherwise.
|
||||
|
@ -620,6 +620,32 @@ bool open_and_lock_for_insert_delayed(THD *thd, TABLE_LIST *table_list)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Create a new query string for removing DELAYED keyword for
|
||||
multi INSERT DEALAYED statement.
|
||||
|
||||
@param[in] thd Thread handler
|
||||
@param[in] buf Query string
|
||||
|
||||
@return
|
||||
0 ok
|
||||
1 error
|
||||
*/
|
||||
static int
|
||||
create_insert_stmt_from_insert_delayed(THD *thd, String *buf)
|
||||
{
|
||||
/* Append the part of thd->query before "DELAYED" keyword */
|
||||
if (buf->append(thd->query(),
|
||||
thd->lex->keyword_delayed_begin - thd->query()))
|
||||
return 1;
|
||||
/* Append the part of thd->query after "DELAYED" keyword */
|
||||
if (buf->append(thd->lex->keyword_delayed_begin + 7))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
INSERT statement implementation
|
||||
|
||||
@ -999,13 +1025,28 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
||||
such case the flag is ignored for constructing binlog event.
|
||||
*/
|
||||
DBUG_ASSERT(thd->killed != THD::KILL_BAD_DATA || error > 0);
|
||||
if (thd->binlog_query(THD::ROW_QUERY_TYPE,
|
||||
thd->query(), thd->query_length(),
|
||||
transactional_table, FALSE, FALSE,
|
||||
errcode))
|
||||
if (was_insert_delayed && table_list->lock_type == TL_WRITE)
|
||||
{
|
||||
/* Binlog multi INSERT DELAYED as INSERT without DELAYED. */
|
||||
String log_query;
|
||||
if (create_insert_stmt_from_insert_delayed(thd, &log_query))
|
||||
{
|
||||
sql_print_error("Event Error: An error occurred while creating query string"
|
||||
"for INSERT DELAYED stmt, before writing it into binary log.");
|
||||
|
||||
error= 1;
|
||||
}
|
||||
else if (thd->binlog_query(THD::ROW_QUERY_TYPE,
|
||||
log_query.c_ptr(), log_query.length(),
|
||||
transactional_table, FALSE, FALSE,
|
||||
errcode))
|
||||
error= 1;
|
||||
}
|
||||
else if (thd->binlog_query(THD::ROW_QUERY_TYPE,
|
||||
thd->query(), thd->query_length(),
|
||||
transactional_table, FALSE, FALSE,
|
||||
errcode))
|
||||
error= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
DBUG_ASSERT(transactional_table || !changed ||
|
||||
|
@ -2354,8 +2354,14 @@ struct LEX: public Query_tables_list
|
||||
|
||||
This pointer is required to add possibly omitted DEFINER-clause to the
|
||||
DDL-statement before dumping it to the binlog.
|
||||
|
||||
keyword_delayed_begin points to the begin of the DELAYED keyword in
|
||||
INSERT DELAYED statement.
|
||||
*/
|
||||
const char *stmt_definition_begin;
|
||||
union {
|
||||
const char *stmt_definition_begin;
|
||||
const char *keyword_delayed_begin;
|
||||
};
|
||||
|
||||
const char *stmt_definition_end;
|
||||
|
||||
|
@ -519,7 +519,7 @@ static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report)
|
||||
/* no op */;
|
||||
|
||||
cur= (struct st_mysql_plugin*)
|
||||
my_malloc(i*sizeof(struct st_mysql_plugin), MYF(MY_ZEROFILL|MY_WME));
|
||||
my_malloc((i+1)*sizeof(struct st_mysql_plugin), MYF(MY_ZEROFILL|MY_WME));
|
||||
if (!cur)
|
||||
{
|
||||
free_plugin_mem(&plugin_dl);
|
||||
|
@ -448,6 +448,8 @@ void mysql_binlog_send(THD* thd, char* log_ident, my_off_t pos,
|
||||
const char *errmsg = "Unknown error";
|
||||
NET* net = &thd->net;
|
||||
mysql_mutex_t *log_lock;
|
||||
mysql_cond_t *log_cond;
|
||||
|
||||
bool binlog_can_be_corrupted= FALSE;
|
||||
#ifndef DBUG_OFF
|
||||
int left_events = max_binlog_dump_events;
|
||||
@ -591,7 +593,8 @@ impossible position";
|
||||
mysql_bin_log, and it's already inited, and it will be destroyed
|
||||
only at shutdown).
|
||||
*/
|
||||
log_lock = mysql_bin_log.get_log_lock();
|
||||
log_lock= mysql_bin_log.get_log_lock();
|
||||
log_cond= mysql_bin_log.get_log_cond();
|
||||
if (pos > BIN_LOG_HEADER_SIZE)
|
||||
{
|
||||
/* reset transmit packet for the event read from binary log
|
||||
@ -826,6 +829,7 @@ impossible position";
|
||||
#ifndef DBUG_OFF
|
||||
ulong hb_info_counter= 0;
|
||||
#endif
|
||||
const char* old_msg= thd->proc_info;
|
||||
signal_cnt= mysql_bin_log.signal_cnt;
|
||||
do
|
||||
{
|
||||
@ -834,6 +838,9 @@ impossible position";
|
||||
DBUG_ASSERT(heartbeat_ts && heartbeat_period != 0);
|
||||
set_timespec_nsec(*heartbeat_ts, heartbeat_period);
|
||||
}
|
||||
thd->enter_cond(log_cond, log_lock,
|
||||
"Master has sent all binlog to slave; "
|
||||
"waiting for binlog to be updated");
|
||||
ret= mysql_bin_log.wait_for_update_bin_log(thd, heartbeat_ts);
|
||||
DBUG_ASSERT(ret == 0 || (heartbeat_period != 0 && coord != NULL));
|
||||
if (ret == ETIMEDOUT || ret == ETIME)
|
||||
@ -849,12 +856,15 @@ impossible position";
|
||||
#endif
|
||||
/* reset transmit packet for the heartbeat event */
|
||||
if (reset_transmit_packet(thd, flags, &ev_offset, &errmsg))
|
||||
{
|
||||
thd->exit_cond(old_msg);
|
||||
goto err;
|
||||
}
|
||||
if (send_heartbeat_event(net, packet, coord))
|
||||
{
|
||||
errmsg = "Failed on my_net_write()";
|
||||
my_errno= ER_UNKNOWN_ERROR;
|
||||
mysql_mutex_unlock(log_lock);
|
||||
thd->exit_cond(old_msg);
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
@ -863,7 +873,7 @@ impossible position";
|
||||
DBUG_PRINT("wait",("binary log received update or a broadcast signal caught"));
|
||||
}
|
||||
} while (signal_cnt == mysql_bin_log.signal_cnt && !thd->killed);
|
||||
mysql_mutex_unlock(log_lock);
|
||||
thd->exit_cond(old_msg);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -10447,8 +10447,8 @@ insert_lock_option:
|
||||
| LOW_PRIORITY { $$= TL_WRITE_LOW_PRIORITY; }
|
||||
| DELAYED_SYM
|
||||
{
|
||||
Lex->keyword_delayed_begin= YYLIP->get_tok_start();
|
||||
$$= TL_WRITE_DELAYED;
|
||||
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_INSERT_DELAYED);
|
||||
}
|
||||
| HIGH_PRIORITY { $$= TL_WRITE; }
|
||||
;
|
||||
@ -10457,8 +10457,8 @@ replace_lock_option:
|
||||
opt_low_priority { $$= $1; }
|
||||
| DELAYED_SYM
|
||||
{
|
||||
Lex->keyword_delayed_begin= YYLIP->get_tok_start();
|
||||
$$= TL_WRITE_DELAYED;
|
||||
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_INSERT_DELAYED);
|
||||
}
|
||||
;
|
||||
|
||||
|
@ -385,7 +385,7 @@ public:
|
||||
DBUG_ASSERT(scope() == GLOBAL);
|
||||
DBUG_ASSERT(size == sizeof(char *));
|
||||
}
|
||||
~Sys_var_charptr()
|
||||
void cleanup()
|
||||
{
|
||||
if (flags & ALLOCATED)
|
||||
my_free(global_var(char*));
|
||||
|
@ -223,6 +223,8 @@ int PFS_engine_table::read_row(TABLE *table,
|
||||
Field **fields)
|
||||
{
|
||||
my_bitmap_map *org_bitmap;
|
||||
Field *f;
|
||||
Field **fields_reset;
|
||||
|
||||
/*
|
||||
Make sure the table structure is as expected before mapping
|
||||
@ -240,6 +242,16 @@ int PFS_engine_table::read_row(TABLE *table,
|
||||
|
||||
/* We internally write to Fields to support the read interface */
|
||||
org_bitmap= dbug_tmp_use_all_columns(table, table->write_set);
|
||||
|
||||
/*
|
||||
Some callers of the storage engine interface do not honor the
|
||||
f->is_null() flag, and will attempt to read the data itself.
|
||||
A known offender is mysql_checksum_table().
|
||||
For robustness, reset every field.
|
||||
*/
|
||||
for (fields_reset= fields; (f= *fields_reset) ; fields_reset++)
|
||||
f->reset();
|
||||
|
||||
int result= read_row_values(table, buf, fields, read_all);
|
||||
dbug_tmp_restore_column_map(table->write_set, org_bitmap);
|
||||
|
||||
|
@ -187,7 +187,7 @@ void table_events_waits_common::clear_object_columns()
|
||||
*/
|
||||
void table_events_waits_common::make_row(bool thread_own_wait,
|
||||
PFS_thread *pfs_thread,
|
||||
PFS_events_waits *wait)
|
||||
volatile PFS_events_waits *wait)
|
||||
{
|
||||
pfs_lock lock;
|
||||
PFS_thread *safe_thread;
|
||||
@ -251,21 +251,27 @@ void table_events_waits_common::make_row(bool thread_own_wait,
|
||||
case WAIT_CLASS_TABLE:
|
||||
m_row.m_object_type= "TABLE";
|
||||
m_row.m_object_type_length= 5;
|
||||
memcpy(m_row.m_object_schema, wait->m_schema_name,
|
||||
wait->m_schema_name_length);
|
||||
m_row.m_object_schema_length= wait->m_schema_name_length;
|
||||
memcpy(m_row.m_object_name, wait->m_object_name,
|
||||
wait->m_object_name_length);
|
||||
if (unlikely((m_row.m_object_schema_length == 0) ||
|
||||
(m_row.m_object_schema_length > sizeof(m_row.m_object_schema))))
|
||||
return;
|
||||
memcpy(m_row.m_object_schema, wait->m_schema_name, m_row.m_object_schema_length);
|
||||
m_row.m_object_name_length= wait->m_object_name_length;
|
||||
if (unlikely((m_row.m_object_name_length == 0) ||
|
||||
(m_row.m_object_name_length > sizeof(m_row.m_object_name))))
|
||||
return;
|
||||
memcpy(m_row.m_object_name, wait->m_object_name, m_row.m_object_name_length);
|
||||
safe_class= &global_table_class;
|
||||
break;
|
||||
case WAIT_CLASS_FILE:
|
||||
m_row.m_object_type= "FILE";
|
||||
m_row.m_object_type_length= 4;
|
||||
m_row.m_object_schema_length= 0;
|
||||
memcpy(m_row.m_object_name, wait->m_object_name,
|
||||
wait->m_object_name_length);
|
||||
m_row.m_object_name_length= wait->m_object_name_length;
|
||||
if (unlikely((m_row.m_object_name_length == 0) ||
|
||||
(m_row.m_object_name_length > sizeof(m_row.m_object_name))))
|
||||
return;
|
||||
memcpy(m_row.m_object_name, wait->m_object_name, m_row.m_object_name_length);
|
||||
safe_class= sanitize_file_class((PFS_file_class*) wait->m_class);
|
||||
break;
|
||||
case NO_WAIT_CLASS:
|
||||
|
@ -137,7 +137,7 @@ protected:
|
||||
void clear_object_columns();
|
||||
|
||||
void make_row(bool thread_own_wait, PFS_thread *pfs_thread,
|
||||
PFS_events_waits *wait);
|
||||
volatile PFS_events_waits *wait);
|
||||
|
||||
/** Current row. */
|
||||
row_events_waits m_row;
|
||||
|
@ -255,7 +255,7 @@ static char *process_int_arg(char *to, char *end, size_t length,
|
||||
if ((to_length= (size_t) (end-to)) < 16 || length)
|
||||
store_start= buff;
|
||||
|
||||
if (arg_type == 'd')
|
||||
if (arg_type == 'd' || arg_type == 'i')
|
||||
store_end= longlong10_to_str(par, store_start, -10);
|
||||
else if (arg_type == 'u')
|
||||
store_end= longlong10_to_str(par, store_start, 10);
|
||||
@ -399,6 +399,7 @@ start:
|
||||
args_arr[i].double_arg= va_arg(ap, double);
|
||||
break;
|
||||
case 'd':
|
||||
case 'i':
|
||||
case 'u':
|
||||
case 'x':
|
||||
case 'X':
|
||||
@ -406,7 +407,7 @@ start:
|
||||
case 'p':
|
||||
if (args_arr[i].have_longlong)
|
||||
args_arr[i].longlong_arg= va_arg(ap,longlong);
|
||||
else if (args_arr[i].arg_type == 'd')
|
||||
else if (args_arr[i].arg_type == 'd' || args_arr[i].arg_type == 'i')
|
||||
args_arr[i].longlong_arg= va_arg(ap, int);
|
||||
else
|
||||
args_arr[i].longlong_arg= va_arg(ap, uint);
|
||||
@ -458,6 +459,7 @@ start:
|
||||
break;
|
||||
}
|
||||
case 'd':
|
||||
case 'i':
|
||||
case 'u':
|
||||
case 'x':
|
||||
case 'X':
|
||||
@ -472,7 +474,7 @@ start:
|
||||
|
||||
if (args_arr[print_arr[i].arg_idx].have_longlong)
|
||||
larg = args_arr[print_arr[i].arg_idx].longlong_arg;
|
||||
else if (print_arr[i].arg_type == 'd')
|
||||
else if (print_arr[i].arg_type == 'd' || print_arr[i].arg_type == 'i' )
|
||||
larg = (int) args_arr[print_arr[i].arg_idx].longlong_arg;
|
||||
else
|
||||
larg= (uint) args_arr[print_arr[i].arg_idx].longlong_arg;
|
||||
@ -615,8 +617,8 @@ size_t my_vsnprintf_ex(CHARSET_INFO *cs, char *to, size_t n,
|
||||
to= process_dbl_arg(to, end, width, d, *fmt);
|
||||
continue;
|
||||
}
|
||||
else if (*fmt == 'd' || *fmt == 'u' || *fmt == 'x' || *fmt == 'X' ||
|
||||
*fmt == 'p' || *fmt == 'o')
|
||||
else if (*fmt == 'd' || *fmt == 'i' || *fmt == 'u' || *fmt == 'x' ||
|
||||
*fmt == 'X' || *fmt == 'p' || *fmt == 'o')
|
||||
{
|
||||
/* Integer parameter */
|
||||
longlong larg;
|
||||
@ -625,7 +627,7 @@ size_t my_vsnprintf_ex(CHARSET_INFO *cs, char *to, size_t n,
|
||||
|
||||
if (have_longlong)
|
||||
larg = va_arg(ap,longlong);
|
||||
else if (*fmt == 'd')
|
||||
else if (*fmt == 'd' || *fmt == 'i')
|
||||
larg = va_arg(ap, int);
|
||||
else
|
||||
larg= va_arg(ap, uint);
|
||||
|
@ -31,7 +31,7 @@ void test1(const char *res, const char *fmt, ...)
|
||||
|
||||
int main(void)
|
||||
{
|
||||
plan(54);
|
||||
plan(58);
|
||||
|
||||
test1("Constant string",
|
||||
"Constant string");
|
||||
@ -44,6 +44,8 @@ int main(void)
|
||||
"Format specifier c %c", '!');
|
||||
test1("Format specifier d 1",
|
||||
"Format specifier d %d", 1);
|
||||
test1("Format specifier i 1",
|
||||
"Format specifier i %i", 1);
|
||||
test1("Format specifier u 2",
|
||||
"Format specifier u %u", 2);
|
||||
test1("Format specifier o 375",
|
||||
@ -77,6 +79,9 @@ int main(void)
|
||||
test1("Length modifiers work: 1 * -1 * 2 * 3",
|
||||
"Length modifiers work: %d * %ld * %lld * %zd", 1, -1L, 2LL, (size_t)3);
|
||||
|
||||
test1("Length modifiers work: 1 * -1 * 2 * 3",
|
||||
"Length modifiers work: %i * %li * %lli * %zd", 1, -1L, 2LL, (size_t)3);
|
||||
|
||||
test1("long long X: 123456789abcdef0",
|
||||
"long long X: %llx", 0x123456789abcdef0LL);
|
||||
|
||||
@ -121,6 +126,10 @@ int main(void)
|
||||
"Hello int, %d", 1);
|
||||
test1("Hello int, -1",
|
||||
"Hello int, %d", -1);
|
||||
test1("Hello int, 1",
|
||||
"Hello int, %i", 1);
|
||||
test1("Hello int, -1",
|
||||
"Hello int, %i", -1);
|
||||
test1("Hello string 'I am a string'",
|
||||
"Hello string '%s'", "I am a string");
|
||||
test1("Hello hack hack hack hack hack hack hack 1",
|
||||
|
Reference in New Issue
Block a user