mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merge from 5.5
This commit is contained in:
@ -50,7 +50,6 @@
|
|||||||
#include "mysql.h"
|
#include "mysql.h"
|
||||||
#include "mysql_version.h"
|
#include "mysql_version.h"
|
||||||
#include "mysqld_error.h"
|
#include "mysqld_error.h"
|
||||||
#include "../sql/ha_ndbcluster_tables.h"
|
|
||||||
|
|
||||||
/* Exit codes */
|
/* Exit codes */
|
||||||
|
|
||||||
|
@ -250,11 +250,14 @@ struct st_connection
|
|||||||
my_bool pending;
|
my_bool pending;
|
||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
pthread_t tid;
|
||||||
const char *cur_query;
|
const char *cur_query;
|
||||||
int cur_query_len;
|
int cur_query_len;
|
||||||
pthread_mutex_t mutex;
|
int command, result;
|
||||||
pthread_cond_t cond;
|
pthread_mutex_t query_mutex;
|
||||||
pthread_t tid;
|
pthread_cond_t query_cond;
|
||||||
|
pthread_mutex_t result_mutex;
|
||||||
|
pthread_cond_t result_cond;
|
||||||
int query_done;
|
int query_done;
|
||||||
my_bool has_thread;
|
my_bool has_thread;
|
||||||
#endif /*EMBEDDED_LIBRARY*/
|
#endif /*EMBEDDED_LIBRARY*/
|
||||||
@ -710,71 +713,146 @@ void handle_no_error(struct st_command*);
|
|||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
|
||||||
|
#define EMB_SEND_QUERY 1
|
||||||
|
#define EMB_READ_QUERY_RESULT 2
|
||||||
|
#define EMB_END_CONNECTION 3
|
||||||
|
|
||||||
/* attributes of the query thread */
|
/* attributes of the query thread */
|
||||||
pthread_attr_t cn_thd_attrib;
|
pthread_attr_t cn_thd_attrib;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
send_one_query executes query in separate thread, which is
|
This procedure represents the connection and actually
|
||||||
necessary in embedded library to run 'send' in proper way.
|
runs queries when in the EMBEDDED-SERVER mode.
|
||||||
This implementation doesn't handle errors returned
|
The run_query_normal() just sends request for running
|
||||||
by mysql_send_query. It's technically possible, though
|
mysql_send_query and mysql_read_query_result() here.
|
||||||
I don't see where it is needed.
|
|
||||||
*/
|
*/
|
||||||
pthread_handler_t send_one_query(void *arg)
|
|
||||||
|
pthread_handler_t connection_thread(void *arg)
|
||||||
{
|
{
|
||||||
struct st_connection *cn= (struct st_connection*)arg;
|
struct st_connection *cn= (struct st_connection*)arg;
|
||||||
|
|
||||||
mysql_thread_init();
|
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();
|
end_thread:
|
||||||
pthread_mutex_lock(&cn->mutex);
|
|
||||||
cn->query_done= 1;
|
cn->query_done= 1;
|
||||||
pthread_cond_signal(&cn->cond);
|
mysql_thread_end();
|
||||||
pthread_mutex_unlock(&cn->mutex);
|
|
||||||
pthread_exit(0);
|
pthread_exit(0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_send_query(struct st_connection *cn, const char *q, int q_len,
|
static void wait_query_thread_done(struct st_connection *con)
|
||||||
int flags)
|
|
||||||
{
|
{
|
||||||
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);
|
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= q;
|
||||||
cn->cur_query_len= q_len;
|
cn->cur_query_len= q_len;
|
||||||
cn->query_done= 0;
|
signal_connection_thd(cn, EMB_SEND_QUERY);
|
||||||
if (pthread_create(&cn->tid, &cn_thd_attrib, send_one_query, (void*)cn))
|
|
||||||
die("Cannot start new thread for query");
|
|
||||||
|
|
||||||
cn->has_thread= TRUE;
|
|
||||||
return 0;
|
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)
|
DBUG_ASSERT(cn->has_thread);
|
||||||
{
|
wait_query_thread_done(cn);
|
||||||
pthread_mutex_lock(&con->mutex);
|
signal_connection_thd(cn, EMB_READ_QUERY_RESULT);
|
||||||
while (!con->query_done)
|
wait_query_thread_done(cn);
|
||||||
pthread_cond_wait(&con->cond, &con->mutex);
|
|
||||||
pthread_mutex_unlock(&con->mutex);
|
return cn->result;
|
||||||
}
|
}
|
||||||
if (con->has_thread)
|
|
||||||
{
|
|
||||||
pthread_join(con->tid, NULL);
|
static void emb_close_connection(struct st_connection *cn)
|
||||||
con->has_thread= FALSE;
|
{
|
||||||
}
|
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*/
|
#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*/
|
#endif /*EMBEDDED_LIBRARY*/
|
||||||
|
|
||||||
@ -1117,6 +1195,9 @@ void close_connections()
|
|||||||
DBUG_ENTER("close_connections");
|
DBUG_ENTER("close_connections");
|
||||||
for (--next_con; next_con >= connections; --next_con)
|
for (--next_con; next_con >= connections; --next_con)
|
||||||
{
|
{
|
||||||
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
emb_close_connection(next_con);
|
||||||
|
#endif
|
||||||
if (next_con->stmt)
|
if (next_con->stmt)
|
||||||
mysql_stmt_close(next_con->stmt);
|
mysql_stmt_close(next_con->stmt);
|
||||||
next_con->stmt= 0;
|
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
|
we need to check if the query's thread was finished and probably wait
|
||||||
(embedded-server specific)
|
(embedded-server specific)
|
||||||
*/
|
*/
|
||||||
wait_query_thread_end(con);
|
emb_close_connection(con);
|
||||||
#endif /*EMBEDDED_LIBRARY*/
|
#endif /*EMBEDDED_LIBRARY*/
|
||||||
if (con->stmt)
|
if (con->stmt)
|
||||||
mysql_stmt_close(con->stmt);
|
mysql_stmt_close(con->stmt);
|
||||||
@ -5286,9 +5367,9 @@ void do_connect(struct st_command *command)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
con_slot->query_done= 1;
|
init_connection_thd(con_slot);
|
||||||
con_slot->has_thread= FALSE;
|
#endif /*EMBEDDED_LIBRARY*/
|
||||||
#endif
|
|
||||||
if (!mysql_init(&con_slot->mysql))
|
if (!mysql_init(&con_slot->mysql))
|
||||||
die("Failed on mysql_init()");
|
die("Failed on mysql_init()");
|
||||||
|
|
||||||
@ -6845,21 +6926,13 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
|||||||
/*
|
/*
|
||||||
Send the query
|
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),
|
handle_error(command, mysql_errno(mysql), mysql_error(mysql),
|
||||||
mysql_sqlstate(mysql), ds);
|
mysql_sqlstate(mysql), ds);
|
||||||
goto end;
|
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))
|
if (!(flags & QUERY_REAP_FLAG))
|
||||||
{
|
{
|
||||||
cn->pending= TRUE;
|
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
|
When on first result set, call mysql_read_query_result to retrieve
|
||||||
answer to the query sent earlier
|
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),
|
handle_error(command, mysql_errno(mysql), mysql_error(mysql),
|
||||||
mysql_sqlstate(mysql), ds);
|
mysql_sqlstate(mysql), ds);
|
||||||
@ -8049,6 +8122,9 @@ int main(int argc, char **argv)
|
|||||||
ps_protocol_enabled= 1;
|
ps_protocol_enabled= 1;
|
||||||
|
|
||||||
st_connection *con= connections;
|
st_connection *con= connections;
|
||||||
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
init_connection_thd(con);
|
||||||
|
#endif /*EMBEDDED_LIBRARY*/
|
||||||
if (!( mysql_init(&con->mysql)))
|
if (!( mysql_init(&con->mysql)))
|
||||||
die("Failed in mysql_init()");
|
die("Failed in mysql_init()");
|
||||||
if (opt_connect_timeout)
|
if (opt_connect_timeout)
|
||||||
|
@ -13,13 +13,30 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# 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
|
# Check if OS supports DTrace
|
||||||
MACRO(CHECK_DTRACE)
|
MACRO(CHECK_DTRACE)
|
||||||
FIND_PROGRAM(DTRACE dtrace)
|
FIND_PROGRAM(DTRACE dtrace)
|
||||||
MARK_AS_ADVANCED(DTRACE)
|
MARK_AS_ADVANCED(DTRACE)
|
||||||
|
|
||||||
# On FreeBSD, dtrace does not handle userland tracing yet
|
# 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")
|
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
SET(HAVE_DTRACE ${ENABLE_DTRACE})
|
SET(HAVE_DTRACE ${ENABLE_DTRACE})
|
||||||
@ -72,22 +89,6 @@ IF(ENABLE_DTRACE)
|
|||||||
)
|
)
|
||||||
ENDIF()
|
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)
|
FUNCTION(DTRACE_INSTRUMENT target)
|
||||||
IF(BUGGY_GCC_NO_DTRACE_MODULES)
|
IF(BUGGY_GCC_NO_DTRACE_MODULES)
|
||||||
GET_TARGET_PROPERTY(target_type ${target} TYPE)
|
GET_TARGET_PROPERTY(target_type ${target} TYPE)
|
||||||
|
@ -1335,15 +1335,11 @@ void _db_doprnt_(const char *format,...)
|
|||||||
* This function is intended as a
|
* This function is intended as a
|
||||||
* vfprintf clone with consistent, platform independent output for
|
* vfprintf clone with consistent, platform independent output for
|
||||||
* problematic formats like %p, %zd and %lld.
|
* 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)
|
static void DbugVfprintf(FILE *stream, const char* format, va_list args)
|
||||||
{
|
{
|
||||||
char cvtbuf[1024];
|
char cvtbuf[1024];
|
||||||
size_t len;
|
(void) my_vsnprintf(cvtbuf, sizeof(cvtbuf), format, args);
|
||||||
/* Do not use my_vsnprintf, it does not support "%g". */
|
|
||||||
len = vsnprintf(cvtbuf, sizeof(cvtbuf), format, args);
|
|
||||||
(void) fprintf(stream, "%s\n", cvtbuf);
|
(void) fprintf(stream, "%s\n", cvtbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
<length modifier> can be 'l', 'll', or 'z'.
|
<length modifier> can be 'l', 'll', or 'z'.
|
||||||
|
|
||||||
Supported formats are 's' (null pointer is accepted, printed as
|
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).
|
'X', 'p' (works as 0x%x).
|
||||||
|
|
||||||
Standard syntax for positional arguments $n is supported.
|
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
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# modify it under the terms of the GNU Library General Public
|
# it under the terms of the GNU General Public License as published by
|
||||||
# License as published by the Free Software Foundation; version 2
|
# the Free Software Foundation; version 2 of the License.
|
||||||
# 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
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# Library General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Library General Public
|
# You should have received a copy of the GNU General Public License
|
||||||
# License along with this library; if not, write to the Free
|
# along with this program; if not, write to the Free Software
|
||||||
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
# MA 02111-1307, USA
|
|
||||||
#
|
|
||||||
# This file is public domain and comes with NO WARRANTY of any kind
|
|
||||||
|
|
||||||
MYSQLDATAdir = $(localstatedir)
|
MYSQLDATAdir = $(localstatedir)
|
||||||
MYSQLSHAREdir = $(pkgdatadir)
|
MYSQLSHAREdir = $(pkgdatadir)
|
||||||
|
@ -481,6 +481,10 @@ int init_embedded_server(int argc, char **argv, char **groups)
|
|||||||
char *fake_argv[] = { (char *)"", 0 };
|
char *fake_argv[] = { (char *)"", 0 };
|
||||||
const char *fake_groups[] = { "server", "embedded", 0 };
|
const char *fake_groups[] = { "server", "embedded", 0 };
|
||||||
my_bool acl_error;
|
my_bool acl_error;
|
||||||
|
|
||||||
|
if (my_thread_init())
|
||||||
|
return 1;
|
||||||
|
|
||||||
if (argc)
|
if (argc)
|
||||||
{
|
{
|
||||||
argcp= &argc;
|
argcp= &argc;
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
IF(INSTALL_MYSQLTESTDIR)
|
||||||
INSTALL(
|
INSTALL(
|
||||||
DIRECTORY .
|
DIRECTORY .
|
||||||
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
||||||
@ -28,6 +29,7 @@ INSTALL(
|
|||||||
PATTERN "*.am" EXCLUDE
|
PATTERN "*.am" EXCLUDE
|
||||||
PATTERN "*.in" EXCLUDE
|
PATTERN "*.in" EXCLUDE
|
||||||
)
|
)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -48,9 +50,11 @@ IF(UNIX)
|
|||||||
./mysql-test-run.pl mysql-test-run
|
./mysql-test-run.pl mysql-test-run
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr
|
IF(INSTALL_MYSQLTESTDIR)
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run
|
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr
|
||||||
DESTINATION ${INSTALL_MYSQLTESTDIR})
|
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run
|
||||||
|
DESTINATION ${INSTALL_MYSQLTESTDIR})
|
||||||
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
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_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_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
|
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;
|
FLUSH TABLES;
|
||||||
source include/show_binlog_events.inc;
|
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;
|
inc $count; inc $count; inc $count; inc $count;
|
||||||
--source include/wait_until_rows_count.inc
|
--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;
|
inc $count; inc $count; inc $count; inc $count;
|
||||||
--source include/wait_until_rows_count.inc
|
--source include/wait_until_rows_count.inc
|
||||||
|
|
||||||
|
if (`SELECT @@SESSION.BINLOG_FORMAT = 'STATEMENT'`) {
|
||||||
|
FLUSH TABLES;
|
||||||
|
source include/show_binlog_events.inc;
|
||||||
|
}
|
||||||
|
|
||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -338,10 +338,21 @@ if ($CRC_RET_stmt_sidef) {
|
|||||||
SHOW BINLOG EVENTS;
|
SHOW BINLOG EVENTS;
|
||||||
--die Warnings printed
|
--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)
|
--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
|
--enable_query_log
|
||||||
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
|
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
|
||||||
SHOW BINLOG EVENTS;
|
SHOW BINLOG EVENTS;
|
||||||
|
@ -43,5 +43,11 @@ log-bin=mysqld-bin
|
|||||||
|
|
||||||
# Run tests with the performance schema instrumentation
|
# Run tests with the performance schema instrumentation
|
||||||
loose-enable-performance-schema
|
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
|
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;
|
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
|
str_to_date('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE
|
||||||
NULL
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1411 Incorrect datetime value: '10:00 PM' for function str_to_date
|
||||||
create table t1 (field DATE);
|
create table t1 (field DATE);
|
||||||
insert into t1 values ('2006-11-06');
|
insert into t1 values ('2006-11-06');
|
||||||
select * from t1 where field < '2006-11-06 04:08:36.0';
|
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;
|
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
|
STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE
|
||||||
NULL
|
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;
|
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
|
STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE
|
||||||
NULL
|
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;
|
SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
|
||||||
"1997-12-31 23:59:59" + INTERVAL 1 SECOND
|
"1997-12-31 23:59:59" + INTERVAL 1 SECOND
|
||||||
1998-01-01 00:00:00
|
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;
|
set SQL_MODE=TRADITIONAL;
|
||||||
select str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34';
|
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'
|
str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34'
|
||||||
0
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect datetime value: '2007-10-00 12:34'
|
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';
|
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'
|
str_to_date('2007-10-01 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34'
|
||||||
0
|
0
|
||||||
@ -4181,17 +4182,16 @@ Warnings:
|
|||||||
Warning 1292 Truncated incorrect datetime value: '2007-10-00 12:34'
|
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';
|
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'
|
str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-01 12:34'
|
||||||
0
|
NULL
|
||||||
Warnings:
|
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'
|
select str_to_date('2007-10-00','%Y-%m-%d') between '2007/09/01'
|
||||||
and '2007/10/20';
|
and '2007/10/20';
|
||||||
str_to_date('2007-10-00','%Y-%m-%d') between '2007/09/01'
|
str_to_date('2007-10-00','%Y-%m-%d') between '2007/09/01'
|
||||||
and '2007/10/20'
|
and '2007/10/20'
|
||||||
0
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Incorrect datetime value: '2007-10-00' for column '2007/09/01' at row 1
|
Warning 1411 Incorrect datetime value: '2007-10-00' for function str_to_date
|
||||||
Warning 1292 Incorrect datetime value: '2007-10-00' for column '2007/10/20' at row 1
|
|
||||||
set SQL_MODE=DEFAULT;
|
set SQL_MODE=DEFAULT;
|
||||||
select str_to_date('2007-10-00','%Y-%m-%d') between '' and '2007/10/20';
|
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'
|
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 (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 (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'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||||
Warnings:
|
ERROR HY000: Incorrect datetime value: '31.10.0000 15.30' for function str_to_date
|
||||||
Note 1265 Data truncated for column 'col1' at row 1
|
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
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'));
|
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
|
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'));
|
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'));
|
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
|
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'));
|
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'));
|
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'));
|
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'));
|
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'));
|
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
|
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'));
|
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'));
|
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
|
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'));
|
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'));
|
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'));
|
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'));
|
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'));
|
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
|
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'));
|
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'));
|
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
|
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'));
|
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;
|
drop table t1;
|
||||||
CREATE TABLE t1 (col1 date, col2 datetime, col3 timestamp);
|
CREATE TABLE t1 (col1 date, col2 datetime, col3 timestamp);
|
||||||
INSERT INTO t1 (col1) VALUES (CAST('2004-10-15' AS DATE));
|
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
|
||||||
|
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;
|
drop table t1;
|
||||||
create table t1 (col1 char(3), col2 integer);
|
create table t1 (col1 char(3), col2 integer);
|
||||||
insert into t1 (col1) values (cast(1000 as char(3)));
|
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;
|
DROP TABLE t1;
|
||||||
SET NAMES latin1;
|
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
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
|
@ -1908,4 +1908,16 @@ group by PAY.id + 1;
|
|||||||
mult v_net_with_discount v_total
|
mult v_net_with_discount v_total
|
||||||
1.0000 27.18 27.180000
|
1.0000 27.18 27.180000
|
||||||
DROP TABLE currencies, payments, sub_tasks;
|
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
|
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 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
RESET MASTER;
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
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;
|
select * from t1;
|
||||||
a
|
a
|
||||||
207
|
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 # # use `test`; insert delayed into t1 values (300)
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
RESET MASTER;
|
||||||
Warnings:
|
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||||
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);
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
FLUSH TABLES;
|
||||||
Warnings:
|
show binlog events from <binlog_start>;
|
||||||
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.
|
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;
|
select * from t1;
|
||||||
a
|
a
|
||||||
207
|
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 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
RESET MASTER;
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
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;
|
select * from t1;
|
||||||
a
|
a
|
||||||
207
|
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.
|
* Invoke statement so that return value is dicarded: expect no warning.
|
||||||
SELECT * FROM data_table LIMIT 1;
|
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.
|
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;
|
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();
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog 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.
|
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;
|
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();
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP FUNCTION func_sidef_2;
|
DROP FUNCTION func_sidef_2;
|
||||||
|
|
||||||
Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
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;
|
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();
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PROCEDURE proc_2;
|
DROP PROCEDURE proc_2;
|
||||||
|
|
||||||
Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
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;
|
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);
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP TRIGGER trig_2;
|
DROP TRIGGER trig_2;
|
||||||
|
|
||||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
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();
|
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||||
Warnings:
|
* binlog_format = STATEMENT: expect 0 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.
|
|
||||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP VIEW view_sidef_2;
|
DROP VIEW view_sidef_2;
|
||||||
|
|
||||||
Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
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()";
|
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;
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PREPARE prep_2;
|
DROP PREPARE prep_2;
|
||||||
@ -928,49 +914,39 @@ DROP FUNCTION func_sidef_1;
|
|||||||
|
|
||||||
Invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
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;
|
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();
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog 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.
|
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;
|
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();
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP FUNCTION func_sidef_2;
|
DROP FUNCTION func_sidef_2;
|
||||||
|
|
||||||
Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
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;
|
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();
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PROCEDURE proc_2;
|
DROP PROCEDURE proc_2;
|
||||||
|
|
||||||
Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
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;
|
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);
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP TRIGGER trig_2;
|
DROP TRIGGER trig_2;
|
||||||
|
|
||||||
Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||||
PREPARE prep_2 FROM "CALL proc_1()";
|
PREPARE prep_2 FROM "CALL proc_1()";
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
EXECUTE prep_2;
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PREPARE prep_2;
|
DROP PREPARE prep_2;
|
||||||
@ -978,49 +954,39 @@ DROP PROCEDURE proc_1;
|
|||||||
|
|
||||||
Invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
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;
|
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);
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog 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.
|
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;
|
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();
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP FUNCTION func_sidef_2;
|
DROP FUNCTION func_sidef_2;
|
||||||
|
|
||||||
Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
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;
|
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();
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PROCEDURE proc_2;
|
DROP PROCEDURE proc_2;
|
||||||
|
|
||||||
Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
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;
|
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);
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP TRIGGER trig_2;
|
DROP TRIGGER trig_2;
|
||||||
|
|
||||||
Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
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)";
|
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;
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PREPARE prep_2;
|
DROP PREPARE prep_2;
|
||||||
@ -1028,19 +994,15 @@ DROP TRIGGER trig_1;
|
|||||||
|
|
||||||
Invoking prepared statement prep_1 invoking unsafe INSERT DELAYED statement.
|
Invoking prepared statement prep_1 invoking unsafe INSERT DELAYED statement.
|
||||||
PREPARE prep_1 FROM "INSERT DELAYED INTO t0 VALUES (1), (2)";
|
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;
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PREPARE prep_1;
|
DROP PREPARE prep_1;
|
||||||
|
|
||||||
Invoking unsafe INSERT DELAYED statement.
|
Invoking unsafe INSERT DELAYED statement.
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT DELAYED INTO t0 VALUES (1), (2);
|
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.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog 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.
|
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;
|
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();
|
INSERT INTO t1 SELECT func_sidef_1();
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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();
|
CALL proc_2();
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
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 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. 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 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 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();
|
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||||
Warnings:
|
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 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. 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 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 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 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.
|
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;
|
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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()";
|
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;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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();
|
CALL proc_1();
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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();
|
CALL proc_2();
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
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 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. 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 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 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.
|
Invoking prepared statement prep_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||||
PREPARE prep_2 FROM "CALL proc_1()";
|
PREPARE prep_2 FROM "CALL proc_1()";
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
EXECUTE prep_2;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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);
|
INSERT INTO trigger_table_1 VALUES (1);
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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();
|
CALL proc_2();
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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;
|
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);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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)";
|
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;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
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 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. 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 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 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.
|
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";
|
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;
|
EXECUTE prep_1;
|
||||||
Warnings:
|
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 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. 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 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 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;
|
DROP PREPARE prep_1;
|
||||||
|
|
||||||
Invoking statement that is unsafe in many ways.
|
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;
|
INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1;
|
||||||
Warnings:
|
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 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. 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 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 UDF which may not return the same value on the slave.
|
||||||
@ -2554,8 +2497,7 @@ func_limit()
|
|||||||
show binlog events from <binlog_start>;
|
show binlog events from <binlog_start>;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Query # # use `test`; INSERT DELAYED INTO t1 VALUES (1), (2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
|
@ -179,13 +179,13 @@ while (`SELECT $unsafe_type < 9`) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (`SELECT $unsafe_type = 3`) {
|
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 $desc_0= unsafe INSERT DELAYED statement
|
||||||
--let $stmt_sidef_0= INSERT DELAYED INTO t0 VALUES (1), (2)
|
--let $stmt_sidef_0= INSERT DELAYED INTO t0 VALUES (1), (2)
|
||||||
--let $value_0=
|
--let $value_0=
|
||||||
--let $sel_sidef_0=
|
--let $sel_sidef_0=
|
||||||
--let $sel_retval_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`) {
|
if (`SELECT $unsafe_type = 4`) {
|
||||||
@ -227,7 +227,7 @@ while (`SELECT $unsafe_type < 9`) {
|
|||||||
--let $value_0=
|
--let $value_0=
|
||||||
--let $sel_sidef_0=
|
--let $sel_sidef_0=
|
||||||
--let $sel_retval_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`) {
|
if (`SELECT $unsafe_type = 8`) {
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
--error 1
|
--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
|
# Verify that mysql_upgrade complained about the performance_schema
|
||||||
--cat_file $err_file
|
--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)
|
count(name)
|
||||||
1
|
1
|
||||||
select count(name) from MUTEX_INSTANCES
|
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";
|
where name like "wait/synch/mutex/sql/Query_cache::structure_guard_mutex";
|
||||||
count(name)
|
count(name)
|
||||||
1
|
1
|
||||||
select count(name) from MUTEX_INSTANCES
|
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";
|
where name like "wait/synch/mutex/sql/LOCK_event_metadata";
|
||||||
count(name)
|
count(name)
|
||||||
1
|
1
|
||||||
@ -144,6 +136,10 @@ where name like "wait/synch/mutex/sql/Cversion_lock";
|
|||||||
count(name)
|
count(name)
|
||||||
1
|
1
|
||||||
select count(name) from MUTEX_INSTANCES
|
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";
|
where name like "wait/synch/mutex/sql/LOCK_xid_cache";
|
||||||
count(name)
|
count(name)
|
||||||
1
|
1
|
||||||
@ -152,10 +148,6 @@ where name like "wait/synch/mutex/sql/LOCK_plugin";
|
|||||||
count(name)
|
count(name)
|
||||||
1
|
1
|
||||||
select count(name) from MUTEX_INSTANCES
|
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";
|
where name like "wait/synch/mutex/sql/tz_LOCK";
|
||||||
count(name)
|
count(name)
|
||||||
1
|
1
|
||||||
@ -212,10 +204,6 @@ where name like "wait/synch/cond/sql/Query_cache::COND_cache_status_changed";
|
|||||||
count(name)
|
count(name)
|
||||||
1
|
1
|
||||||
select count(name) from COND_INSTANCES
|
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";
|
where name like "wait/synch/cond/sql/COND_queue_state";
|
||||||
count(name)
|
count(name)
|
||||||
1
|
1
|
||||||
|
@ -45,11 +45,11 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 0
|
performance_schema_max_file_instances 0
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 0
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_classes 200
|
||||||
performance_schema_max_mutex_instances 0
|
performance_schema_max_mutex_instances 0
|
||||||
performance_schema_max_rwlock_classes 30
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 0
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 0
|
performance_schema_max_rwlock_instances 0
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 0
|
performance_schema_max_thread_classes 0
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 0
|
performance_schema_max_thread_instances 0
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
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_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000000
|
performance_schema_max_rwlock_instances 10000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 1000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 500
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 1000
|
performance_schema_max_thread_instances 1000
|
||||||
show engine PERFORMANCE_SCHEMA status;
|
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
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -10,8 +10,8 @@
|
|||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||||
|
|
||||||
# Tests for PERFORMANCE_SCHEMA
|
# Tests for PERFORMANCE_SCHEMA
|
||||||
|
|
||||||
@ -43,10 +43,6 @@ select count(name) from MUTEX_INSTANCES
|
|||||||
select count(name) from MUTEX_INSTANCES
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/mysys/THR_LOCK_myisam";
|
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
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/mysys/THR_LOCK_heap";
|
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
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/LOCK_delayed_insert";
|
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
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/LOCK_uuid_generator";
|
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
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/LOCK_rpl_status";
|
where name like "wait/synch/mutex/sql/LOCK_rpl_status";
|
||||||
|
|
||||||
select count(name) from MUTEX_INSTANCES
|
# LOG_INFO object are created on demand, and are not global.
|
||||||
where name like "wait/synch/mutex/sql/LOG_INFO::lock";
|
# select count(name) from MUTEX_INSTANCES
|
||||||
|
# where name like "wait/synch/mutex/sql/LOG_INFO::lock";
|
||||||
|
|
||||||
select count(name) from MUTEX_INSTANCES
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/Query_cache::structure_guard_mutex";
|
where name like "wait/synch/mutex/sql/Query_cache::structure_guard_mutex";
|
||||||
|
|
||||||
select count(name) from MUTEX_INSTANCES
|
# The event scheduler may be disabled
|
||||||
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/Event_scheduler::LOCK_scheduler_state";
|
||||||
|
|
||||||
select count(name) from MUTEX_INSTANCES
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/LOCK_event_metadata";
|
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
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/LOCK_user_locks";
|
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
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/Cversion_lock";
|
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
|
||||||
# select count(name) from MUTEX_INSTANCES
|
where name like "wait/synch/mutex/sql/LOCK_audit_mask";
|
||||||
# where name like "wait/synch/mutex/sql/LOCK_audit_mask";
|
|
||||||
|
|
||||||
select count(name) from MUTEX_INSTANCES
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/LOCK_xid_cache";
|
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
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/LOCK_plugin";
|
where name like "wait/synch/mutex/sql/LOCK_plugin";
|
||||||
|
|
||||||
select count(name) from MUTEX_INSTANCES
|
# Not a global variable, may be destroyed already.
|
||||||
where name like "wait/synch/mutex/sql/LOCK_gdl";
|
# select count(name) from MUTEX_INSTANCES
|
||||||
|
# where name like "wait/synch/mutex/sql/LOCK_gdl";
|
||||||
|
|
||||||
select count(name) from MUTEX_INSTANCES
|
select count(name) from MUTEX_INSTANCES
|
||||||
where name like "wait/synch/mutex/sql/tz_LOCK";
|
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
|
# Verify that these global rwlocks have been properly initilized in sql
|
||||||
|
|
||||||
select count(name) from RWLOCK_INSTANCES
|
select count(name) from RWLOCK_INSTANCES
|
||||||
@ -230,25 +203,10 @@ select count(name) from COND_INSTANCES
|
|||||||
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";
|
where name like "wait/synch/cond/sql/Query_cache::COND_cache_status_changed";
|
||||||
|
|
||||||
select count(name) from COND_INSTANCES
|
# The event scheduler may be disabled
|
||||||
where name like "wait/synch/cond/sql/Event_scheduler::COND_state";
|
# select count(name) from COND_INSTANCES
|
||||||
|
# where name like "wait/synch/cond/sql/Event_scheduler::COND_state";
|
||||||
|
|
||||||
select count(name) from COND_INSTANCES
|
select count(name) from COND_INSTANCES
|
||||||
where name like "wait/synch/cond/sql/COND_queue_state";
|
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_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_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_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
|
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.
|
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
|
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
|
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
|
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
|
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
|
ctype_utf8mb4_ndb : Bug#55799, Bug#51907, disabled by Konstantin 2010-08-06
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
# changed (see explanation in log_state.test)
|
# changed (see explanation in log_state.test)
|
||||||
let $fixed_bug38124 = 0;
|
let $fixed_bug38124 = 0;
|
||||||
|
|
||||||
|
--source include/not_embedded.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
|
||||||
# Several subtests modify global variables. Save the initial values only here,
|
# 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
|
# All test cases expected to fail should return
|
||||||
# SQLSTATE 22007 <invalid date value>
|
# 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'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
--error 1411
|
||||||
--error 1292
|
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1411
|
--error 1411
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
|
|
||||||
## Test INSERT with STR_TO_DATE into DATETIME
|
## Test INSERT with STR_TO_DATE into DATETIME
|
||||||
# All test cases expected to fail should return
|
# All test cases expected to fail should return
|
||||||
# SQLSTATE 22007 <invalid datetime value>
|
# 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'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
--error 1411
|
||||||
--error 1292
|
|
||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1411
|
--error 1411
|
||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
|
|
||||||
## Test INSERT with STR_TO_DATE into TIMESTAMP
|
## Test INSERT with STR_TO_DATE into TIMESTAMP
|
||||||
# All test cases expected to fail should return
|
# All test cases expected to fail should return
|
||||||
# SQLSTATE 22007 <invalid datetime value>
|
# 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'));
|
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'));
|
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'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1411
|
--error 1411
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
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'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -461,6 +461,29 @@ EXPLAIN EXTENDED SELECT * FROM t1 FORCE INDEX(attime) WHERE AtTime = '2010-02-22
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET NAMES latin1;
|
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 #
|
||||||
--echo # End of 5.5 tests
|
--echo # End of 5.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1509,5 +1509,14 @@ group by PAY.id + 1;
|
|||||||
|
|
||||||
DROP TABLE currencies, payments, sub_tasks;
|
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
|
--echo End of 5.1 tests
|
||||||
|
@ -745,3 +745,38 @@
|
|||||||
Memcheck:Addr1
|
Memcheck:Addr1
|
||||||
fun:buf_buddy_relocate
|
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)
|
if (ifm->ifm_type == RTM_IFINFO)
|
||||||
{
|
{
|
||||||
sdl = (struct sockaddr_dl *)(ifm + 1);
|
sdl = (struct sockaddr_dl *)(ifm + 1);
|
||||||
addr=LLADDR(sdl);
|
addr=(uchar *)LLADDR(sdl);
|
||||||
res=memcpy_and_test(to, addr, ETHER_ADDR_LEN);
|
res=memcpy_and_test(to, addr, ETHER_ADDR_LEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -187,6 +187,7 @@ int handle_options(int *argc, char ***argv,
|
|||||||
{
|
{
|
||||||
char **first= pos;
|
char **first= pos;
|
||||||
char *cur_arg= *pos;
|
char *cur_arg= *pos;
|
||||||
|
opt_found= 0;
|
||||||
if (!is_cmdline_arg && (cur_arg == args_separator))
|
if (!is_cmdline_arg && (cur_arg == args_separator))
|
||||||
{
|
{
|
||||||
is_cmdline_arg= 1;
|
is_cmdline_arg= 1;
|
||||||
|
@ -100,9 +100,9 @@ static const char cur_dir_name[]= {FN_CURLIB, 0};
|
|||||||
RETURN
|
RETURN
|
||||||
0 if ok, !=0 if error
|
0 if ok, !=0 if error
|
||||||
*/
|
*/
|
||||||
|
#ifdef NEED_EXPLICIT_SYNC_DIR
|
||||||
int my_sync_dir(const char *dir_name, myf my_flags)
|
int my_sync_dir(const char *dir_name, myf my_flags)
|
||||||
{
|
{
|
||||||
#ifdef NEED_EXPLICIT_SYNC_DIR
|
|
||||||
File dir_fd;
|
File dir_fd;
|
||||||
int res= 0;
|
int res= 0;
|
||||||
const char *correct_dir_name;
|
const char *correct_dir_name;
|
||||||
@ -124,10 +124,14 @@ int my_sync_dir(const char *dir_name, myf my_flags)
|
|||||||
else
|
else
|
||||||
res= 1;
|
res= 1;
|
||||||
DBUG_RETURN(res);
|
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
|
RETURN
|
||||||
0 if ok, !=0 if error
|
0 if ok, !=0 if error
|
||||||
*/
|
*/
|
||||||
|
#ifdef NEED_EXPLICIT_SYNC_DIR
|
||||||
int my_sync_dir_by_file(const char *file_name, myf my_flags)
|
int my_sync_dir_by_file(const char *file_name, myf my_flags)
|
||||||
{
|
{
|
||||||
#ifdef NEED_EXPLICIT_SYNC_DIR
|
|
||||||
char dir_name[FN_REFLEN];
|
char dir_name[FN_REFLEN];
|
||||||
size_t dir_name_length;
|
size_t dir_name_length;
|
||||||
dirname_part(dir_name, file_name, &dir_name_length);
|
dirname_part(dir_name, file_name, &dir_name_length);
|
||||||
return my_sync_dir(dir_name, my_flags);
|
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
|
C_MODE_START
|
||||||
static const char **get_server_errmsgs()
|
static const char **get_server_errmsgs()
|
||||||
{
|
{
|
||||||
|
if (!current_thd)
|
||||||
|
return DEFAULT_ERRMSGS;
|
||||||
return CURRENT_THD_ERRMSGS;
|
return CURRENT_THD_ERRMSGS;
|
||||||
}
|
}
|
||||||
C_MODE_END
|
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_NEWDECIMAL:
|
||||||
case MYSQL_TYPE_FLOAT:
|
case MYSQL_TYPE_FLOAT:
|
||||||
case MYSQL_TYPE_DOUBLE:
|
case MYSQL_TYPE_DOUBLE:
|
||||||
pack_flag= FIELDFLAG_DECIMAL | FIELDFLAG_NUMBER |
|
pack_flag= FIELDFLAG_NUMBER |
|
||||||
(decimals_arg & FIELDFLAG_MAX_DEC) << FIELDFLAG_DEC_SHIFT;
|
(decimals_arg & FIELDFLAG_MAX_DEC) << FIELDFLAG_DEC_SHIFT;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -9164,12 +9164,13 @@ void Create_field::init_for_tmp_table(enum_field_types sql_type_arg,
|
|||||||
(maybe_null ? FIELDFLAG_MAYBE_NULL : 0) |
|
(maybe_null ? FIELDFLAG_MAYBE_NULL : 0) |
|
||||||
(is_unsigned ? 0 : FIELDFLAG_DECIMAL);
|
(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_BINARY),
|
||||||
FLAGSTR(pack_flag, FIELDFLAG_NUMBER),
|
FLAGSTR(pack_flag, FIELDFLAG_NUMBER),
|
||||||
FLAGSTR(pack_flag, FIELDFLAG_INTERVAL),
|
FLAGSTR(pack_flag, FIELDFLAG_INTERVAL),
|
||||||
FLAGSTR(pack_flag, FIELDFLAG_GEOM),
|
FLAGSTR(pack_flag, FIELDFLAG_GEOM),
|
||||||
FLAGSTR(pack_flag, FIELDFLAG_BLOB),
|
FLAGSTR(pack_flag, FIELDFLAG_BLOB),
|
||||||
|
FLAGSTR(pack_flag, FIELDFLAG_DECIMAL),
|
||||||
f_packtype(pack_flag)));
|
f_packtype(pack_flag)));
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
@ -3368,6 +3368,8 @@ void Item_func_str_to_date::fix_length_and_dec()
|
|||||||
cached_field_type= MYSQL_TYPE_DATETIME;
|
cached_field_type= MYSQL_TYPE_DATETIME;
|
||||||
max_length= MAX_DATETIME_FULL_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
|
max_length= MAX_DATETIME_FULL_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
|
||||||
cached_timestamp_type= MYSQL_TIMESTAMP_NONE;
|
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()))
|
if ((const_item= args[1]->const_item()))
|
||||||
{
|
{
|
||||||
char format_buff[64];
|
char format_buff[64];
|
||||||
@ -3433,6 +3435,14 @@ bool Item_func_str_to_date::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
null_date:
|
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);
|
return (null_value=1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3442,7 +3452,7 @@ String *Item_func_str_to_date::val_str(String *str)
|
|||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
MYSQL_TIME ltime;
|
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;
|
return 0;
|
||||||
|
|
||||||
if (!make_datetime((const_item ? cached_format_type :
|
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)
|
bool Item_func_last_day::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
|
||||||
{
|
{
|
||||||
if (get_arg0_date(ltime, fuzzy_date & ~TIME_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;
|
date_time_format_types cached_format_type;
|
||||||
timestamp_type cached_timestamp_type;
|
timestamp_type cached_timestamp_type;
|
||||||
bool const_item;
|
bool const_item;
|
||||||
|
ulonglong sql_mode;
|
||||||
public:
|
public:
|
||||||
Item_func_str_to_date(Item *a, Item *b)
|
Item_func_str_to_date(Item *a, Item *b)
|
||||||
:Item_str_func(a, b), const_item(false)
|
:Item_str_func(a, b), const_item(false)
|
||||||
@ -1052,6 +1053,8 @@ public:
|
|||||||
{
|
{
|
||||||
return tmp_table_field_from_field_type(table, 1);
|
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)
|
const struct timespec *timeout)
|
||||||
{
|
{
|
||||||
int ret= 0;
|
int ret= 0;
|
||||||
const char* old_msg = thd->proc_info;
|
|
||||||
DBUG_ENTER("wait_for_update_bin_log");
|
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)
|
if (!timeout)
|
||||||
mysql_cond_wait(&update_cond, &LOCK_log);
|
mysql_cond_wait(&update_cond, &LOCK_log);
|
||||||
else
|
else
|
||||||
|
@ -460,6 +460,7 @@ public:
|
|||||||
inline char* get_log_fname() { return log_file_name; }
|
inline char* get_log_fname() { return log_file_name; }
|
||||||
inline char* get_name() { return name; }
|
inline char* get_name() { return name; }
|
||||||
inline mysql_mutex_t* get_log_lock() { return &LOCK_log; }
|
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 IO_CACHE* get_log_file() { return &log_file; }
|
||||||
|
|
||||||
inline void lock_index() { mysql_mutex_lock(&LOCK_index);}
|
inline void lock_index() { mysql_mutex_lock(&LOCK_index);}
|
||||||
|
@ -1395,6 +1395,12 @@ static void mysqld_exit(int exit_code)
|
|||||||
mysql_audit_finalize();
|
mysql_audit_finalize();
|
||||||
clean_up_mutexes();
|
clean_up_mutexes();
|
||||||
clean_up_error_log_mutex();
|
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);
|
my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
|
||||||
exit(exit_code); /* purecov: inspected */
|
exit(exit_code); /* purecov: inspected */
|
||||||
}
|
}
|
||||||
@ -1486,6 +1492,7 @@ void clean_up(bool print_message)
|
|||||||
cleanup_errmsgs();
|
cleanup_errmsgs();
|
||||||
MYSQL_CALLBACK(thread_scheduler, end, ());
|
MYSQL_CALLBACK(thread_scheduler, end, ());
|
||||||
finish_client_errs();
|
finish_client_errs();
|
||||||
|
(void) my_error_unregister(ER_ERROR_FIRST, ER_ERROR_LAST); // finish server errs
|
||||||
DBUG_PRINT("quit", ("Error messages freed"));
|
DBUG_PRINT("quit", ("Error messages freed"));
|
||||||
/* Tell main we are ready */
|
/* Tell main we are ready */
|
||||||
logger.cleanup_end();
|
logger.cleanup_end();
|
||||||
@ -2732,6 +2739,11 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
|
|||||||
if (!abort_loop)
|
if (!abort_loop)
|
||||||
{
|
{
|
||||||
abort_loop=1; // mark abort for threads
|
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
|
#ifdef USE_ONE_SIGNAL_HAND
|
||||||
pthread_t tmp;
|
pthread_t tmp;
|
||||||
if (mysql_thread_create(0, /* Not instrumented */
|
if (mysql_thread_create(0, /* Not instrumented */
|
||||||
@ -4587,6 +4599,15 @@ int mysqld_main(int argc, char **argv)
|
|||||||
#endif
|
#endif
|
||||||
#endif /* __WIN__ */
|
#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 */
|
/* Wait until cleanup is done */
|
||||||
mysql_mutex_lock(&LOCK_thread_count);
|
mysql_mutex_lock(&LOCK_thread_count);
|
||||||
while (!ready_to_exit)
|
while (!ready_to_exit)
|
||||||
@ -4604,18 +4625,6 @@ int mysqld_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
clean_up(1);
|
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);
|
mysqld_exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ void sys_var_end()
|
|||||||
my_hash_free(&system_variable_hash);
|
my_hash_free(&system_variable_hash);
|
||||||
|
|
||||||
for (sys_var *var=all_sys_vars.first; var; var= var->next)
|
for (sys_var *var=all_sys_vars.first; var; var= var->next)
|
||||||
var->~sys_var();
|
var->cleanup();
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
@ -91,11 +91,13 @@ public:
|
|||||||
longlong def_val, PolyLock *lock, enum binlog_status_enum binlog_status_arg,
|
longlong def_val, PolyLock *lock, enum binlog_status_enum binlog_status_arg,
|
||||||
on_check_function on_check_func, on_update_function on_update_func,
|
on_check_function on_check_func, on_update_function on_update_func,
|
||||||
uint deprecated_version, const char *substitute, int parse_flag);
|
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() {}
|
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
|
downcast for sys_var_pluginvar. Returns this if it's an instance
|
||||||
of sys_var_pluginvar, and 0 otherwise.
|
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
|
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.
|
such case the flag is ignored for constructing binlog event.
|
||||||
*/
|
*/
|
||||||
DBUG_ASSERT(thd->killed != THD::KILL_BAD_DATA || error > 0);
|
DBUG_ASSERT(thd->killed != THD::KILL_BAD_DATA || error > 0);
|
||||||
if (thd->binlog_query(THD::ROW_QUERY_TYPE,
|
if (was_insert_delayed && table_list->lock_type == TL_WRITE)
|
||||||
thd->query(), thd->query_length(),
|
|
||||||
transactional_table, FALSE, FALSE,
|
|
||||||
errcode))
|
|
||||||
{
|
{
|
||||||
|
/* 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;
|
error= 1;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DBUG_ASSERT(transactional_table || !changed ||
|
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
|
This pointer is required to add possibly omitted DEFINER-clause to the
|
||||||
DDL-statement before dumping it to the binlog.
|
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;
|
const char *stmt_definition_end;
|
||||||
|
|
||||||
|
@ -519,7 +519,7 @@ static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report)
|
|||||||
/* no op */;
|
/* no op */;
|
||||||
|
|
||||||
cur= (struct st_mysql_plugin*)
|
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)
|
if (!cur)
|
||||||
{
|
{
|
||||||
free_plugin_mem(&plugin_dl);
|
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";
|
const char *errmsg = "Unknown error";
|
||||||
NET* net = &thd->net;
|
NET* net = &thd->net;
|
||||||
mysql_mutex_t *log_lock;
|
mysql_mutex_t *log_lock;
|
||||||
|
mysql_cond_t *log_cond;
|
||||||
|
|
||||||
bool binlog_can_be_corrupted= FALSE;
|
bool binlog_can_be_corrupted= FALSE;
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
int left_events = max_binlog_dump_events;
|
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
|
mysql_bin_log, and it's already inited, and it will be destroyed
|
||||||
only at shutdown).
|
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)
|
if (pos > BIN_LOG_HEADER_SIZE)
|
||||||
{
|
{
|
||||||
/* reset transmit packet for the event read from binary log
|
/* reset transmit packet for the event read from binary log
|
||||||
@ -826,6 +829,7 @@ impossible position";
|
|||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
ulong hb_info_counter= 0;
|
ulong hb_info_counter= 0;
|
||||||
#endif
|
#endif
|
||||||
|
const char* old_msg= thd->proc_info;
|
||||||
signal_cnt= mysql_bin_log.signal_cnt;
|
signal_cnt= mysql_bin_log.signal_cnt;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -834,6 +838,9 @@ impossible position";
|
|||||||
DBUG_ASSERT(heartbeat_ts && heartbeat_period != 0);
|
DBUG_ASSERT(heartbeat_ts && heartbeat_period != 0);
|
||||||
set_timespec_nsec(*heartbeat_ts, heartbeat_period);
|
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);
|
ret= mysql_bin_log.wait_for_update_bin_log(thd, heartbeat_ts);
|
||||||
DBUG_ASSERT(ret == 0 || (heartbeat_period != 0 && coord != NULL));
|
DBUG_ASSERT(ret == 0 || (heartbeat_period != 0 && coord != NULL));
|
||||||
if (ret == ETIMEDOUT || ret == ETIME)
|
if (ret == ETIMEDOUT || ret == ETIME)
|
||||||
@ -849,12 +856,15 @@ impossible position";
|
|||||||
#endif
|
#endif
|
||||||
/* reset transmit packet for the heartbeat event */
|
/* reset transmit packet for the heartbeat event */
|
||||||
if (reset_transmit_packet(thd, flags, &ev_offset, &errmsg))
|
if (reset_transmit_packet(thd, flags, &ev_offset, &errmsg))
|
||||||
|
{
|
||||||
|
thd->exit_cond(old_msg);
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
if (send_heartbeat_event(net, packet, coord))
|
if (send_heartbeat_event(net, packet, coord))
|
||||||
{
|
{
|
||||||
errmsg = "Failed on my_net_write()";
|
errmsg = "Failed on my_net_write()";
|
||||||
my_errno= ER_UNKNOWN_ERROR;
|
my_errno= ER_UNKNOWN_ERROR;
|
||||||
mysql_mutex_unlock(log_lock);
|
thd->exit_cond(old_msg);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -863,7 +873,7 @@ impossible position";
|
|||||||
DBUG_PRINT("wait",("binary log received update or a broadcast signal caught"));
|
DBUG_PRINT("wait",("binary log received update or a broadcast signal caught"));
|
||||||
}
|
}
|
||||||
} while (signal_cnt == mysql_bin_log.signal_cnt && !thd->killed);
|
} while (signal_cnt == mysql_bin_log.signal_cnt && !thd->killed);
|
||||||
mysql_mutex_unlock(log_lock);
|
thd->exit_cond(old_msg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -10447,8 +10447,8 @@ insert_lock_option:
|
|||||||
| LOW_PRIORITY { $$= TL_WRITE_LOW_PRIORITY; }
|
| LOW_PRIORITY { $$= TL_WRITE_LOW_PRIORITY; }
|
||||||
| DELAYED_SYM
|
| DELAYED_SYM
|
||||||
{
|
{
|
||||||
|
Lex->keyword_delayed_begin= YYLIP->get_tok_start();
|
||||||
$$= TL_WRITE_DELAYED;
|
$$= TL_WRITE_DELAYED;
|
||||||
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_INSERT_DELAYED);
|
|
||||||
}
|
}
|
||||||
| HIGH_PRIORITY { $$= TL_WRITE; }
|
| HIGH_PRIORITY { $$= TL_WRITE; }
|
||||||
;
|
;
|
||||||
@ -10457,8 +10457,8 @@ replace_lock_option:
|
|||||||
opt_low_priority { $$= $1; }
|
opt_low_priority { $$= $1; }
|
||||||
| DELAYED_SYM
|
| DELAYED_SYM
|
||||||
{
|
{
|
||||||
|
Lex->keyword_delayed_begin= YYLIP->get_tok_start();
|
||||||
$$= TL_WRITE_DELAYED;
|
$$= TL_WRITE_DELAYED;
|
||||||
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_INSERT_DELAYED);
|
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -385,7 +385,7 @@ public:
|
|||||||
DBUG_ASSERT(scope() == GLOBAL);
|
DBUG_ASSERT(scope() == GLOBAL);
|
||||||
DBUG_ASSERT(size == sizeof(char *));
|
DBUG_ASSERT(size == sizeof(char *));
|
||||||
}
|
}
|
||||||
~Sys_var_charptr()
|
void cleanup()
|
||||||
{
|
{
|
||||||
if (flags & ALLOCATED)
|
if (flags & ALLOCATED)
|
||||||
my_free(global_var(char*));
|
my_free(global_var(char*));
|
||||||
|
@ -223,6 +223,8 @@ int PFS_engine_table::read_row(TABLE *table,
|
|||||||
Field **fields)
|
Field **fields)
|
||||||
{
|
{
|
||||||
my_bitmap_map *org_bitmap;
|
my_bitmap_map *org_bitmap;
|
||||||
|
Field *f;
|
||||||
|
Field **fields_reset;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Make sure the table structure is as expected before mapping
|
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 */
|
/* We internally write to Fields to support the read interface */
|
||||||
org_bitmap= dbug_tmp_use_all_columns(table, table->write_set);
|
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);
|
int result= read_row_values(table, buf, fields, read_all);
|
||||||
dbug_tmp_restore_column_map(table->write_set, org_bitmap);
|
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,
|
void table_events_waits_common::make_row(bool thread_own_wait,
|
||||||
PFS_thread *pfs_thread,
|
PFS_thread *pfs_thread,
|
||||||
PFS_events_waits *wait)
|
volatile PFS_events_waits *wait)
|
||||||
{
|
{
|
||||||
pfs_lock lock;
|
pfs_lock lock;
|
||||||
PFS_thread *safe_thread;
|
PFS_thread *safe_thread;
|
||||||
@ -251,21 +251,27 @@ void table_events_waits_common::make_row(bool thread_own_wait,
|
|||||||
case WAIT_CLASS_TABLE:
|
case WAIT_CLASS_TABLE:
|
||||||
m_row.m_object_type= "TABLE";
|
m_row.m_object_type= "TABLE";
|
||||||
m_row.m_object_type_length= 5;
|
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;
|
m_row.m_object_schema_length= wait->m_schema_name_length;
|
||||||
memcpy(m_row.m_object_name, wait->m_object_name,
|
if (unlikely((m_row.m_object_schema_length == 0) ||
|
||||||
wait->m_object_name_length);
|
(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;
|
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;
|
safe_class= &global_table_class;
|
||||||
break;
|
break;
|
||||||
case WAIT_CLASS_FILE:
|
case WAIT_CLASS_FILE:
|
||||||
m_row.m_object_type= "FILE";
|
m_row.m_object_type= "FILE";
|
||||||
m_row.m_object_type_length= 4;
|
m_row.m_object_type_length= 4;
|
||||||
m_row.m_object_schema_length= 0;
|
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;
|
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);
|
safe_class= sanitize_file_class((PFS_file_class*) wait->m_class);
|
||||||
break;
|
break;
|
||||||
case NO_WAIT_CLASS:
|
case NO_WAIT_CLASS:
|
||||||
|
@ -137,7 +137,7 @@ protected:
|
|||||||
void clear_object_columns();
|
void clear_object_columns();
|
||||||
|
|
||||||
void make_row(bool thread_own_wait, PFS_thread *pfs_thread,
|
void make_row(bool thread_own_wait, PFS_thread *pfs_thread,
|
||||||
PFS_events_waits *wait);
|
volatile PFS_events_waits *wait);
|
||||||
|
|
||||||
/** Current row. */
|
/** Current row. */
|
||||||
row_events_waits m_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)
|
if ((to_length= (size_t) (end-to)) < 16 || length)
|
||||||
store_start= buff;
|
store_start= buff;
|
||||||
|
|
||||||
if (arg_type == 'd')
|
if (arg_type == 'd' || arg_type == 'i')
|
||||||
store_end= longlong10_to_str(par, store_start, -10);
|
store_end= longlong10_to_str(par, store_start, -10);
|
||||||
else if (arg_type == 'u')
|
else if (arg_type == 'u')
|
||||||
store_end= longlong10_to_str(par, store_start, 10);
|
store_end= longlong10_to_str(par, store_start, 10);
|
||||||
@ -399,6 +399,7 @@ start:
|
|||||||
args_arr[i].double_arg= va_arg(ap, double);
|
args_arr[i].double_arg= va_arg(ap, double);
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
|
case 'i':
|
||||||
case 'u':
|
case 'u':
|
||||||
case 'x':
|
case 'x':
|
||||||
case 'X':
|
case 'X':
|
||||||
@ -406,7 +407,7 @@ start:
|
|||||||
case 'p':
|
case 'p':
|
||||||
if (args_arr[i].have_longlong)
|
if (args_arr[i].have_longlong)
|
||||||
args_arr[i].longlong_arg= va_arg(ap,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);
|
args_arr[i].longlong_arg= va_arg(ap, int);
|
||||||
else
|
else
|
||||||
args_arr[i].longlong_arg= va_arg(ap, uint);
|
args_arr[i].longlong_arg= va_arg(ap, uint);
|
||||||
@ -458,6 +459,7 @@ start:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'd':
|
case 'd':
|
||||||
|
case 'i':
|
||||||
case 'u':
|
case 'u':
|
||||||
case 'x':
|
case 'x':
|
||||||
case 'X':
|
case 'X':
|
||||||
@ -472,7 +474,7 @@ start:
|
|||||||
|
|
||||||
if (args_arr[print_arr[i].arg_idx].have_longlong)
|
if (args_arr[print_arr[i].arg_idx].have_longlong)
|
||||||
larg = args_arr[print_arr[i].arg_idx].longlong_arg;
|
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;
|
larg = (int) args_arr[print_arr[i].arg_idx].longlong_arg;
|
||||||
else
|
else
|
||||||
larg= (uint) args_arr[print_arr[i].arg_idx].longlong_arg;
|
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);
|
to= process_dbl_arg(to, end, width, d, *fmt);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (*fmt == 'd' || *fmt == 'u' || *fmt == 'x' || *fmt == 'X' ||
|
else if (*fmt == 'd' || *fmt == 'i' || *fmt == 'u' || *fmt == 'x' ||
|
||||||
*fmt == 'p' || *fmt == 'o')
|
*fmt == 'X' || *fmt == 'p' || *fmt == 'o')
|
||||||
{
|
{
|
||||||
/* Integer parameter */
|
/* Integer parameter */
|
||||||
longlong larg;
|
longlong larg;
|
||||||
@ -625,7 +627,7 @@ size_t my_vsnprintf_ex(CHARSET_INFO *cs, char *to, size_t n,
|
|||||||
|
|
||||||
if (have_longlong)
|
if (have_longlong)
|
||||||
larg = va_arg(ap,longlong);
|
larg = va_arg(ap,longlong);
|
||||||
else if (*fmt == 'd')
|
else if (*fmt == 'd' || *fmt == 'i')
|
||||||
larg = va_arg(ap, int);
|
larg = va_arg(ap, int);
|
||||||
else
|
else
|
||||||
larg= va_arg(ap, uint);
|
larg= va_arg(ap, uint);
|
||||||
|
@ -31,7 +31,7 @@ void test1(const char *res, const char *fmt, ...)
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
plan(54);
|
plan(58);
|
||||||
|
|
||||||
test1("Constant string",
|
test1("Constant string",
|
||||||
"Constant string");
|
"Constant string");
|
||||||
@ -44,6 +44,8 @@ int main(void)
|
|||||||
"Format specifier c %c", '!');
|
"Format specifier c %c", '!');
|
||||||
test1("Format specifier d 1",
|
test1("Format specifier d 1",
|
||||||
"Format specifier d %d", 1);
|
"Format specifier d %d", 1);
|
||||||
|
test1("Format specifier i 1",
|
||||||
|
"Format specifier i %i", 1);
|
||||||
test1("Format specifier u 2",
|
test1("Format specifier u 2",
|
||||||
"Format specifier u %u", 2);
|
"Format specifier u %u", 2);
|
||||||
test1("Format specifier o 375",
|
test1("Format specifier o 375",
|
||||||
@ -77,6 +79,9 @@ int main(void)
|
|||||||
test1("Length modifiers work: 1 * -1 * 2 * 3",
|
test1("Length modifiers work: 1 * -1 * 2 * 3",
|
||||||
"Length modifiers work: %d * %ld * %lld * %zd", 1, -1L, 2LL, (size_t)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",
|
test1("long long X: 123456789abcdef0",
|
||||||
"long long X: %llx", 0x123456789abcdef0LL);
|
"long long X: %llx", 0x123456789abcdef0LL);
|
||||||
|
|
||||||
@ -121,6 +126,10 @@ int main(void)
|
|||||||
"Hello int, %d", 1);
|
"Hello int, %d", 1);
|
||||||
test1("Hello int, -1",
|
test1("Hello int, -1",
|
||||||
"Hello int, %d", -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'",
|
test1("Hello string 'I am a string'",
|
||||||
"Hello string '%s'", "I am a string");
|
"Hello string '%s'", "I am a string");
|
||||||
test1("Hello hack hack hack hack hack hack hack 1",
|
test1("Hello hack hack hack hack hack hack hack 1",
|
||||||
|
Reference in New Issue
Block a user