Commit 1f29c525 authored by Mats Kindahl's avatar Mats Kindahl

Merging 5.1 main into 5.1-rpl

parents d88716c2 3c76b5a1
...@@ -7,22 +7,23 @@ path=`dirname $0` ...@@ -7,22 +7,23 @@ path=`dirname $0`
. "$path/autorun.sh" . "$path/autorun.sh"
# For "optimal" code for this computer add -fast to EXTRA # For "optimal" code for this computer add -fast to EXTRA
# To compile 64 bit, add -xarch=v9 to EXTRA_64_BIT # To compile 64 bit, add -m64 to EXTRA_64_BIT
EXTRA_64_BIT="-xarch=amd64" EXTRA_64_BIT="-m64"
EXTRA="-fast" EXTRA="-fast"
# #
# The following should not need to be touched # The following should not need to be touched
# #
export CC CXX CFLAGS CXXFLAGS export CC CXX CFLAGS CXXFLAGS LIBS
STD="-g -mt -D_FORTEC_ $EXTRA $EXTRA_64_BIT" STD="-g -mt -D_FORTEC_ $EXTRA $EXTRA_64_BIT"
ASFLAGS="$EXTRA_64_BIT" ASFLAGS="$EXTRA_64_BIT"
CC=cc-5.0 CC=cc-5.0
CFLAGS="-Xa -xstrconst $STD" CFLAGS="-Xa -xstrconst $STD"
CXX=CC CXX=CC
CXXFLAGS="-noex $STD" CXXFLAGS="-noex $STD"
LIBS=-lmtmalloc
./configure \ ./configure \
--prefix=/usr/local/mysql \ --prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \ --localstatedir=/usr/local/mysql/data \
......
...@@ -6,8 +6,8 @@ gmake -k clean || true ...@@ -6,8 +6,8 @@ gmake -k clean || true
path=`dirname $0` path=`dirname $0`
. "$path/autorun.sh" . "$path/autorun.sh"
# To compile 64 bit, add -xarch=amd64 to EXTRA_64_BIT # To compile 64 bit, add -m64 to EXTRA_64_BIT
EXTRA_64_BIT="-xarch=amd64" EXTRA_64_BIT="-m64"
# For "optimal" code for this computer add -fast to EXTRA. Note that # For "optimal" code for this computer add -fast to EXTRA. Note that
# this causes problem with debugging the program since -fast implies # this causes problem with debugging the program since -fast implies
......
...@@ -9,6 +9,6 @@ PATH=$PATH:/usr/ccs/bin:/usr/local/bin ...@@ -9,6 +9,6 @@ PATH=$PATH:/usr/ccs/bin:/usr/local/bin
path=`dirname $0` path=`dirname $0`
. "$path/autorun.sh" . "$path/autorun.sh"
CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa" CXX=gcc CXXFLAGS="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -g" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa" CXX=gcc CXXFLAGS="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -g" LIBS="-lmtmalloc" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client
make -j 4 make -j 4
...@@ -29,7 +29,7 @@ EXTRA="-fast" # Remove comment to target current machine ...@@ -29,7 +29,7 @@ EXTRA="-fast" # Remove comment to target current machine
STD="-mt -D_FORTEC_ $EXTRA $EXTRA_64_BIT" STD="-mt -D_FORTEC_ $EXTRA $EXTRA_64_BIT"
CC=cc-5.0 CFLAGS="-Xa -xstrconst $STD" \ CC=cc-5.0 CFLAGS="-Xa -xstrconst $STD" \
CXX=CC CXXFLAGS="-noex $STD" \ CXX=CC CXXFLAGS="-noex $STD" LIBS="-lmtmalloc" \
./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --prefix=$PREFIX ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --prefix=$PREFIX
make -j 4 make -j 4
......
...@@ -2396,8 +2396,15 @@ static uint get_table_structure(char *table, char *db, char *table_type, ...@@ -2396,8 +2396,15 @@ static uint get_table_structure(char *table, char *db, char *table_type,
fprintf(sql_file, ",\n %s %s", fprintf(sql_file, ",\n %s %s",
quote_name(row[0], name_buff, 0), row[1]); quote_name(row[0], name_buff, 0), row[1]);
} }
/*
Stand-in tables are always MyISAM tables as the default
engine might have a column-limit that's lower than the
number of columns in the view, and MyISAM support is
guaranteed to be in the server anyway.
*/
fprintf(sql_file, fprintf(sql_file,
"\n) */;\n" "\n) ENGINE=MyISAM */;\n"
"SET character_set_client = @saved_cs_client;\n"); "SET character_set_client = @saved_cs_client;\n");
check_io(sql_file); check_io(sql_file);
......
...@@ -455,46 +455,50 @@ fi ...@@ -455,46 +455,50 @@ fi
AC_SUBST(ABI_CHECK) AC_SUBST(ABI_CHECK)
# Lock for PS # Look for PS usage. We use double dollar-signs in FIND_PROC because this
# value is written to a makefile, which interprets away one level of
# dollar-signs. So, interpretation stages are m4 and then shell in autoconf,
# then Make, then shell. The autoconf substitution uses single quotes, so
# no unprotected single quotes should appear in the expression.
AC_PATH_PROG(PS, ps, ps) AC_PATH_PROG(PS, ps, ps)
AC_MSG_CHECKING("how to check if pid exists") AC_MSG_CHECKING("how to check if pid exists")
PS=$ac_cv_path_PS PS=$ac_cv_path_PS
# Linux style # Linux style
if $PS p $$ 2> /dev/null | grep `echo $0 | sed s/\-//` > /dev/null if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null
then then
FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS wwwp \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null"
# Solaris # Solaris
elif $PS -fp $$ 2> /dev/null | grep $0 > /dev/null elif $PS -fp $$ 2> /dev/null | grep -- $0 > /dev/null
then then
FIND_PROC="$PS -p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS -p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null"
# BSD style # BSD style
elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null elif $PS -uaxww 2> /dev/null | grep -- $0 > /dev/null
then then
FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null"
# SysV style # SysV style
elif $PS -ef 2> /dev/null | grep $0 > /dev/null elif $PS -ef 2> /dev/null | grep -- $0 > /dev/null
then then
FIND_PROC="$PS -ef | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null"
# Do anybody use this? # Do anybody use this?
elif $PS $$ 2> /dev/null | grep $0 > /dev/null elif $PS $$ 2> /dev/null | grep -- $0 > /dev/null
then then
FIND_PROC="$PS \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null"
else else
case $SYSTEM_TYPE in case $SYSTEM_TYPE in
*freebsd*|*dragonfly*) *freebsd*|*dragonfly*)
FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null"
;; ;;
*darwin*) *darwin*)
FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null"
;; ;;
*cygwin*) *cygwin*)
FIND_PROC="$PS -e | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -e | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null"
;; ;;
*netware*) *netware*)
FIND_PROC= FIND_PROC=
;; ;;
*) *)
AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.]) AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.])
esac esac
fi fi
AC_SUBST(FIND_PROC) AC_SUBST(FIND_PROC)
...@@ -2714,6 +2718,9 @@ then ...@@ -2714,6 +2718,9 @@ then
sql_server="vio sql" sql_server="vio sql"
fi fi
# "innochecksum" is not in the "innobase/" subdirectory, but should be switched
AM_CONDITIONAL([BUILD_INNODB_TOOLS], [test X"$with_plugin_innobase" = Xyes])
# IMPORTANT - do not modify LIBS past this line - this hack is the only way # IMPORTANT - do not modify LIBS past this line - this hack is the only way
# I know to add the static NSS magic if we have static NSS libraries with # I know to add the static NSS magic if we have static NSS libraries with
# glibc - Sasha # glibc - Sasha
......
...@@ -43,7 +43,12 @@ $(top_builddir)/include/mysqld_ername.h: $(top_builddir)/include/mysqld_error.h ...@@ -43,7 +43,12 @@ $(top_builddir)/include/mysqld_ername.h: $(top_builddir)/include/mysqld_error.h
$(top_builddir)/include/sql_state.h: $(top_builddir)/include/mysqld_error.h $(top_builddir)/include/sql_state.h: $(top_builddir)/include/mysqld_error.h
bin_PROGRAMS = replace perror resolveip my_print_defaults \ bin_PROGRAMS = replace perror resolveip my_print_defaults \
resolve_stack_dump mysql_waitpid innochecksum resolve_stack_dump mysql_waitpid
# "innochecksum" should be switched
if BUILD_INNODB_TOOLS
bin_PROGRAMS += innochecksum
endif
noinst_PROGRAMS = charset2html noinst_PROGRAMS = charset2html
EXTRA_PROGRAMS = comp_err EXTRA_PROGRAMS = comp_err
EXTRA_DIST = CMakeLists.txt EXTRA_DIST = CMakeLists.txt
......
...@@ -21,6 +21,40 @@ ...@@ -21,6 +21,40 @@
extern "C" { extern "C" {
#endif #endif
/*
There was a problem on MacOSX with a shared object ha_example.so.
It used hash_search(). During build of ha_example.so no libmysys
was specified. Since MacOSX had a hash_search() in the system
library, it built the shared object so that the dynamic linker
linked hash_search() to the system library, which caused a crash
when called. To come around this, we renamed hash_search() to
my_hash_search(), as we did long ago with hash_insert() and
hash_reset(). However, this time we made the move complete with
all names. To keep compatibility, we redefine the old names.
Since every C and C++ file, that uses HASH, needs to include
this file, the change is complete. Both names could be used
in the code, but the my_* versions are recommended now.
*/
#define hash_get_key my_hash_get_key
#define hash_free_key my_hash_free_key
#define hash_init my_hash_init
#define hash_init2 my_hash_init2
#define _hash_init _my_hash_init
#define hash_free my_hash_free
#define hash_reset my_hash_reset
#define hash_element my_hash_element
#define hash_search my_hash_search
#define hash_first my_hash_first
#define hash_next my_hash_next
#define hash_insert my_hash_insert
#define hash_delete my_hash_delete
#define hash_update my_hash_update
#define hash_replace my_hash_replace
#define hash_check my_hash_check
#define hash_clear my_hash_clear
#define hash_inited my_hash_inited
#define hash_init_opt my_hash_init_opt
/* /*
Overhead to store an element in hash Overhead to store an element in hash
Can be used to approximate memory consumption for a hash Can be used to approximate memory consumption for a hash
...@@ -30,8 +64,8 @@ extern "C" { ...@@ -30,8 +64,8 @@ extern "C" {
/* flags for hash_init */ /* flags for hash_init */
#define HASH_UNIQUE 1 /* hash_insert fails on duplicate key */ #define HASH_UNIQUE 1 /* hash_insert fails on duplicate key */
typedef uchar *(*hash_get_key)(const uchar *,size_t*,my_bool); typedef uchar *(*my_hash_get_key)(const uchar *,size_t*,my_bool);
typedef void (*hash_free_key)(void *); typedef void (*my_hash_free_key)(void *);
typedef struct st_hash { typedef struct st_hash {
size_t key_offset,key_length; /* Length of key if const length */ size_t key_offset,key_length; /* Length of key if const length */
...@@ -39,7 +73,7 @@ typedef struct st_hash { ...@@ -39,7 +73,7 @@ typedef struct st_hash {
ulong records; ulong records;
uint flags; uint flags;
DYNAMIC_ARRAY array; /* Place for hash_keys */ DYNAMIC_ARRAY array; /* Place for hash_keys */
hash_get_key get_key; my_hash_get_key get_key;
void (*free)(void *); void (*free)(void *);
CHARSET_INFO *charset; CHARSET_INFO *charset;
} HASH; } HASH;
...@@ -47,30 +81,34 @@ typedef struct st_hash { ...@@ -47,30 +81,34 @@ typedef struct st_hash {
/* A search iterator state */ /* A search iterator state */
typedef uint HASH_SEARCH_STATE; typedef uint HASH_SEARCH_STATE;
#define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,0,B,C,D,E,F,G,H CALLER_INFO) #define my_hash_init(A,B,C,D,E,F,G,H) \
#define hash_init2(A,B,C,D,E,F,G,H,I) _hash_init(A,B,C,D,E,F,G,H,I CALLER_INFO) _my_hash_init(A,0,B,C,D,E,F,G,H CALLER_INFO)
my_bool _hash_init(HASH *hash, uint growth_size,CHARSET_INFO *charset, #define my_hash_init2(A,B,C,D,E,F,G,H,I) \
ulong default_array_elements, size_t key_offset, _my_hash_init(A,B,C,D,E,F,G,H,I CALLER_INFO)
size_t key_length, hash_get_key get_key, my_bool _my_hash_init(HASH *hash, uint growth_size, CHARSET_INFO *charset,
void (*free_element)(void*), uint flags CALLER_INFO_PROTO); ulong default_array_elements, size_t key_offset,
void hash_free(HASH *tree); size_t key_length, my_hash_get_key get_key,
void (*free_element)(void*),
uint flags CALLER_INFO_PROTO);
void my_hash_free(HASH *tree);
void my_hash_reset(HASH *hash); void my_hash_reset(HASH *hash);
uchar *hash_element(HASH *hash,ulong idx); uchar *my_hash_element(HASH *hash, ulong idx);
uchar *hash_search(const HASH *info, const uchar *key, size_t length); uchar *my_hash_search(const HASH *info, const uchar *key, size_t length);
uchar *hash_first(const HASH *info, const uchar *key, size_t length, uchar *my_hash_first(const HASH *info, const uchar *key, size_t length,
HASH_SEARCH_STATE *state); HASH_SEARCH_STATE *state);
uchar *hash_next(const HASH *info, const uchar *key, size_t length, uchar *my_hash_next(const HASH *info, const uchar *key, size_t length,
HASH_SEARCH_STATE *state); HASH_SEARCH_STATE *state);
my_bool my_hash_insert(HASH *info,const uchar *data); my_bool my_hash_insert(HASH *info, const uchar *data);
my_bool hash_delete(HASH *hash,uchar *record); my_bool my_hash_delete(HASH *hash, uchar *record);
my_bool hash_update(HASH *hash,uchar *record,uchar *old_key,size_t old_key_length); my_bool my_hash_update(HASH *hash, uchar *record, uchar *old_key,
void hash_replace(HASH *hash, HASH_SEARCH_STATE *state, uchar *new_row); size_t old_key_length);
my_bool hash_check(HASH *hash); /* Only in debug library */ void my_hash_replace(HASH *hash, HASH_SEARCH_STATE *state, uchar *new_row);
my_bool my_hash_check(HASH *hash); /* Only in debug library */
#define hash_clear(H) bzero((char*) (H),sizeof(*(H))) #define my_hash_clear(H) bzero((char*) (H), sizeof(*(H)))
#define hash_inited(H) ((H)->array.buffer != 0) #define my_hash_inited(H) ((H)->array.buffer != 0)
#define hash_init_opt(A,B,C,D,E,F,G,H) \ #define my_hash_init_opt(A,B,C,D,E,F,G,H) \
(!hash_inited(A) && _hash_init(A,0,B,C,D,E,F,G, H CALLER_INFO)) (!my_hash_inited(A) && _my_hash_init(A,0,B,C,D,E,F,G, H CALLER_INFO))
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -29,6 +29,14 @@ extern ulong locks_immediate,locks_waited ; ...@@ -29,6 +29,14 @@ extern ulong locks_immediate,locks_waited ;
enum thr_lock_type { TL_IGNORE=-1, enum thr_lock_type { TL_IGNORE=-1,
TL_UNLOCK, /* UNLOCK ANY LOCK */ TL_UNLOCK, /* UNLOCK ANY LOCK */
/*
Parser only! At open_tables() becomes TL_READ or
TL_READ_NO_INSERT depending on the binary log format
(SBR/RBR) and on the table category (log table).
Used for tables that are read by statements which
modify tables.
*/
TL_READ_DEFAULT,
TL_READ, /* Read lock */ TL_READ, /* Read lock */
TL_READ_WITH_SHARED_LOCKS, TL_READ_WITH_SHARED_LOCKS,
/* High prior. than TL_WRITE. Allow concurrent insert */ /* High prior. than TL_WRITE. Allow concurrent insert */
......
...@@ -21,5 +21,9 @@ man1_MANS = @man1_files@ ...@@ -21,5 +21,9 @@ man1_MANS = @man1_files@
man8_MANS = @man8_files@ man8_MANS = @man8_files@
EXTRA_DIST = $(man1_MANS) $(man8_MANS) EXTRA_DIST = $(man1_MANS) $(man8_MANS)
# "make_win_*" are not needed in Unix binary packages,
install-data-hook:
rm -f $(DESTDIR)$(manlibdir)/man1/make_win_*
# Don't update the files from bitkeeper # Don't update the files from bitkeeper
%::SCCS/s.% %::SCCS/s.%
...@@ -125,6 +125,45 @@ drop table t1; ...@@ -125,6 +125,45 @@ drop table t1;
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
show binlog events from 0; show binlog events from 0;
#
# Bug #39182: Binary log producing incompatible character set query from
# stored procedure.
#
reset master;
CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE bug39182;
CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci)
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
DELIMITER //;
CREATE PROCEDURE p1()
BEGIN
DECLARE s1 VARCHAR(255);
SET s1= "test";
CREATE TEMPORARY TABLE tmp1
SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%");
SELECT
COLLATION(NAME_CONST('s1', _utf8'test')) c1,
COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2,
COLLATION(s1) c3,
COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1,
COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2,
COERCIBILITY(s1) d3;
DROP TEMPORARY TABLE tmp1;
END//
DELIMITER ;//
CALL p1();
source include/show_binlog_events.inc;
DROP PROCEDURE p1;
DROP TABLE t1;
DROP DATABASE bug39182;
USE test;
--echo End of 5.0 tests --echo End of 5.0 tests
# Test of a too big SET INSERT_ID: see if the truncated value goes # Test of a too big SET INSERT_ID: see if the truncated value goes
......
...@@ -139,15 +139,6 @@ drop table t1,t2,t3; ...@@ -139,15 +139,6 @@ drop table t1,t2,t3;
# table # table
# #
CREATE TABLE t1(a INT) ENGINE=BLACKHOLE; CREATE TABLE t1(a INT) ENGINE=BLACKHOLE;
# NOTE: After exchanging open_ltable() by open_and_lock_tables() in
# handle_delayed_insert() to fix problems with MERGE tables (Bug#26379),
# problems with INSERT DELAYED and BLACKHOLE popped up. open_ltable()
# does not check if the binlogging capabilities of the statement and the
# table match. So the below used to succeed. But since INSERT DELAYED
# switches to row-based logging in mixed-mode and BLACKHOLE cannot do
# row-based logging, it could not really work. Until this problem is
# correctly fixed, we have that error here.
--error ER_BINLOG_LOGGING_IMPOSSIBLE
INSERT DELAYED INTO t1 VALUES(1); INSERT DELAYED INTO t1 VALUES(1);
DROP TABLE t1; DROP TABLE t1;
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
# Actually this test has nothing to do with innodb per se, it just requires # Actually this test has nothing to do with innodb per se, it just requires
# transactional table. # transactional table.
# #
flush status;
show status like "binlog_cache_use"; show status like "binlog_cache_use";
show status like "binlog_cache_disk_use"; show status like "binlog_cache_disk_use";
--disable_warnings --disable_warnings
...@@ -38,12 +39,3 @@ commit; ...@@ -38,12 +39,3 @@ commit;
show status like "binlog_cache_use"; show status like "binlog_cache_use";
show status like "binlog_cache_disk_use"; show status like "binlog_cache_disk_use";
drop table t1; drop table t1;
# Test for testable InnoDB status variables. This test
# uses previous ones(pages_created, rows_deleted, ...).
show status like "Innodb_buffer_pool_pages_total";
show status like "Innodb_page_size";
show status like "Innodb_rows_deleted";
show status like "Innodb_rows_inserted";
show status like "Innodb_rows_updated";
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
eval create table t1 (a int) engine=$engine_type; eval create table t1 (a int) engine=$engine_type;
flush tables; flush tables;
let $MYSQLD_DATADIR= `select @@datadir`; let $MYSQLD_DATADIR= `select @@datadir`;
system rm $MYSQLD_DATADIR/test/t1.MYI ; remove_file $MYSQLD_DATADIR/test/t1.MYI ;
drop table if exists t1; drop table if exists t1;
save_master_pos; save_master_pos;
connection slave; connection slave;
......
# Check replication of one statement assuming that the engine on the
# slave is a blackhole engine.
# Input:
# $statement Statement to evaluate, it is assumed to change t1
# 1. Evaluate statement on master, it is assumed to change t1
# 2. Wait for statement to be processed on slave
# 3. SELECT from table t1 to see what was written
# 4. Compare position on slave before executing statement and after
# executing statement. If difference is >0, then something was
# written to the binary log on the slave.
connection slave;
let $before = query_get_value("SHOW MASTER STATUS", Position, 1);
--echo [on master]
connection master;
eval $statement;
--echo [on slave]
sync_slave_with_master;
--echo # Expect 0
SELECT COUNT(*) FROM t1;
let $after = query_get_value("SHOW MASTER STATUS", Position, 1);
let $something_written = `select $after - $before != 0`;
if ($something_written) {
--echo >>> Something was written to binary log <<<
}
if (!$something_written) {
--echo >>> Nothing was written to binary log <<<
}
...@@ -487,3 +487,18 @@ select * from t2 where a=4 or b=4; ...@@ -487,3 +487,18 @@ select * from t2 where a=4 or b=4;
drop table t1, t2; drop table t1, t2;
#
# Bug #37943: Reproducible mysqld crash/sigsegv in sel_trees_can_be_ored
#
CREATE TABLE t1 (a varchar(8), b set('a','b','c','d','e','f','g','h'),
KEY b(b), KEY a(a));
INSERT INTO t1 VALUES ('y',''), ('z','');
#should not crash
SELECT b,a from t1 WHERE (b!='c' AND b!='f' && b!='h') OR
(a='pure-S') OR (a='DE80337a') OR (a='DE80799');
DROP TABLE t1;
--echo End of 5.0 tests
...@@ -1257,6 +1257,7 @@ connect (con1,localhost,root,,); ...@@ -1257,6 +1257,7 @@ connect (con1,localhost,root,,);
connect (con2,localhost,root,,); connect (con2,localhost,root,,);
SET SESSION AUTOCOMMIT = 0; SET SESSION AUTOCOMMIT = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
set binlog_format=mixed;
--echo # Switch to connection con1 --echo # Switch to connection con1
connection con1; connection con1;
......
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 1 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter > $MYSQLTEST_VARDIR/tmp/tmp.dat --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 1 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter > $MYSQLTEST_VARDIR/tmp/tmp.dat
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 2 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter >> $MYSQLTEST_VARDIR/tmp/tmp.dat --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 2 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter >> $MYSQLTEST_VARDIR/tmp/tmp.dat
--exec sort $MYSQLTEST_VARDIR/tmp/tmp.dat --exec sort $MYSQLTEST_VARDIR/tmp/tmp.dat
--exec rm -f $MYSQLTEST_VARDIR/tmp/tmp.dat --error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/tmp.dat
--let ndb_restore_opts= --let ndb_restore_opts=
--let ndb_restore_filter= --let ndb_restore_filter=
File mode changed from 100755 to 100644
...@@ -454,3 +454,11 @@ select last_insert_id(); ...@@ -454,3 +454,11 @@ select last_insert_id();
last_insert_id() last_insert_id()
3 3
drop table t1; drop table t1;
create table t1 (a int primary key auto_increment, b int, c int, e int, d timestamp default current_timestamp, unique(b),unique(c),unique(e));
insert into t1 values(null,1,1,1,now());
insert into t1 values(null,0,0,0,null);
replace into t1 values(null,1,0,2,null);
select last_insert_id();
last_insert_id()
3
drop table t1;
...@@ -90,4 +90,9 @@ Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1 ...@@ -90,4 +90,9 @@ Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1 Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
Note 1003 select `test`.`t2`.`a` AS `a`,(select count(0) AS `COUNT(*)` from `test`.`t1` where ((`test`.`t1`.`b` = `test`.`t2`.`a`) and (concat(`test`.`t1`.`b`,`test`.`t1`.`c`) = concat('0',`test`.`t2`.`a`,'01')))) AS `x` from `test`.`t2` order by `test`.`t2`.`a` Note 1003 select `test`.`t2`.`a` AS `a`,(select count(0) AS `COUNT(*)` from `test`.`t1` where ((`test`.`t1`.`b` = `test`.`t2`.`a`) and (concat(`test`.`t1`.`b`,`test`.`t1`.`c`) = concat('0',`test`.`t2`.`a`,'01')))) AS `x` from `test`.`t2` order by `test`.`t2`.`a`
DROP TABLE t1,t2; DROP TABLE t1,t2;
CREATE TABLE t1 (a TIMESTAMP);
INSERT INTO t1 VALUES (NOW()),(NOW()),(NOW());
SELECT * FROM t1 WHERE a > '2008-01-01' AND a = '0000-00-00';
a
DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
...@@ -1559,6 +1559,8 @@ SHOW INDEX FROM t1; ...@@ -1559,6 +1559,8 @@ SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 c1 1 c1 A NULL NULL NULL YES BTREE t1 1 c1 1 c1 A NULL NULL NULL YES BTREE
DROP TABLE t1; DROP TABLE t1;
create user mysqltest_1@'test@test';
ERROR HY000: Malformed hostname (illegal symbol: '@')
CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL); CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
INSERT IGNORE INTO t1 (b) VALUES (5); INSERT IGNORE INTO t1 (b) VALUES (5);
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
......
...@@ -40,9 +40,9 @@ IN ind DECIMAL(10,2)) ...@@ -40,9 +40,9 @@ IN ind DECIMAL(10,2))
BEGIN BEGIN
INSERT INTO t4 VALUES (ins1, ins2, ind); INSERT INTO t4 VALUES (ins1, ins2, ind);
END END
master-bin.000001 784 Query 1 992 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93)) master-bin.000001 784 Query 1 1048 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93))
master-bin.000001 992 Query 1 1081 use `test`; DROP PROCEDURE bug18293 master-bin.000001 1048 Query 1 1137 use `test`; DROP PROCEDURE bug18293
master-bin.000001 1081 Query 1 1160 use `test`; DROP TABLE t4 master-bin.000001 1137 Query 1 1216 use `test`; DROP TABLE t4
End of 5.0 tests End of 5.0 tests
SHOW BINLOG EVENTS FROM 364; SHOW BINLOG EVENTS FROM 364;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
......
...@@ -1098,6 +1098,17 @@ ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_gen ...@@ -1098,6 +1098,17 @@ ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_gen
select * from t1 where a=if(b<10,_ucs2 0x0062,_ucs2 0x00C0); select * from t1 where a=if(b<10,_ucs2 0x0062,_ucs2 0x00C0);
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation '=' ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation '='
drop table t1; drop table t1;
CREATE TABLE t1 (s1 CHAR(5) CHARACTER SET UCS2);
INSERT INTO t1 VALUES ('a');
SET @@sql_mode=pad_char_to_full_length;
SELECT HEX(s1) FROM t1;
HEX(s1)
00610020002000200020
SET @@sql_mode=default;
SELECT HEX(s1) FROM t1;
HEX(s1)
0061
DROP TABLE t1;
set collation_connection=ucs2_general_ci; set collation_connection=ucs2_general_ci;
drop table if exists t1; drop table if exists t1;
create table t1 as create table t1 as
......
...@@ -608,6 +608,65 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -608,6 +608,65 @@ id select_type table type possible_keys key key_len ref rows Extra
SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a; SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
a a a a
DROP TABLE t1; DROP TABLE t1;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (id INT NOT NULL, fruit_id INT NOT NULL, fruit_name varchar(20)
default NULL);
INSERT INTO t1 VALUES (1,1,'ORANGE');
INSERT INTO t1 VALUES (2,2,'APPLE');
INSERT INTO t1 VALUES (3,2,'APPLE');
INSERT INTO t1 VALUES (4,3,'PEAR');
SELECT DISTINCT fruit_id, fruit_name INTO @v1, @v2 FROM t1 WHERE fruit_name =
'APPLE';
SELECT @v1, @v2;
@v1 @v2
2 APPLE
SELECT DISTINCT fruit_id, fruit_name INTO @v3, @v4 FROM t1 GROUP BY fruit_id,
fruit_name HAVING fruit_name = 'APPLE';
SELECT @v3, @v4;
@v3 @v4
2 APPLE
SELECT DISTINCT @v5:= fruit_id, @v6:= fruit_name INTO @v7, @v8 FROM t1 WHERE
fruit_name = 'APPLE';
SELECT @v5, @v6, @v7, @v8;
@v5 @v6 @v7 @v8
3 PEAR 3 PEAR
SELECT DISTINCT @v5 + fruit_id, CONCAT(@v6, fruit_name) INTO @v9, @v10 FROM t1
WHERE fruit_name = 'APPLE';
SELECT @v5, @v6, @v7, @v8, @v9, @v10;
@v5 @v6 @v7 @v8 @v9 @v10
3 PEAR 3 PEAR 5 PEARAPPLE
SELECT DISTINCT @v11:= @v5 + fruit_id, @v12:= CONCAT(@v6, fruit_name) INTO
@v13, @v14 FROM t1 WHERE fruit_name = 'APPLE';
SELECT @v11, @v12, @v13, @v14;
@v11 @v12 @v13 @v14
6 PEARPEAR 6 PEARPEAR
SELECT DISTINCT @v13, @v14 INTO @v15, @v16 FROM t1 WHERE fruit_name = 'APPLE';
SELECT @v15, @v16;
@v15 @v16
6 PEARPEAR
SELECT DISTINCT 2 + 2, 'Bob' INTO @v17, @v18 FROM t1 WHERE fruit_name =
'APPLE';
SELECT @v17, @v18;
@v17 @v18
4 Bob
DROP TABLE IF EXISTS t2;
CREATE TABLE t2 (fruit_id INT NOT NULL, fruit_name varchar(20)
default NULL);
SELECT DISTINCT fruit_id, fruit_name INTO OUTFILE
'../tmp/data1.tmp' FROM t1 WHERE fruit_name = 'APPLE';
LOAD DATA INFILE '../tmp/data1.tmp' INTO TABLE t2;
SELECT DISTINCT @v19:= fruit_id, @v20:= fruit_name INTO OUTFILE
'../tmp/data2.tmp' FROM t1 WHERE fruit_name = 'APPLE';
LOAD DATA INFILE '../tmp/data2.tmp' INTO TABLE t2;
SELECT @v19, @v20;
@v19 @v20
2 APPLE
SELECT * FROM t2;
fruit_id fruit_name
2 APPLE
2 APPLE
DROP TABLE t1;
DROP TABLE t2;
CREATE TABLE t1 (a CHAR(1)); CREATE TABLE t1 (a CHAR(1));
INSERT INTO t1 VALUES('A'), (0); INSERT INTO t1 VALUES('A'), (0);
SELECT a FROM t1 WHERE a=0; SELECT a FROM t1 WHERE a=0;
......
...@@ -328,4 +328,81 @@ create event ...@@ -328,4 +328,81 @@ create event
очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66 очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66
on schedule every 2 year do select 1; on schedule every 2 year do select 1;
ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длинна' is too long ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длинна' is too long
create event event_35981 on schedule every 6 month on completion preserve
disable
do
select 1;
The following SELECTs should all give 1
select count(*) from information_schema.events
where event_schema = database() and event_name = 'event_35981' and
on_completion = 'PRESERVE';
count(*)
1
alter event event_35981 enable;
select count(*) from information_schema.events
where event_schema = database() and event_name = 'event_35981' and
on_completion = 'PRESERVE';
count(*)
1
alter event event_35981 on completion not preserve;
select count(*) from information_schema.events
where event_schema = database() and event_name = 'event_35981' and
on_completion = 'NOT PRESERVE';
count(*)
1
alter event event_35981 disable;
select count(*) from information_schema.events
where event_schema = database() and event_name = 'event_35981' and
on_completion = 'NOT PRESERVE';
count(*)
1
alter event event_35981 on completion preserve;
select count(*) from information_schema.events
where event_schema = database() and event_name = 'event_35981' and
on_completion = 'PRESERVE';
count(*)
1
drop event event_35981;
create event event_35981 on schedule every 6 month disable
do
select 1;
select count(*) from information_schema.events
where event_schema = database() and event_name = 'event_35981' and
on_completion = 'NOT PRESERVE';
count(*)
1
drop event event_35981;
create event event_35981 on schedule every 1 hour starts current_timestamp
on completion not preserve
do
select 1;
alter event event_35981 on schedule every 1 hour starts '1999-01-01 00:00:00'
ends '1999-01-02 00:00:00';
ERROR HY000: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
drop event event_35981;
create event event_35981 on schedule every 1 hour starts current_timestamp
on completion not preserve
do
select 1;
alter event event_35981 on schedule every 1 hour starts '1999-01-01 00:00:00'
ends '1999-01-02 00:00:00' on completion preserve;
Warnings:
Note 1544 Event execution time is in the past. Event has been disabled
drop event event_35981;
create event event_35981 on schedule every 1 hour starts current_timestamp
on completion preserve
do
select 1;
alter event event_35981 on schedule every 1 hour starts '1999-01-01 00:00:00'
ends '1999-01-02 00:00:00';
Warnings:
Note 1544 Event execution time is in the past. Event has been disabled
alter event event_35981 on schedule every 1 hour starts '1999-01-01 00:00:00'
ends '1999-01-02 00:00:00' on completion not preserve;
ERROR HY000: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
alter event event_35981 on schedule every 1 hour starts '1999-01-01 00:00:00'
ends '1999-01-02 00:00:00' on completion preserve;
Warnings:
Note 1544 Event execution time is in the past. Event has been disabled
drop event event_35981;
drop database events_test; drop database events_test;
...@@ -1416,4 +1416,41 @@ SELECT AVG(a), CAST(AVG(a) AS DECIMAL) FROM t1; ...@@ -1416,4 +1416,41 @@ SELECT AVG(a), CAST(AVG(a) AS DECIMAL) FROM t1;
AVG(a) CAST(AVG(a) AS DECIMAL) AVG(a) CAST(AVG(a) AS DECIMAL)
15 15 15 15
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE derived1 (a bigint(21));
INSERT INTO derived1 VALUES (2);
CREATE TABLE D (
pk int(11) NOT NULL AUTO_INCREMENT,
int_nokey int(11) DEFAULT NULL,
int_key int(11) DEFAULT NULL,
filler blob,
PRIMARY KEY (pk),
KEY int_key (int_key)
);
INSERT INTO D VALUES
(39,40,4,repeat(' X', 42)),
(43,56,4,repeat(' X', 42)),
(47,12,4,repeat(' X', 42)),
(71,28,4,repeat(' X', 42)),
(76,54,4,repeat(' X', 42)),
(83,45,4,repeat(' X', 42)),
(105,53,12,NULL);
SELECT
(SELECT COUNT( int_nokey )
FROM derived1 AS X
WHERE
X.int_nokey < 61
GROUP BY pk
LIMIT 1)
FROM D AS X
WHERE X.int_key < 13
GROUP BY int_nokey LIMIT 1;
(SELECT COUNT( int_nokey )
FROM derived1 AS X
WHERE
X.int_nokey < 61
GROUP BY pk
LIMIT 1)
1
DROP TABLE derived1;
DROP TABLE D;
End of 5.0 tests End of 5.0 tests
...@@ -520,6 +520,16 @@ a filler b ...@@ -520,6 +520,16 @@ a filler b
4 zz 4 4 zz 4
5 qq 4 5 qq 4
drop table t1, t2; drop table t1, t2;
CREATE TABLE t1 (a varchar(8), b set('a','b','c','d','e','f','g','h'),
KEY b(b), KEY a(a));
INSERT INTO t1 VALUES ('y',''), ('z','');
SELECT b,a from t1 WHERE (b!='c' AND b!='f' && b!='h') OR
(a='pure-S') OR (a='DE80337a') OR (a='DE80799');
b a
y
z
DROP TABLE t1;
End of 5.0 tests
#---------------- ROR-index_merge tests ----------------------- #---------------- ROR-index_merge tests -----------------------
SET SESSION STORAGE_ENGINE = MyISAM; SET SESSION STORAGE_ENGINE = MyISAM;
drop table if exists t0,t1,t2; drop table if exists t0,t1,t2;
......
...@@ -221,3 +221,24 @@ drop view testdb_1.v1, v2, testdb_1.v3, v4; ...@@ -221,3 +221,24 @@ drop view testdb_1.v1, v2, testdb_1.v3, v4;
drop database testdb_1; drop database testdb_1;
drop user testdb_1@localhost; drop user testdb_1@localhost;
drop user testdb_2@localhost; drop user testdb_2@localhost;
create database testdb_1;
create table testdb_1.t1 (a int);
create view testdb_1.v1 as select * from testdb_1.t1;
grant show view on testdb_1.* to mysqltest_1@localhost;
grant select on testdb_1.v1 to mysqltest_1@localhost;
select table_schema, table_name, view_definition from information_schema.views
where table_name='v1';
table_schema table_name view_definition
testdb_1 v1 select `testdb_1`.`t1`.`a` AS `a` from `testdb_1`.`t1`
show create view testdb_1.v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v1` AS select `testdb_1`.`t1`.`a` AS `a` from `testdb_1`.`t1` latin1 latin1_swedish_ci
revoke select on testdb_1.v1 from mysqltest_1@localhost;
select table_schema, table_name, view_definition from information_schema.views
where table_name='v1';
table_schema table_name view_definition
testdb_1 v1
show create view testdb_1.v1;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v1'
drop user mysqltest_1@localhost;
drop database testdb_1;
drop table if exists t1; drop table if exists t1;
set binlog_format=mixed;
set session transaction isolation level read committed; set session transaction isolation level read committed;
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1; create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into t1 values (1),(2),(3),(4),(5),(6),(7); insert into t1 values (1),(2),(3),(4),(5),(6),(7);
...@@ -6,6 +7,7 @@ set autocommit=0; ...@@ -6,6 +7,7 @@ set autocommit=0;
select * from t1 where a=3 lock in share mode; select * from t1 where a=3 lock in share mode;
a a
3 3
set binlog_format=mixed;
set session transaction isolation level read committed; set session transaction isolation level read committed;
set autocommit=0; set autocommit=0;
update t1 set a=10 where a=5; update t1 set a=10 where a=5;
......
...@@ -1024,6 +1024,7 @@ id code name ...@@ -1024,6 +1024,7 @@ id code name
4 2 Erik 4 2 Erik
5 3 Sasha 5 3 Sasha
COMMIT; COMMIT;
SET binlog_format='MIXED';
BEGIN; BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt'); insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt');
...@@ -2961,9 +2962,11 @@ drop table t1,t2; ...@@ -2961,9 +2962,11 @@ drop table t1,t2;
create table t1(a int not null, b int, primary key(a)) engine=innodb; create table t1(a int not null, b int, primary key(a)) engine=innodb;
insert into t1 values(1,1),(2,2),(3,1),(4,2),(5,1),(6,2),(7,3); insert into t1 values(1,1),(2,2),(3,1),(4,2),(5,1),(6,2),(7,3);
commit; commit;
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
update t1 set b = 5 where b = 1; update t1 set b = 5 where b = 1;
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
select * from t1 where a = 7 and b = 3 for update; select * from t1 where a = 7 and b = 3 for update;
...@@ -3002,6 +3005,7 @@ d e ...@@ -3002,6 +3005,7 @@ d e
3 1 3 1
8 6 8 6
12 1 12 1
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
insert into t1 select * from t2; insert into t1 select * from t2;
...@@ -3032,30 +3036,39 @@ a b ...@@ -3032,30 +3036,39 @@ a b
3 1 3 1
8 6 8 6
12 1 12 1
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
insert into t1 select * from t2; insert into t1 select * from t2;
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
update t3 set b = (select b from t2 where a = d); update t3 set b = (select b from t2 where a = d);
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
create table t4(a int not null, b int, primary key(a)) engine=innodb select * from t2; create table t4(a int not null, b int, primary key(a)) engine=innodb select * from t2;
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
insert into t5 (select * from t2 lock in share mode); insert into t5 (select * from t2 lock in share mode);
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
update t6 set e = (select b from t2 where a = d lock in share mode); update t6 set e = (select b from t2 where a = d lock in share mode);
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
create table t7(a int not null, b int, primary key(a)) engine=innodb select * from t2 lock in share mode; create table t7(a int not null, b int, primary key(a)) engine=innodb select * from t2 lock in share mode;
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
insert into t8 (select * from t2 for update); insert into t8 (select * from t2 for update);
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
update t9 set e = (select b from t2 where a = d for update); update t9 set e = (select b from t2 where a = d for update);
SET binlog_format='MIXED';
set autocommit = 0; set autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
create table t10(a int not null, b int, primary key(a)) engine=innodb select * from t2 for update; create table t10(a int not null, b int, primary key(a)) engine=innodb select * from t2 for update;
...@@ -3202,6 +3215,7 @@ id ...@@ -3202,6 +3215,7 @@ id
-10 -10
1 1
DROP TABLE t1; DROP TABLE t1;
SET binlog_format='MIXED';
SET TX_ISOLATION='read-committed'; SET TX_ISOLATION='read-committed';
SET AUTOCOMMIT=0; SET AUTOCOMMIT=0;
DROP TABLE IF EXISTS t1, t2; DROP TABLE IF EXISTS t1, t2;
...@@ -3212,6 +3226,7 @@ CREATE TABLE t1 ( a int ) ENGINE=InnoDB; ...@@ -3212,6 +3226,7 @@ CREATE TABLE t1 ( a int ) ENGINE=InnoDB;
CREATE TABLE t2 LIKE t1; CREATE TABLE t2 LIKE t1;
SELECT * FROM t2; SELECT * FROM t2;
a a
SET binlog_format='MIXED';
SET TX_ISOLATION='read-committed'; SET TX_ISOLATION='read-committed';
SET AUTOCOMMIT=0; SET AUTOCOMMIT=0;
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
...@@ -3219,10 +3234,12 @@ COMMIT; ...@@ -3219,10 +3234,12 @@ COMMIT;
SELECT * FROM t1 WHERE a=1; SELECT * FROM t1 WHERE a=1;
a a
1 1
SET binlog_format='MIXED';
SET TX_ISOLATION='read-committed'; SET TX_ISOLATION='read-committed';
SET AUTOCOMMIT=0; SET AUTOCOMMIT=0;
SELECT * FROM t2; SELECT * FROM t2;
a a
SET binlog_format='MIXED';
SET TX_ISOLATION='read-committed'; SET TX_ISOLATION='read-committed';
SET AUTOCOMMIT=0; SET AUTOCOMMIT=0;
INSERT INTO t1 VALUES (2); INSERT INTO t1 VALUES (2);
......
...@@ -1512,6 +1512,7 @@ ok ...@@ -1512,6 +1512,7 @@ ok
drop table t1; drop table t1;
SET SESSION AUTOCOMMIT = 0; SET SESSION AUTOCOMMIT = 0;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
set binlog_format=mixed;
# Switch to connection con1 # Switch to connection con1
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(256)) CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(256))
ENGINE = InnoDB; ENGINE = InnoDB;
......
...@@ -747,11 +747,13 @@ select t1.b from v1a; ...@@ -747,11 +747,13 @@ select t1.b from v1a;
ERROR 42S22: Unknown column 't1.b' in 'field list' ERROR 42S22: Unknown column 't1.b' in 'field list'
select * from v1a join v1b on t1.b = t2.b; select * from v1a join v1b on t1.b = t2.b;
ERROR 42S22: Unknown column 't1.b' in 'on clause' ERROR 42S22: Unknown column 't1.b' in 'on clause'
select * from information_schema.statistics join information_schema.columns select
using(table_name,column_name) where table_name='user'; statistics.TABLE_NAME, statistics.COLUMN_NAME, statistics.TABLE_CATALOG, statistics.TABLE_SCHEMA, statistics.NON_UNIQUE, statistics.INDEX_SCHEMA, statistics.INDEX_NAME, statistics.SEQ_IN_INDEX, statistics.COLLATION, statistics.SUB_PART, statistics.PACKED, statistics.NULLABLE, statistics.INDEX_TYPE, statistics.COMMENT,
TABLE_NAME COLUMN_NAME TABLE_CATALOG TABLE_SCHEMA NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT columns.TABLE_CATALOG, columns.TABLE_SCHEMA, columns.COLUMN_DEFAULT, columns.IS_NULLABLE, columns.DATA_TYPE, columns.CHARACTER_MAXIMUM_LENGTH, columns.CHARACTER_OCTET_LENGTH, columns.NUMERIC_PRECISION, columns.NUMERIC_SCALE, columns.CHARACTER_SET_NAME, columns.COLLATION_NAME, columns.COLUMN_TYPE, columns.COLUMN_KEY, columns.EXTRA, columns.COLUMN_COMMENT
user Host NULL mysql 0 mysql PRIMARY 1 A # NULL NULL BTREE NULL mysql 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI # from information_schema.statistics join information_schema.columns using(table_name,column_name) where table_name='user';
user User NULL mysql 0 mysql PRIMARY 2 A # NULL NULL BTREE NULL mysql 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI # TABLE_NAME COLUMN_NAME TABLE_CATALOG TABLE_SCHEMA NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLLATION SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA COLUMN_COMMENT
user Host NULL mysql 0 mysql PRIMARY 1 A NULL NULL BTREE NULL mysql NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
user User NULL mysql 0 mysql PRIMARY 2 A NULL NULL BTREE NULL mysql NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
drop table t1; drop table t1;
drop table t2; drop table t2;
drop table t3; drop table t3;
......
...@@ -337,6 +337,126 @@ DROP VIEW v2; ...@@ -337,6 +337,126 @@ DROP VIEW v2;
DROP VIEW v3; DROP VIEW v3;
# -- End of Bug#35469. # -- End of Bug#35469.
Bug#37114
SET SESSION character_set_client=latin1;
SET SESSION character_set_server=latin1;
SET SESSION character_set_connection=latin1;
SET @OLD_SQL_MODE=@@SESSION.SQL_MODE;
test LOAD DATA INFILE
SET sql_mode = '';
SELECT '1 \\aa\n' INTO DUMPFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt';
CREATE TABLE t1 (id INT, val1 CHAR(3)) ENGINE=MyISAM;
SET sql_mode = 'NO_BACKSLASH_ESCAPES';
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' REPLACE INTO TABLE t1 FIELDS TERMINATED BY ' ';
SELECT * FROM t1;
id val1
1 \aa
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug37114_out.txt' FIELDS ESCAPED BY '' TERMINATED BY ' ' FROM t1;
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug37114_out.txt' FIELDS TERMINATED BY ' ' FROM t1;
INSERT INTO t1 (id, val1) VALUES (1, '\aa');
SELECT * FROM t1;
id val1
1 \aa
1 \aa
SET sql_mode='';
INSERT INTO t1 (id, val1) VALUES (1, '\aa');
SELECT * FROM t1;
id val1
1 \aa
1 \aa
1 aa
DROP TABLE t1;
test SELECT INTO OUTFILE
CREATE TABLE t1 (id INT PRIMARY KEY, val1 CHAR(4));
CREATE TABLE t2 LIKE t1;
SET sql_mode = '';
INSERT INTO t1 (id, val1) VALUES (5, '\ttab');
INSERT INTO t1 (id, val1) VALUES (4, '\\r');
SET sql_mode = 'NO_BACKSLASH_ESCAPES';
INSERT INTO t1 (id, val1) VALUES (3, '\tx');
1.1 NO_BACKSLASH_ESCAPES, use defaults for ESCAPED BY
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' FIELDS TERMINATED BY ' ' FROM t1 ORDER BY id;
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' INTO TABLE t2 FIELDS TERMINATED BY ' ';
SELECT 'before' AS t, id, val1, hex(val1) FROM t1 UNION
SELECT 'after' AS t, id, val1, hex(val1) FROM t2 ORDER BY id,t DESC;
t id val1 hex(val1)
before 3 \tx 5C7478
after 3 \tx 5C7478
before 4 \r 5C72
after 4 \r 5C72
before 5 tab 09746162
after 5 tab 09746162
TRUNCATE t2;
SELECT LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt");
LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt")
3 \tx
4 \r
5 tab
1.2 NO_BACKSLASH_ESCAPES, override defaults for ESCAPED BY
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' FIELDS ESCAPED BY '\' TERMINATED BY ' ' FROM t1 ORDER BY id;
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' INTO TABLE t2 FIELDS ESCAPED BY '\' TERMINATED BY ' ';
SELECT 'before' AS t, id, val1, hex(val1) FROM t1 UNION
SELECT 'after' AS t, id, val1, hex(val1) FROM t2 ORDER BY id,t DESC;
t id val1 hex(val1)
before 3 \tx 5C7478
after 3 \tx 5C7478
before 4 \r 5C72
after 4 \r 5C72
before 5 tab 09746162
after 5 tab 09746162
TRUNCATE t2;
SELECT LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt");
LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt")
3 \\tx
4 \\r
5 tab
SET sql_mode = '';
2.1 !NO_BACKSLASH_ESCAPES, use defaults for ESCAPED BY
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' FIELDS TERMINATED BY ' ' FROM t1 ORDER BY id;
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' INTO TABLE t2 FIELDS TERMINATED BY ' ';
SELECT 'before' AS t, id, val1, hex(val1) FROM t1 UNION
SELECT 'after' AS t, id, val1, hex(val1) FROM t2 ORDER BY id,t DESC;
t id val1 hex(val1)
before 3 \tx 5C7478
after 3 \tx 5C7478
before 4 \r 5C72
after 4 \r 5C72
before 5 tab 09746162
after 5 tab 09746162
TRUNCATE t2;
SET sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt");
LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt")
3 \\tx
4 \\r
5 tab
SET sql_mode = '';
2.2 !NO_BACKSLASH_ESCAPES, override defaults for ESCAPED BY
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' FIELDS ESCAPED BY '' TERMINATED BY ' ' FROM t1 ORDER BY id;
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug37114.txt' INTO TABLE t2 FIELDS ESCAPED BY '' TERMINATED BY ' ';
SELECT 'before' AS t, id, val1, hex(val1) FROM t1 UNION
SELECT 'after' AS t, id, val1, hex(val1) FROM t2 ORDER BY id,t DESC;
t id val1 hex(val1)
before 3 \tx 5C7478
after 3 \tx 5C7478
before 4 \r 5C72
after 4 \r 5C72
before 5 tab 09746162
after 5 tab 09746162
TRUNCATE t2;
SET sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt");
LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt")
3 \tx
4 \r
5 tab
set session sql_mode=@OLD_SQL_MODE;
DROP TABLE t1,t2;
End of 5.0 tests
CREATE TABLE t1 (a int); CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
SET NAMES latin1; SET NAMES latin1;
...@@ -364,3 +484,4 @@ SET character_set_filesystem=default; ...@@ -364,3 +484,4 @@ SET character_set_filesystem=default;
select @@character_set_filesystem; select @@character_set_filesystem;
@@character_set_filesystem @@character_set_filesystem
binary binary
End of 5.1 tests
...@@ -96,6 +96,40 @@ alter table t1 auto_increment=0; ...@@ -96,6 +96,40 @@ alter table t1 auto_increment=0;
alter table t1 auto_increment=0; alter table t1 auto_increment=0;
unlock tables; unlock tables;
drop table t1; drop table t1;
CREATE TABLE t1 (
a int(11) unsigned default NULL,
b varchar(255) default NULL,
UNIQUE KEY a (a),
KEY b (b)
);
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
CREATE TABLE t2 SELECT * FROM t1;
CREATE TABLE t3 SELECT * FROM t1;
# test altering of columns that multiupdate doesn't use
# normal mode
# PS mode
# test altering of columns that multiupdate uses
# normal mode
# PS mode
DROP TABLE t1, t2, t3;
CREATE TABLE t1( a INT, b INT );
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4);
# 1. test regular tables
# 1.1. test altering of columns that multiupdate doesn't use
# 1.1.1. normal mode
# 1.1.2. PS mode
# 1.2. test altering of columns that multiupdate uses
# 1.2.1. normal mode
# 1.2.2. PS mode
ALTER TABLE t1 ADD COLUMN a INT;
# 2. test UNIONs
# 2.1. test altering of columns that multiupdate doesn't use
# 2.1.1. normal mode
# 2.1.2. PS mode
# 2.2. test altering of columns that multiupdate uses
# 2.2.1. normal mode
# 2.2.2. PS mode
DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
create table t1 (i int); create table t1 (i int);
lock table t1 read; lock table t1 read;
......
...@@ -6,8 +6,8 @@ INIT_VALUE ...@@ -6,8 +6,8 @@ INIT_VALUE
SELECT @@log AS INIT_VALUE; SELECT @@log AS INIT_VALUE;
INIT_VALUE INIT_VALUE
1 1
SET @@global.log = ON; SET @@global.general_log = ON;
SET global log = 0; SET global general_log = 0;
'Bug# 34832: log is a system but it is not accessible using SET @@global.log;' 'Bug# 34832: log is a system but it is not accessible using SET @@global.log;'
'SET GLOBAL log; and SELECT @@global.log. SHOW VARIABLES shows the value of log.' 'SET GLOBAL log; and SELECT @@global.log. SHOW VARIABLES shows the value of log.'
'#--------------------FN_DYNVARS_062_02-------------------------#' '#--------------------FN_DYNVARS_062_02-------------------------#'
......
...@@ -5,17 +5,17 @@ SELECT @start_global_value; ...@@ -5,17 +5,17 @@ SELECT @start_global_value;
'#--------------------FN_DYNVARS_064_01-------------------------#' '#--------------------FN_DYNVARS_064_01-------------------------#'
SET @@global.log_bin_trust_routine_creators = TRUE; SET @@global.log_bin_trust_routine_creators = TRUE;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SET @@global.log_bin_trust_routine_creators = DEFAULT; SET @@global.log_bin_trust_routine_creators = DEFAULT;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
0 0
'#--------------------FN_DYNVARS_064_02-------------------------#' '#--------------------FN_DYNVARS_064_02-------------------------#'
SET @@global.log_bin_trust_routine_creators = DEFAULT; SET @@global.log_bin_trust_routine_creators = DEFAULT;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators = 'FALSE'; SELECT @@global.log_bin_trust_routine_creators = 'FALSE';
@@global.log_bin_trust_routine_creators = 'FALSE' @@global.log_bin_trust_routine_creators = 'FALSE'
1 1
...@@ -24,37 +24,37 @@ Warning 1292 Truncated incorrect DOUBLE value: 'FALSE' ...@@ -24,37 +24,37 @@ Warning 1292 Truncated incorrect DOUBLE value: 'FALSE'
'#--------------------FN_DYNVARS_064_03-------------------------#' '#--------------------FN_DYNVARS_064_03-------------------------#'
SET @@global.log_bin_trust_routine_creators = ON; SET @@global.log_bin_trust_routine_creators = ON;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
1 1
SET @@global.log_bin_trust_routine_creators = OFF; SET @@global.log_bin_trust_routine_creators = OFF;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
0 0
SET @@global.log_bin_trust_routine_creators = 0; SET @@global.log_bin_trust_routine_creators = 0;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
0 0
SET @@global.log_bin_trust_routine_creators = 1; SET @@global.log_bin_trust_routine_creators = 1;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
1 1
SET @@global.log_bin_trust_routine_creators = TRUE; SET @@global.log_bin_trust_routine_creators = TRUE;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
1 1
SET @@global.log_bin_trust_routine_creators = FALSE; SET @@global.log_bin_trust_routine_creators = FALSE;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
0 0
...@@ -70,7 +70,7 @@ SET @@global.log_bin_trust_routine_creators = "OFFF"; ...@@ -70,7 +70,7 @@ SET @@global.log_bin_trust_routine_creators = "OFFF";
ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'OFFF' ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'OFFF'
SET @@global.log_bin_trust_routine_creators = OF; SET @@global.log_bin_trust_routine_creators = OF;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
0 0
...@@ -96,14 +96,14 @@ ERROR HY000: Variable 'log_bin_trust_routine_creators' is a GLOBAL variable ...@@ -96,14 +96,14 @@ ERROR HY000: Variable 'log_bin_trust_routine_creators' is a GLOBAL variable
'#---------------------FN_DYNVARS_064_07----------------------#' '#---------------------FN_DYNVARS_064_07----------------------#'
SET @@global.log_bin_trust_routine_creators = TRUE; SET @@global.log_bin_trust_routine_creators = TRUE;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators; SELECT @@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators;
@@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators @@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators
1 1
'#---------------------FN_DYNVARS_064_08----------------------#' '#---------------------FN_DYNVARS_064_08----------------------#'
SET @@global.log_bin_trust_routine_creators = TRUE; SET @@global.log_bin_trust_routine_creators = TRUE;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@log_bin_trust_routine_creators; SELECT @@log_bin_trust_routine_creators;
@@log_bin_trust_routine_creators @@log_bin_trust_routine_creators
1 1
...@@ -115,7 +115,7 @@ SELECT log_bin_trust_routine_creators = @@session.log_bin_trust_routine_creators ...@@ -115,7 +115,7 @@ SELECT log_bin_trust_routine_creators = @@session.log_bin_trust_routine_creators
ERROR 42S22: Unknown column 'log_bin_trust_routine_creators' in 'field list' ERROR 42S22: Unknown column 'log_bin_trust_routine_creators' in 'field list'
SET @@global.log_bin_trust_routine_creators = @start_global_value; SET @@global.log_bin_trust_routine_creators = @start_global_value;
Warnings: Warnings:
Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use '@@log_bin_trust_function_creators' instead
SELECT @@global.log_bin_trust_routine_creators; SELECT @@global.log_bin_trust_routine_creators;
@@global.log_bin_trust_routine_creators @@global.log_bin_trust_routine_creators
1 1
...@@ -190,6 +190,8 @@ SELECT @@general_log, @@log; ...@@ -190,6 +190,8 @@ SELECT @@general_log, @@log;
@@general_log @@log @@general_log @@log
1 1 1 1
SET GLOBAL log = 0; SET GLOBAL log = 0;
Warnings:
Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
SHOW VARIABLES LIKE 'general_log'; SHOW VARIABLES LIKE 'general_log';
Variable_name Value Variable_name Value
general_log OFF general_log OFF
...@@ -219,6 +221,8 @@ SELECT @@slow_query_log, @@log_slow_queries; ...@@ -219,6 +221,8 @@ SELECT @@slow_query_log, @@log_slow_queries;
@@slow_query_log @@log_slow_queries @@slow_query_log @@log_slow_queries
0 0 0 0
SET GLOBAL log_slow_queries = 0; SET GLOBAL log_slow_queries = 0;
Warnings:
Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
SHOW VARIABLES LIKE 'slow_query_log'; SHOW VARIABLES LIKE 'slow_query_log';
Variable_name Value Variable_name Value
slow_query_log OFF slow_query_log OFF
...@@ -273,6 +277,30 @@ SET GLOBAL general_log_file = @general_log_file_saved; ...@@ -273,6 +277,30 @@ SET GLOBAL general_log_file = @general_log_file_saved;
SET GLOBAL slow_query_log_file = @slow_query_log_file_saved; SET GLOBAL slow_query_log_file = @slow_query_log_file_saved;
# -- End of Bug#32748. # -- End of Bug#32748.
deprecated:
SET GLOBAL log = 0;
Warnings:
Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
SET GLOBAL log_slow_queries = 0;
Warnings:
Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
SET GLOBAL log = DEFAULT;
Warnings:
Warning 1287 The syntax '@@log' is deprecated and will be removed in MySQL 7.0. Please use '@@general_log' instead
SET GLOBAL log_slow_queries = DEFAULT;
Warnings:
Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
not deprecated:
SELECT @@global.general_log_file INTO @my_glf;
SELECT @@global.slow_query_log_file INTO @my_sqlf;
SET GLOBAL general_log = 0;
SET GLOBAL slow_query_log = 0;
SET GLOBAL general_log_file = 'WL4403_G.log';
SET GLOBAL slow_query_log_file = 'WL4403_SQ.log';
SET GLOBAL general_log_file = @my_glf;
SET GLOBAL slow_query_log_file = @my_sqlf;
SET GLOBAL general_log = DEFAULT;
SET GLOBAL slow_query_log = DEFAULT;
End of 5.1 tests End of 5.1 tests
set @@global.general_log= @start_general_log; set @@global.general_log= @start_general_log;
set @@global.slow_query_log= @start_slow_query_log; set @@global.slow_query_log= @start_slow_query_log;
......
...@@ -839,6 +839,35 @@ Execute select '000 001 002 003 004 005 006 007 008 009010 011 012 013 014 015 0 ...@@ -839,6 +839,35 @@ Execute select '000 001 002 003 004 005 006 007 008 009010 011 012 013 014 015 0
Query set global general_log = off Query set global general_log = off
deallocate prepare long_query; deallocate prepare long_query;
set global general_log = @old_general_log_state; set global general_log = @old_general_log_state;
DROP TABLE IF EXISTS log_count;
DROP TABLE IF EXISTS slow_log_copy;
DROP TABLE IF EXISTS general_log_copy;
CREATE TABLE log_count (count BIGINT(21));
SET @old_general_log_state = @@global.general_log;
SET @old_slow_log_state = @@global.slow_query_log;
SET GLOBAL general_log = ON;
SET GLOBAL slow_query_log = ON;
CREATE TABLE slow_log_copy SELECT * FROM mysql.slow_log;
INSERT INTO slow_log_copy SELECT * FROM mysql.slow_log;
INSERT INTO log_count (count) VALUES ((SELECT count(*) FROM mysql.slow_log));
DROP TABLE slow_log_copy;
CREATE TABLE general_log_copy SELECT * FROM mysql.general_log;
INSERT INTO general_log_copy SELECT * FROM mysql.general_log;
INSERT INTO log_count (count) VALUES ((SELECT count(*) FROM mysql.general_log));
DROP TABLE general_log_copy;
SET GLOBAL general_log = OFF;
SET GLOBAL slow_query_log = OFF;
CREATE TABLE slow_log_copy SELECT * FROM mysql.slow_log;
INSERT INTO slow_log_copy SELECT * FROM mysql.slow_log;
INSERT INTO log_count (count) VALUES ((SELECT count(*) FROM mysql.slow_log));
DROP TABLE slow_log_copy;
CREATE TABLE general_log_copy SELECT * FROM mysql.general_log;
INSERT INTO general_log_copy SELECT * FROM mysql.general_log;
INSERT INTO log_count (count) VALUES ((SELECT count(*) FROM mysql.general_log));
DROP TABLE general_log_copy;
SET GLOBAL general_log = @old_general_log_state;
SET GLOBAL slow_query_log = @old_slow_log_state;
DROP TABLE log_count;
SET @old_slow_log_state = @@global.slow_query_log; SET @old_slow_log_state = @@global.slow_query_log;
SET SESSION long_query_time = 0; SET SESSION long_query_time = 0;
SET GLOBAL slow_query_log = ON; SET GLOBAL slow_query_log = ON;
......
...@@ -277,3 +277,16 @@ drop table t3; ...@@ -277,3 +277,16 @@ drop table t3;
drop table t4; drop table t4;
drop table t5; drop table t5;
drop table t6; drop table t6;
SELECT @@global.storage_engine INTO @old_engine;
SET GLOBAL storage_engine=InnoDB;
CREATE VIEW v1 AS SELECT * FROM t1;
INSERT INTO t1 VALUES();
SELECT COUNT(*) FROM v1;
COUNT(*)
1
SELECT COUNT(*) FROM v1;
COUNT(*)
1
DROP VIEW v1;
DROP TABLE t1;
SET GLOBAL storage_engine=@old_engine;
Bug#37938 - Test "mysqldump" lacks various insert statements
Turn off concurrent inserts to avoid random errors
NOTE: We reset the variable back to saved value at the end of test
SET @OLD_CONCURRENT_INSERT = @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT = 0;
DROP TABLE IF EXISTS t1, `"t"1`, t1aa, t2, t2aa, t3; DROP TABLE IF EXISTS t1, `"t"1`, t1aa, t2, t2aa, t3;
drop database if exists mysqldump_test_db; drop database if exists mysqldump_test_db;
drop database if exists db1; drop database if exists db1;
...@@ -1999,7 +2004,7 @@ SET @saved_cs_client = @@character_set_client; ...@@ -1999,7 +2004,7 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8; SET character_set_client = utf8;
/*!50001 CREATE TABLE `v2` ( /*!50001 CREATE TABLE `v2` (
`a` varchar(30) `a` varchar(30)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v2`*/; /*!50001 DROP TABLE `v2`*/;
/*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/;
...@@ -2096,7 +2101,7 @@ SET @saved_cs_client = @@character_set_client; ...@@ -2096,7 +2101,7 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8; SET character_set_client = utf8;
/*!50001 CREATE TABLE `v1` ( /*!50001 CREATE TABLE `v1` (
`a` int(11) `a` int(11)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v1`*/; /*!50001 DROP TABLE `v1`*/;
/*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/;
...@@ -2170,7 +2175,7 @@ SET @saved_cs_client = @@character_set_client; ...@@ -2170,7 +2175,7 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8; SET character_set_client = utf8;
/*!50001 CREATE TABLE `v2` ( /*!50001 CREATE TABLE `v2` (
`a` varchar(30) `a` varchar(30)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v2`*/; /*!50001 DROP TABLE `v2`*/;
/*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/;
...@@ -2286,7 +2291,7 @@ SET character_set_client = utf8; ...@@ -2286,7 +2291,7 @@ SET character_set_client = utf8;
`a` int(11), `a` int(11),
`b` int(11), `b` int(11),
`c` varchar(30) `c` varchar(30)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
DROP TABLE IF EXISTS `v2`; DROP TABLE IF EXISTS `v2`;
/*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/;
...@@ -2294,7 +2299,7 @@ SET @saved_cs_client = @@character_set_client; ...@@ -2294,7 +2299,7 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8; SET character_set_client = utf8;
/*!50001 CREATE TABLE `v2` ( /*!50001 CREATE TABLE `v2` (
`a` int(11) `a` int(11)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
DROP TABLE IF EXISTS `v3`; DROP TABLE IF EXISTS `v3`;
/*!50001 DROP VIEW IF EXISTS `v3`*/; /*!50001 DROP VIEW IF EXISTS `v3`*/;
...@@ -2304,7 +2309,7 @@ SET character_set_client = utf8; ...@@ -2304,7 +2309,7 @@ SET character_set_client = utf8;
`a` int(11), `a` int(11),
`b` int(11), `b` int(11),
`c` varchar(30) `c` varchar(30)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v1`*/; /*!50001 DROP TABLE `v1`*/;
/*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/;
...@@ -3041,7 +3046,7 @@ SET character_set_client = utf8; ...@@ -3041,7 +3046,7 @@ SET character_set_client = utf8;
`a` int(11), `a` int(11),
`b` varchar(32), `b` varchar(32),
`c` varchar(32) `c` varchar(32)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
DROP TABLE IF EXISTS `v1`; DROP TABLE IF EXISTS `v1`;
/*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/;
...@@ -3051,7 +3056,7 @@ SET character_set_client = utf8; ...@@ -3051,7 +3056,7 @@ SET character_set_client = utf8;
`a` int(11), `a` int(11),
`b` varchar(32), `b` varchar(32),
`c` varchar(32) `c` varchar(32)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
DROP TABLE IF EXISTS `v2`; DROP TABLE IF EXISTS `v2`;
/*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/;
...@@ -3061,7 +3066,7 @@ SET character_set_client = utf8; ...@@ -3061,7 +3066,7 @@ SET character_set_client = utf8;
`a` int(11), `a` int(11),
`b` varchar(32), `b` varchar(32),
`c` varchar(32) `c` varchar(32)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
USE `test`; USE `test`;
...@@ -3441,7 +3446,7 @@ SET @saved_cs_client = @@character_set_client; ...@@ -3441,7 +3446,7 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8; SET character_set_client = utf8;
/*!50001 CREATE TABLE `v1` ( /*!50001 CREATE TABLE `v1` (
`id` int(11) `id` int(11)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
USE `mysqldump_test_db`; USE `mysqldump_test_db`;
...@@ -3501,7 +3506,7 @@ SET @saved_cs_client = @@character_set_client; ...@@ -3501,7 +3506,7 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8; SET character_set_client = utf8;
/*!50001 CREATE TABLE `nasishnasifu` ( /*!50001 CREATE TABLE `nasishnasifu` (
`id` bigint(20) unsigned `id` bigint(20) unsigned
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
USE `mysqldump_tables`; USE `mysqldump_tables`;
...@@ -3959,7 +3964,7 @@ SET @saved_cs_client = @@character_set_client; ...@@ -3959,7 +3964,7 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8; SET character_set_client = utf8;
/*!50001 CREATE TABLE `v1` ( /*!50001 CREATE TABLE `v1` (
`id` int(11) `id` int(11)
) */; ) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client; SET character_set_client = @saved_cs_client;
USE `mysqldump_test_db`; USE `mysqldump_test_db`;
...@@ -4089,6 +4094,7 @@ DROP DATABASE mysqldump_test_db; ...@@ -4089,6 +4094,7 @@ DROP DATABASE mysqldump_test_db;
# -- End of test case for Bug#32538. # -- End of test case for Bug#32538.
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
# #
# End of 5.1 tests # End of 5.1 tests
# #
...@@ -1448,13 +1448,15 @@ create trigger t_ad after delete on t for each row insert into t values (old.s1) ...@@ -1448,13 +1448,15 @@ create trigger t_ad after delete on t for each row insert into t values (old.s1)
insert into t values (1); insert into t values (1);
drop table t; drop table t;
USE mysql; USE mysql;
TRUNCATE TABLE general_log;
SET @old_general_log_state = @@global.general_log;
SET GLOBAL general_log = 0; SET GLOBAL general_log = 0;
ALTER TABLE general_log ENGINE = MyISAM; ALTER TABLE general_log ENGINE = MyISAM;
ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time)) ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time))
(PARTITION p0 VALUES LESS THAN (733144), PARTITION p1 VALUES LESS THAN (3000000)); (PARTITION p0 VALUES LESS THAN (733144), PARTITION p1 VALUES LESS THAN (3000000));
ERROR HY000: Incorrect usage of PARTITION and log table ERROR HY000: Incorrect usage of PARTITION and log table
ALTER TABLE general_log ENGINE = CSV; ALTER TABLE general_log ENGINE = CSV;
SET GLOBAL general_log = default; SET GLOBAL general_log = @old_general_log_state;
use test; use test;
create table t2 (b int); create table t2 (b int);
create table t1 (b int) create table t1 (b int)
...@@ -1637,4 +1639,93 @@ select count(*) from t1, t2 where t1.createdDate = t2.createdDate; ...@@ -1637,4 +1639,93 @@ select count(*) from t1, t2 where t1.createdDate = t2.createdDate;
count(*) count(*)
1 1
drop table t1, t2; drop table t1, t2;
SET @orig_sql_mode = @@SQL_MODE;
SET SQL_MODE='STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO';
CREATE TABLE t1 (c1 INT)
PARTITION BY LIST(1 DIV c1) (
PARTITION p0 VALUES IN (NULL),
PARTITION p1 VALUES IN (1)
);
INSERT INTO t1 VALUES (0);
ERROR 22012: Division by 0
SELECT * FROM t1;
c1
TRUNCATE t1;
INSERT INTO t1 VALUES (NULL), (0), (1), (2);
ERROR 22012: Division by 0
SELECT * FROM t1;
c1
NULL
DROP TABLE t1;
SET SQL_MODE= @orig_sql_mode;
create table t1 (s1 int) partition by hash(s1) partitions 2;
create index i on t1 (s1);
insert into t1 values (1);
insert into t1 select s1 from t1;
insert into t1 select s1 from t1;
insert into t1 select s1 from t1 order by s1 desc;
select * from t1;
s1
1
1
1
1
1
1
1
1
drop table t1;
create table t1 (s1 int) partition by range(s1)
(partition pa1 values less than (10),
partition pa2 values less than MAXVALUE);
create index i on t1 (s1);
insert into t1 values (1);
insert into t1 select s1 from t1;
insert into t1 select s1 from t1;
insert into t1 select s1 from t1 order by s1 desc;
select * from t1;
s1
1
1
1
1
1
1
1
1
drop table t1;
create table t1 (s1 int) partition by range(s1)
(partition pa1 values less than (10),
partition pa2 values less than MAXVALUE);
create index i on t1 (s1);
insert into t1 values (20);
insert into t1 select s1 from t1;
insert into t1 select s1 from t1;
insert into t1 select s1 from t1 order by s1 desc;
select * from t1;
s1
20
20
20
20
20
20
20
20
drop table t1;
create table t1 (s1 int) partition by range(s1)
(partition pa1 values less than (10),
partition pa2 values less than MAXVALUE);
create index i on t1 (s1);
insert into t1 values (1), (2), (3), (4), (5), (6), (7), (8);
insert into t1 select s1 from t1;
insert into t1 select s1 from t1;
insert into t1 select s1 from t1;
insert into t1 select s1 from t1;
insert into t1 select s1 from t1 order by s1 desc;
insert into t1 select s1 from t1 where s1=3;
select count(*) from t1;
count(*)
288
drop table t1;
End of 5.1 tests End of 5.1 tests
...@@ -742,3 +742,23 @@ WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR ...@@ -742,3 +742,23 @@ WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where 1 SIMPLE t1 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where
DROP TABLE t1; DROP TABLE t1;
create table t1 (a int);
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
CREATE TABLE t2 (
defid int(10) unsigned NOT NULL,
day int(10) unsigned NOT NULL,
count int(10) unsigned NOT NULL,
filler char(200),
KEY (defid,day)
)
PARTITION BY RANGE (day) (
PARTITION p7 VALUES LESS THAN (20070401) ,
PARTITION p8 VALUES LESS THAN (20070501));
insert into t2 select 20, 20070311, 1, 'filler' from t1 A, t1 B;
insert into t2 select 20, 20070411, 1, 'filler' from t1 A, t1 B;
insert into t2 values(52, 20070321, 123, 'filler') ;
insert into t2 values(52, 20070322, 456, 'filler') ;
select sum(count) from t2 ch where ch.defid in (50,52) and ch.day between 20070320 and 20070401 group by defid;
sum(count)
579
drop table t1, t2;
SET @global_slow_launch_time = @@GLOBAL.slow_launch_time; SET @global_slow_launch_time = @@GLOBAL.slow_launch_time;
'#--------------------FN_DYNVARS_124_01-------------------------#'
** Connection default ** ** Connection default **
'#--------------------FN_DYNVARS_124_01-------------------------#'
SET @@GLOBAL.slow_launch_time=0; SET @@GLOBAL.slow_launch_time=0;
SELECT @@GLOBAL.slow_launch_time; SELECT @@GLOBAL.slow_launch_time;
@@GLOBAL.slow_launch_time @@GLOBAL.slow_launch_time
0 0
** Connecting conn5 using username 'root' ** ** Connecting conn1 using username 'root' **
** Connecting conn6 using username 'root' ** ** Switch to connection default and disconnect conn1 **
** Connecting conn7 using username 'root' ** '#--------------------FN_DYNVARS_124_02-------------------------#'
** Connecting conn8 using username 'root' ** SET @@GLOBAL.slow_launch_time= 1000;
** Connecting conn9 using username 'root' ** SELECT @@GLOBAL.slow_launch_time;
** Connecting conn10 using username 'root' ** @@GLOBAL.slow_launch_time
** Connecting conn11 using username 'root' ** 1000
** Connecting conn12 using username 'root' ** ** Connecting conn2 using username 'root' **
** Connecting conn13 using username 'root' ** ** Switch to connection default and disconnect conn2 **
** Connecting conn14 using username 'root' **
** Connecting conn15 using username 'root' **
** Connecting conn16 using username 'root' **
show status like 'slow_launch_threads';
Variable_name Value
Slow_launch_threads 12
12 Expected
** Connection default **
** Disconnecting conn5 **
** Disconnecting conn6 **
** Disconnecting conn7 **
** Disconnecting conn8 **
** Disconnecting conn9 **
** Disconnecting conn10 **
** Disconnecting conn11 **
** Disconnecting conn12 **
** Disconnecting conn13 **
** Disconnecting conn14 **
** Disconnecting conn15 **
** Disconnecting conn16 **
SET @@GLOBAL.slow_launch_time = @global_slow_launch_time; SET @@GLOBAL.slow_launch_time = @global_slow_launch_time;
...@@ -1629,6 +1629,13 @@ end loop label1; ...@@ -1629,6 +1629,13 @@ end loop label1;
end loop; end loop;
end| end|
ERROR 42000: End-label label1 without match ERROR 42000: End-label label1 without match
CREATE TABLE t1 (a INT)|
INSERT INTO t1 VALUES (1),(2)|
CREATE PROCEDURE p1(a INT) BEGIN END|
CALL p1((SELECT * FROM t1))|
ERROR 21000: Subquery returns more than 1 row
DROP PROCEDURE IF EXISTS p1|
DROP TABLE t1|
drop procedure if exists p1; drop procedure if exists p1;
create procedure p1() create procedure p1()
begin begin
......
...@@ -6836,6 +6836,16 @@ drop procedure p1; ...@@ -6836,6 +6836,16 @@ drop procedure p1;
drop function f1; drop function f1;
drop view v1; drop view v1;
drop table t1; drop table t1;
drop procedure if exists `p2` $
create procedure `p2`(in `a` text charset utf8)
begin
declare `pos` int default 1;
declare `str` text charset utf8;
set `str` := `a`;
select substr(`str`, `pos`+ 1 ) into `str`;
end $
call `p2`('s s s s s s');
drop procedure `p2`;
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# -- End of 5.0 tests # -- End of 5.0 tests
# ------------------------------------------------------------------ # ------------------------------------------------------------------
......
set @old_concurrent_insert= @@global.concurrent_insert;
set @@global.concurrent_insert= 0;
flush status; flush status;
show status like 'Table_lock%'; show status like 'Table_lock%';
Variable_name Value Variable_name Value
...@@ -7,22 +9,31 @@ select * from information_schema.session_status where variable_name like 'Table_ ...@@ -7,22 +9,31 @@ select * from information_schema.session_status where variable_name like 'Table_
VARIABLE_NAME VARIABLE_VALUE VARIABLE_NAME VARIABLE_VALUE
TABLE_LOCKS_IMMEDIATE 2 TABLE_LOCKS_IMMEDIATE 2
TABLE_LOCKS_WAITED 0 TABLE_LOCKS_WAITED 0
SET SQL_LOG_BIN=0; # Switched to connection: con1
set sql_log_bin=0;
set @old_general_log = @@global.general_log; set @old_general_log = @@global.general_log;
set global general_log = 'OFF'; set global general_log = 'OFF';
drop table if exists t1; drop table if exists t1;
create table t1(n int) engine=myisam; create table t1(n int) engine=myisam;
insert into t1 values(1); insert into t1 values(1);
select 1;
1
1
# Switched to connection: con2
lock tables t1 read; lock tables t1 read;
unlock tables; unlock tables;
lock tables t1 read; lock tables t1 read;
# Switched to connection: con1
update t1 set n = 3; update t1 set n = 3;
# Switched to connection: con2
unlock tables; unlock tables;
# Switched to connection: con1
show status like 'Table_locks_waited'; show status like 'Table_locks_waited';
Variable_name Value Variable_name Value
Table_locks_waited 1 Table_locks_waited 1
drop table t1; drop table t1;
set global general_log = @old_general_log; set global general_log = @old_general_log;
# Switched to connection: default
select 1; select 1;
1 1
1 1
...@@ -198,3 +209,4 @@ ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table ' ...@@ -198,3 +209,4 @@ ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table '
drop database db37908; drop database db37908;
drop procedure proc37908; drop procedure proc37908;
drop function func37908; drop function func37908;
set @@global.concurrent_insert= @old_concurrent_insert;
...@@ -161,3 +161,32 @@ SELECT @a, @b; ...@@ -161,3 +161,32 @@ SELECT @a, @b;
1 1 1 1
DROP TABLE t2, t1; DROP TABLE t2, t1;
End of 5.0 tests End of 5.0 tests
BUG#31612
Trigger fired multiple times leads to gaps in auto_increment sequence
create table t1 (a int, val char(1)) engine=InnoDB;
create table t2 (b int auto_increment primary key,
val char(1)) engine=InnoDB;
create trigger t1_after_insert after
insert on t1 for each row insert into t2 set val=NEW.val;
insert into t1 values ( 123, 'a'), ( 123, 'b'), ( 123, 'c'),
(123, 'd'), (123, 'e'), (123, 'f'), (123, 'g');
insert into t1 values ( 654, 'a'), ( 654, 'b'), ( 654, 'c'),
(654, 'd'), (654, 'e'), (654, 'f'), (654, 'g');
select * from t2 order by b;
b val
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 a
9 b
10 c
11 d
12 e
13 f
14 g
drop trigger t1_after_insert;
drop table t1,t2;
...@@ -21,8 +21,10 @@ INSERT INTO t1 VALUES(24, 24); ...@@ -21,8 +21,10 @@ INSERT INTO t1 VALUES(24, 24);
'#----------------------------FN_DYNVARS_184_01--------------------------------------#' '#----------------------------FN_DYNVARS_184_01--------------------------------------#'
** Connection con0 ** ** Connection con0 **
SET SESSION tx_isolation = 'READ-UNCOMMITTED'; SET SESSION tx_isolation = 'READ-UNCOMMITTED';
set binlog_format=mixed;
** Connection con1 ** ** Connection con1 **
SET SESSION tx_isolation = 'READ-UNCOMMITTED'; SET SESSION tx_isolation = 'READ-UNCOMMITTED';
set binlog_format=mixed;
** Connection con0 ** ** Connection con0 **
START TRANSACTION; START TRANSACTION;
SELECT * FROM t1 WHERE a IN (2,4,6,8) FOR UPDATE; SELECT * FROM t1 WHERE a IN (2,4,6,8) FOR UPDATE;
......
...@@ -121,8 +121,8 @@ select @a:=0; ...@@ -121,8 +121,8 @@ select @a:=0;
select @a+0, @a:=@a+0+count(*), count(*), @a+0 from t1 group by i; select @a+0, @a:=@a+0+count(*), count(*), @a+0 from t1 group by i;
@a+0 @a:=@a+0+count(*) count(*) @a+0 @a+0 @a:=@a+0+count(*) count(*) @a+0
0 1 1 0 0 1 1 0
1 3 2 0 0 2 2 0
3 6 3 0 0 3 3 0
set @a=0; set @a=0;
select @a,@a:="hello",@a,@a:=3,@a,@a:="hello again" from t1 group by i; select @a,@a:="hello",@a,@a:=3,@a,@a:="hello again" from t1 group by i;
@a @a:="hello" @a @a:=3 @a @a:="hello again" @a @a:="hello" @a @a:=3 @a @a:="hello again"
...@@ -370,4 +370,33 @@ select @rownum := @rownum + 1 as row, ...@@ -370,4 +370,33 @@ select @rownum := @rownum + 1 as row,
@prev_score := a as score @prev_score := a as score
from t1 order by score desc; from t1 order by score desc;
drop table t1; drop table t1;
create table t1(b bigint);
insert into t1 (b) values (10), (30), (10);
set @var := 0;
select if(b=@var, 999, b) , @var := b from t1 order by b;
if(b=@var, 999, b) @var := b
10 10
999 10
30 30
drop table t1;
create temporary table t1 (id int);
insert into t1 values (2), (3), (3), (4);
set @lastid=-1;
select @lastid != id, @lastid, @lastid := id from t1;
@lastid != id @lastid @lastid := id
1 -1 2
1 2 3
0 3 3
1 3 4
drop table t1;
create temporary table t1 (id bigint);
insert into t1 values (2), (3), (3), (4);
set @lastid=-1;
select @lastid != id, @lastid, @lastid := id from t1;
@lastid != id @lastid @lastid := id
1 -1 2
1 2 3
0 3 3
1 3 4
drop table t1;
End of 5.1 tests End of 5.1 tests
...@@ -167,7 +167,7 @@ max_error_count 10 ...@@ -167,7 +167,7 @@ max_error_count 10
drop table t1; drop table t1;
set table_type=MYISAM; set table_type=MYISAM;
Warnings: Warnings:
Warning 1287 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead Warning 1287 The syntax '@@table_type' is deprecated and will be removed in MySQL 5.2. Please use '@@storage_engine' instead
create table t1 (a int); create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
update t1 set a='abc'; update t1 set a='abc';
......
flush status;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 0
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 0
drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 1
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
begin;
delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
drop table t1;
...@@ -43,8 +43,6 @@ INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2); ...@@ -43,8 +43,6 @@ INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f; UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
TRUNCATE t1m; TRUNCATE t1m;
TRUNCATE t1b; TRUNCATE t1b;
TRUNCATE t1n; TRUNCATE t1n;
...@@ -68,25 +66,26 @@ RESET MASTER; ...@@ -68,25 +66,26 @@ RESET MASTER;
SET SESSION BINLOG_FORMAT=ROW; SET SESSION BINLOG_FORMAT=ROW;
INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2); INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2); INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
ERROR HY000: Binary logging not possible. Message: Row-based format required for this statement, but not allowed by this combination of engines
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2); INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
ERROR HY000: Binary logging not possible. Message: Row-based format required for this statement, but not allowed by this combination of engines
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f; UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c; UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
ERROR HY000: Binary logging not possible. Message: Row-based format required for this statement, but not allowed by this combination of engines ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
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
mysqld-bin.000001 # Query # # use `test`; BEGIN master-bin.000001 # Query # # use `test`; BEGIN
mysqld-bin.000001 # Table_map # # table_id: # (test.t1m) master-bin.000001 # Table_map # # table_id: # (test.t1m)
mysqld-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query # # use `test`; COMMIT master-bin.000001 # Query # # use `test`; COMMIT
mysqld-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `test`; BEGIN
mysqld-bin.000001 # Table_map # # table_id: # (test.t1n) master-bin.000001 # Table_map # # table_id: # (test.t1b)
mysqld-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Query # # use `test`; COMMIT
mysqld-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # COMMIT master-bin.000001 # Table_map # # table_id: # (test.t1n)
master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
RESET MASTER; RESET MASTER;
DROP TABLE t1m, t1b, t1n; DROP TABLE t1m, t1b, t1n;
...@@ -1090,6 +1090,53 @@ master-bin.000001 295 Table_map 1 337 table_id: # (test.t1) ...@@ -1090,6 +1090,53 @@ master-bin.000001 295 Table_map 1 337 table_id: # (test.t1)
master-bin.000001 337 Write_rows 1 383 table_id: # flags: STMT_END_F master-bin.000001 337 Write_rows 1 383 table_id: # flags: STMT_END_F
master-bin.000001 383 Query 1 452 use `test`; COMMIT master-bin.000001 383 Query 1 452 use `test`; COMMIT
master-bin.000001 452 Query 1 528 use `test`; drop table t1 master-bin.000001 452 Query 1 528 use `test`; drop table t1
reset master;
CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE bug39182;
CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci)
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE PROCEDURE p1()
BEGIN
DECLARE s1 VARCHAR(255);
SET s1= "test";
CREATE TEMPORARY TABLE tmp1
SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%");
SELECT
COLLATION(NAME_CONST('s1', _utf8'test')) c1,
COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2,
COLLATION(s1) c3,
COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1,
COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2,
COERCIBILITY(s1) d3;
DROP TEMPORARY TABLE tmp1;
END//
CALL p1();
c1 c2 c3 d1 d2 d3
utf8_general_ci utf8_unicode_ci utf8_unicode_ci 2 2 2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
master-bin.000001 # Query # # use `bug39182`; CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci)
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
master-bin.000001 # Query # # use `bug39182`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
BEGIN
DECLARE s1 VARCHAR(255);
SET s1= "test";
CREATE TEMPORARY TABLE tmp1
SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%");
SELECT
COLLATION(NAME_CONST('s1', _utf8'test')) c1,
COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2,
COLLATION(s1) c3,
COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1,
COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2,
COERCIBILITY(s1) d3;
DROP TEMPORARY TABLE tmp1;
END
DROP PROCEDURE p1;
DROP TABLE t1;
DROP DATABASE bug39182;
USE test;
End of 5.0 tests End of 5.0 tests
reset master; reset master;
create table t1 (id tinyint auto_increment primary key); create table t1 (id tinyint auto_increment primary key);
......
flush status;
show status like "binlog_cache_use"; show status like "binlog_cache_use";
Variable_name Value Variable_name Value
Binlog_cache_use 0 Binlog_cache_use 0
...@@ -22,18 +23,3 @@ show status like "binlog_cache_disk_use"; ...@@ -22,18 +23,3 @@ show status like "binlog_cache_disk_use";
Variable_name Value Variable_name Value
Binlog_cache_disk_use 1 Binlog_cache_disk_use 1
drop table t1; drop table t1;
show status like "Innodb_buffer_pool_pages_total";
Variable_name Value
Innodb_buffer_pool_pages_total 512
show status like "Innodb_page_size";
Variable_name Value
Innodb_page_size 16384
show status like "Innodb_rows_deleted";
Variable_name Value
Innodb_rows_deleted 2000
show status like "Innodb_rows_inserted";
Variable_name Value
Innodb_rows_inserted 2000
show status like "Innodb_rows_updated";
Variable_name Value
Innodb_rows_updated 0
...@@ -594,6 +594,56 @@ master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 ...@@ -594,6 +594,56 @@ master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4
master-bin.000001 106 Query 1 227 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned) master-bin.000001 106 Query 1 227 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned)
master-bin.000001 227 Query 1 351 use `test`; insert into t1 values (9999999999999999,14632475938453979136) master-bin.000001 227 Query 1 351 use `test`; insert into t1 values (9999999999999999,14632475938453979136)
master-bin.000001 351 Query 1 427 use `test`; drop table t1 master-bin.000001 351 Query 1 427 use `test`; drop table t1
reset master;
CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE bug39182;
CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci)
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE PROCEDURE p1()
BEGIN
DECLARE s1 VARCHAR(255);
SET s1= "test";
CREATE TEMPORARY TABLE tmp1
SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%");
SELECT
COLLATION(NAME_CONST('s1', _utf8'test')) c1,
COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2,
COLLATION(s1) c3,
COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1,
COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2,
COERCIBILITY(s1) d3;
DROP TEMPORARY TABLE tmp1;
END//
CALL p1();
c1 c2 c3 d1 d2 d3
utf8_general_ci utf8_unicode_ci utf8_unicode_ci 2 2 2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
master-bin.000001 # Query # # use `bug39182`; CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci)
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
master-bin.000001 # Query # # use `bug39182`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
BEGIN
DECLARE s1 VARCHAR(255);
SET s1= "test";
CREATE TEMPORARY TABLE tmp1
SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%");
SELECT
COLLATION(NAME_CONST('s1', _utf8'test')) c1,
COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2,
COLLATION(s1) c3,
COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1,
COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2,
COERCIBILITY(s1) d3;
DROP TEMPORARY TABLE tmp1;
END
master-bin.000001 # Query # # use `bug39182`; CREATE TEMPORARY TABLE tmp1
SELECT * FROM t1 WHERE a LIKE CONCAT("%", NAME_CONST('s1',_utf8'test' COLLATE 'utf8_unicode_ci'), "%")
master-bin.000001 # Query # # use `bug39182`; DROP TEMPORARY TABLE tmp1
DROP PROCEDURE p1;
DROP TABLE t1;
DROP DATABASE bug39182;
USE test;
End of 5.0 tests End of 5.0 tests
reset master; reset master;
create table t1 (id tinyint auto_increment primary key); create table t1 (id tinyint auto_increment primary key);
......
...@@ -141,7 +141,6 @@ master-bin.000001 # Query # # use `test`; COMMIT ...@@ -141,7 +141,6 @@ master-bin.000001 # Query # # use `test`; COMMIT
drop table t1,t2,t3; drop table t1,t2,t3;
CREATE TABLE t1(a INT) ENGINE=BLACKHOLE; CREATE TABLE t1(a INT) ENGINE=BLACKHOLE;
INSERT DELAYED INTO t1 VALUES(1); INSERT DELAYED INTO t1 VALUES(1);
ERROR HY000: Binary logging not possible. Message: Row-based format required for this statement, but not allowed by this combination of engines
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a INT, b INT) ENGINE=BLACKHOLE; CREATE TABLE t1(a INT, b INT) ENGINE=BLACKHOLE;
DELETE FROM t1 WHERE a=10; DELETE FROM t1 WHERE a=10;
......
flush status;
show status like "binlog_cache_use"; show status like "binlog_cache_use";
Variable_name Value Variable_name Value
Binlog_cache_use 0 Binlog_cache_use 0
...@@ -22,18 +23,3 @@ show status like "binlog_cache_disk_use"; ...@@ -22,18 +23,3 @@ show status like "binlog_cache_disk_use";
Variable_name Value Variable_name Value
Binlog_cache_disk_use 1 Binlog_cache_disk_use 1
drop table t1; drop table t1;
show status like "Innodb_buffer_pool_pages_total";
Variable_name Value
Innodb_buffer_pool_pages_total 512
show status like "Innodb_page_size";
Variable_name Value
Innodb_page_size 16384
show status like "Innodb_rows_deleted";
Variable_name Value
Innodb_rows_deleted 2000
show status like "Innodb_rows_inserted";
Variable_name Value
Innodb_rows_inserted 2000
show status like "Innodb_rows_updated";
Variable_name Value
Innodb_rows_updated 0
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
SET GLOBAL BINLOG_FORMAT = STATEMENT;
SET SESSION BINLOG_FORMAT = STATEMENT;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 LIKE t1;
select @@SESSION.BINLOG_FORMAT;
@@SESSION.BINLOG_FORMAT
STATEMENT
INSERT INTO t1 VALUES(1);
INSERT INTO t2 VALUES(2);
#
# Ensure that INSERT INTO .. SELECT FROM under SBR takes a read
# lock that will prevent the source table from being modified.
#
# con1
SELECT GET_LOCK('Bug#34306', 120);
GET_LOCK('Bug#34306', 120)
1
# con2
PREPARE stmt FROM "INSERT INTO t1 SELECT * FROM t2 WHERE GET_LOCK('Bug#34306', 120)";
EXECUTE stmt;;
# default
INSERT INTO t2 VALUES (3);;
# con1
SELECT RELEASE_LOCK('Bug#34306');
RELEASE_LOCK('Bug#34306')
1
# con2
SELECT RELEASE_LOCK('Bug#34306');
RELEASE_LOCK('Bug#34306')
1
# default
#
# Ensure that INSERT INTO .. SELECT FROM prepared under SBR does
# not prevent the source table from being modified if under RBR.
#
# con2
SET SESSION BINLOG_FORMAT = ROW;
# con1
SELECT GET_LOCK('Bug#34306', 120);
GET_LOCK('Bug#34306', 120)
1
# con2
EXECUTE stmt;;
# default
# con1
INSERT INTO t2 VALUES (4);
SELECT RELEASE_LOCK('Bug#34306');
RELEASE_LOCK('Bug#34306')
1
# con2
# default
# Show binlog events
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t1
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t2
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 LIKE t1
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(1)
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES(2)
master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2 WHERE GET_LOCK('Bug#34306', 120)
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (3)
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (4)
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; COMMIT
DROP TABLE t1;
DROP TABLE t2;
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source include/have_binlog_format_mixed_or_statement.inc -- source include/have_binlog_format_mixed_or_statement.inc
# You cannot use `KILL' with the Embedded MySQL Server library,
# because the embedded server merely runs inside the threads of the host
# application. -- the docs
-- source include/not_embedded.inc -- source include/not_embedded.inc
### ###
...@@ -22,6 +27,12 @@ select get_lock("a", 20); ...@@ -22,6 +27,12 @@ select get_lock("a", 20);
connection con2; connection con2;
let $ID= `select connection_id()`; let $ID= `select connection_id()`;
#
# reset master does not reset binlogging on the embedded server.
# the test is not run on the embedded for reason of using KILL query.
# `reset master' problem is to be addressed by bug#15580 fixes.
#
reset master; reset master;
send insert into t2 values (null, null), (null, get_lock("a", 10)); send insert into t2 values (null, null), (null, get_lock("a", 10));
......
...@@ -34,7 +34,7 @@ let $error_code= `select @a like "%#%error_code=0%" /* must return 1 */`; ...@@ -34,7 +34,7 @@ let $error_code= `select @a like "%#%error_code=0%" /* must return 1 */`;
eval select $error_code /* must return 1 as query completed before got killed*/; eval select $error_code /* must return 1 as query completed before got killed*/;
# cleanup for the sub-case # cleanup for the sub-case
system rm $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog; remove_file $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog;
# #
...@@ -62,7 +62,7 @@ let $error_code= `select @a like "%#%error_code=0%" /* must return 0*/`; ...@@ -62,7 +62,7 @@ let $error_code= `select @a like "%#%error_code=0%" /* must return 0*/`;
eval select $error_code /* must return 0 to mean the killed query is in */; eval select $error_code /* must return 0 to mean the killed query is in */;
# cleanup for the sub-case # cleanup for the sub-case
system rm $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog; remove_file $MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog;
drop table t1,t2; drop table t1,t2;
......
# This is a wrapper for binlog.test so that the same test case can be used
# For both statement and row based bin logs 9/19/2005 [jbm]
-- source include/have_binlog_format_mixed.inc
-- source extra/binlog_tests/innodb_stat.test
...@@ -69,9 +69,6 @@ UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f; ...@@ -69,9 +69,6 @@ UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
#UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f; #UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
error ER_BINLOG_LOGGING_IMPOSSIBLE;
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
TRUNCATE t1m; TRUNCATE t1m;
TRUNCATE t1b; TRUNCATE t1b;
TRUNCATE t1n; TRUNCATE t1n;
...@@ -83,12 +80,10 @@ RESET MASTER; ...@@ -83,12 +80,10 @@ RESET MASTER;
SET SESSION BINLOG_FORMAT=ROW; SET SESSION BINLOG_FORMAT=ROW;
INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2); INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
error ER_BINLOG_LOGGING_IMPOSSIBLE;
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2); INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2); INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
error ER_BINLOG_LOGGING_IMPOSSIBLE;
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
error ER_BINLOG_LOGGING_IMPOSSIBLE; error ER_BINLOG_LOGGING_IMPOSSIBLE;
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f; UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
......
# This is a wrapper for binlog.test so that the same test case can be used # This is a wrapper for binlog.test so that the same test case can be used
# For both statement and row based bin logs 9/19/2005 [jbm] # For both statement and row based bin logs 9/19/2005 [jbm]
-- source include/have_binlog_format_mixed_or_statement.inc -- source include/have_binlog_format_statement.inc
-- source extra/binlog_tests/innodb_stat.test -- source extra/binlog_tests/innodb_stat.test
--source include/have_log_bin.inc
--source include/have_binlog_format_row_or_statement.inc
# Get rid of previous tests binlog
--disable_query_log
reset master;
--enable_query_log
#
# Bug#34306: Can't make copy of log tables when server binary log is enabled
#
# This is an additional test for Bug#34306 in order to ensure that INSERT INTO
# .. SELECT FROM is properly replicated under SBR and RBR and that the proper
# read lock type are acquired.
#
--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
--enable_warnings
SET GLOBAL BINLOG_FORMAT = STATEMENT;
SET SESSION BINLOG_FORMAT = STATEMENT;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 LIKE t1;
select @@SESSION.BINLOG_FORMAT;
INSERT INTO t1 VALUES(1);
INSERT INTO t2 VALUES(2);
--connect(con1,localhost,root,,)
--connect(con2,localhost,root,,)
--echo #
--echo # Ensure that INSERT INTO .. SELECT FROM under SBR takes a read
--echo # lock that will prevent the source table from being modified.
--echo #
--connection con1
--echo # con1
SELECT GET_LOCK('Bug#34306', 120);
--connection con2
--echo # con2
PREPARE stmt FROM "INSERT INTO t1 SELECT * FROM t2 WHERE GET_LOCK('Bug#34306', 120)";
--send EXECUTE stmt;
--connection default
--echo # default
let $wait_condition=
SELECT COUNT(*) = 1 FROM information_schema.processlist WHERE
state = "User lock" AND
info = "INSERT INTO t1 SELECT * FROM t2 WHERE GET_LOCK('Bug#34306', 120)";
--source include/wait_condition.inc
--send INSERT INTO t2 VALUES (3);
--connection con1
--echo # con1
let $wait_condition=
SELECT COUNT(*) = 1 FROM information_schema.processlist WHERE
state = "Locked" and info = "INSERT INTO t2 VALUES (3)";
--source include/wait_condition.inc
SELECT RELEASE_LOCK('Bug#34306');
--connection con2
--echo # con2
--reap
SELECT RELEASE_LOCK('Bug#34306');
--connection default
--echo # default
--reap
--echo #
--echo # Ensure that INSERT INTO .. SELECT FROM prepared under SBR does
--echo # not prevent the source table from being modified if under RBR.
--echo #
--connection con2
--echo # con2
SET SESSION BINLOG_FORMAT = ROW;
--connection con1
--echo # con1
SELECT GET_LOCK('Bug#34306', 120);
--connection con2
--echo # con2
--send EXECUTE stmt;
--connection default
--echo # default
let $wait_condition=
SELECT COUNT(*) = 1 FROM information_schema.processlist WHERE
state = "User lock" AND
info = "INSERT INTO t1 SELECT * FROM t2 WHERE GET_LOCK('Bug#34306', 120)";
--source include/wait_condition.inc
--connection con1
--echo # con1
INSERT INTO t2 VALUES (4);
SELECT RELEASE_LOCK('Bug#34306');
--connection con2
--echo # con2
--reap
--disconnect con1
--disconnect con2
--connection default
--echo # default
--echo # Show binlog events
source include/show_binlog_events.inc;
DROP TABLE t1;
DROP TABLE t2;
...@@ -2,7 +2,9 @@ DROP DATABASE IF EXISTS federated; ...@@ -2,7 +2,9 @@ DROP DATABASE IF EXISTS federated;
CREATE DATABASE federated; CREATE DATABASE federated;
DROP DATABASE IF EXISTS federated; DROP DATABASE IF EXISTS federated;
CREATE DATABASE federated; CREATE DATABASE federated;
SET @OLD_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT; SET @OLD_MASTER_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT= 0;
SET @OLD_SLAVE_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT= 0; SET @@GLOBAL.CONCURRENT_INSERT= 0;
DROP TABLE IF EXISTS federated.t1; DROP TABLE IF EXISTS federated.t1;
Warnings: Warnings:
...@@ -179,6 +181,7 @@ INSERT INTO federated.t1 (name, other) VALUES ('Tenth Name', 101010); ...@@ -179,6 +181,7 @@ INSERT INTO federated.t1 (name, other) VALUES ('Tenth Name', 101010);
SELECT * FROM federated.t1; SELECT * FROM federated.t1;
id name other created id name other created
1 First Name 11111 2004-04-04 04:04:04 1 First Name 11111 2004-04-04 04:04:04
10 Tenth Name 101010 2004-04-04 04:04:04
2 Second Name 22222 2004-04-04 04:04:04 2 Second Name 22222 2004-04-04 04:04:04
3 Third Name 33333 2004-04-04 04:04:04 3 Third Name 33333 2004-04-04 04:04:04
4 Fourth Name 44444 2004-04-04 04:04:04 4 Fourth Name 44444 2004-04-04 04:04:04
...@@ -187,7 +190,6 @@ id name other created ...@@ -187,7 +190,6 @@ id name other created
7 Seventh Name 77777 2004-04-04 04:04:04 7 Seventh Name 77777 2004-04-04 04:04:04
8 Eigth Name 88888 2004-04-04 04:04:04 8 Eigth Name 88888 2004-04-04 04:04:04
9 Ninth Name 99999 2004-04-04 04:04:04 9 Ninth Name 99999 2004-04-04 04:04:04
10 Tenth Name 101010 2004-04-04 04:04:04
SELECT * FROM federated.t1 WHERE id = 5; SELECT * FROM federated.t1 WHERE id = 5;
id name other created id name other created
5 Fifth Name 55555 2004-04-04 04:04:04 5 Fifth Name 55555 2004-04-04 04:04:04
...@@ -201,6 +203,7 @@ SELECT * FROM federated.t1 WHERE name = 'Sixth Name' AND other = 44444; ...@@ -201,6 +203,7 @@ SELECT * FROM federated.t1 WHERE name = 'Sixth Name' AND other = 44444;
id name other created id name other created
SELECT * FROM federated.t1 WHERE name like '%th%'; SELECT * FROM federated.t1 WHERE name like '%th%';
id name other created id name other created
10 Tenth Name 101010 2004-04-04 04:04:04
3 Third Name 33333 2004-04-04 04:04:04 3 Third Name 33333 2004-04-04 04:04:04
4 Fourth Name 44444 2004-04-04 04:04:04 4 Fourth Name 44444 2004-04-04 04:04:04
5 Fifth Name 55555 2004-04-04 04:04:04 5 Fifth Name 55555 2004-04-04 04:04:04
...@@ -208,7 +211,6 @@ id name other created ...@@ -208,7 +211,6 @@ id name other created
7 Seventh Name 77777 2004-04-04 04:04:04 7 Seventh Name 77777 2004-04-04 04:04:04
8 Eigth Name 88888 2004-04-04 04:04:04 8 Eigth Name 88888 2004-04-04 04:04:04
9 Ninth Name 99999 2004-04-04 04:04:04 9 Ninth Name 99999 2004-04-04 04:04:04
10 Tenth Name 101010 2004-04-04 04:04:04
UPDATE federated.t1 SET name = '3rd name' WHERE id = 3; UPDATE federated.t1 SET name = '3rd name' WHERE id = 3;
SELECT * FROM federated.t1 WHERE name = '3rd name'; SELECT * FROM federated.t1 WHERE name = '3rd name';
id name other created id name other created
...@@ -329,6 +331,7 @@ VALUES ('Tenth Name', 101010, '2005-03-12 12:00:01'); ...@@ -329,6 +331,7 @@ VALUES ('Tenth Name', 101010, '2005-03-12 12:00:01');
SELECT * FROM federated.t1; SELECT * FROM federated.t1;
id name other created id name other created
1 First Name 11111 2004-01-01 01:01:01 1 First Name 11111 2004-01-01 01:01:01
10 Tenth Name 101010 2005-03-12 12:00:01
2 Second Name 22222 2004-01-23 02:43:00 2 Second Name 22222 2004-01-23 02:43:00
3 Third Name 33333 2004-02-14 02:14:00 3 Third Name 33333 2004-02-14 02:14:00
4 Fourth Name 44444 2003-04-05 00:00:00 4 Fourth Name 44444 2003-04-05 00:00:00
...@@ -337,7 +340,6 @@ id name other created ...@@ -337,7 +340,6 @@ id name other created
7 Seventh Name 77777 2003-12-12 18:32:00 7 Seventh Name 77777 2003-12-12 18:32:00
8 Eigth Name 88888 2005-03-12 11:00:00 8 Eigth Name 88888 2005-03-12 11:00:00
9 Ninth Name 99999 2005-03-12 11:00:01 9 Ninth Name 99999 2005-03-12 11:00:01
10 Tenth Name 101010 2005-03-12 12:00:01
SELECT * FROM federated.t1 WHERE id = 5; SELECT * FROM federated.t1 WHERE id = 5;
id name other created id name other created
5 Fifth Name 55555 2001-02-02 02:02:02 5 Fifth Name 55555 2001-02-02 02:02:02
...@@ -349,6 +351,7 @@ id name other created ...@@ -349,6 +351,7 @@ id name other created
4 Fourth Name 44444 2003-04-05 00:00:00 4 Fourth Name 44444 2003-04-05 00:00:00
SELECT * FROM federated.t1 WHERE name like '%th%'; SELECT * FROM federated.t1 WHERE name like '%th%';
id name other created id name other created
10 Tenth Name 101010 2005-03-12 12:00:01
3 Third Name 33333 2004-02-14 02:14:00 3 Third Name 33333 2004-02-14 02:14:00
4 Fourth Name 44444 2003-04-05 00:00:00 4 Fourth Name 44444 2003-04-05 00:00:00
5 Fifth Name 55555 2001-02-02 02:02:02 5 Fifth Name 55555 2001-02-02 02:02:02
...@@ -356,7 +359,6 @@ id name other created ...@@ -356,7 +359,6 @@ id name other created
7 Seventh Name 77777 2003-12-12 18:32:00 7 Seventh Name 77777 2003-12-12 18:32:00
8 Eigth Name 88888 2005-03-12 11:00:00 8 Eigth Name 88888 2005-03-12 11:00:00
9 Ninth Name 99999 2005-03-12 11:00:01 9 Ninth Name 99999 2005-03-12 11:00:01
10 Tenth Name 101010 2005-03-12 12:00:01
UPDATE federated.t1 SET name = '3rd name' WHERE id = 3; UPDATE federated.t1 SET name = '3rd name' WHERE id = 3;
SELECT * FROM federated.t1 WHERE name = '3rd name'; SELECT * FROM federated.t1 WHERE name = '3rd name';
id name other created id name other created
...@@ -463,17 +465,17 @@ id name other ...@@ -463,17 +465,17 @@ id name other
7 Seventh Name NULL 7 Seventh Name NULL
SELECT * FROM federated.t1 WHERE name IS NULL; SELECT * FROM federated.t1 WHERE name IS NULL;
id name other id name other
4 NULL NULL
10 NULL fee fie foe fum 10 NULL fee fie foe fum
4 NULL NULL
SELECT * FROM federated.t1 WHERE name IS NULL and other IS NULL; SELECT * FROM federated.t1 WHERE name IS NULL and other IS NULL;
id name other id name other
4 NULL NULL 4 NULL NULL
SELECT * FROM federated.t1 WHERE name IS NULL or other IS NULL; SELECT * FROM federated.t1 WHERE name IS NULL or other IS NULL;
id name other id name other
10 NULL fee fie foe fum
2 Second Name NULL 2 Second Name NULL
4 NULL NULL 4 NULL NULL
7 Seventh Name NULL 7 Seventh Name NULL
10 NULL fee fie foe fum
UPDATE federated.t1 UPDATE federated.t1
SET name = 'Fourth Name', other = 'four four four' SET name = 'Fourth Name', other = 'four four four'
WHERE name IS NULL AND other IS NULL; WHERE name IS NULL AND other IS NULL;
...@@ -485,6 +487,7 @@ id name other ...@@ -485,6 +487,7 @@ id name other
SELECT * FROM federated.t1; SELECT * FROM federated.t1;
id name other id name other
1 First Name 11111 1 First Name 11111
10 Tenth Name fee fie foe fum
2 Second Name two two two two 2 Second Name two two two two
3 Third Name 33333 3 Third Name 33333
4 Fourth Name four four four 4 Fourth Name four four four
...@@ -493,7 +496,6 @@ id name other ...@@ -493,7 +496,6 @@ id name other
7 Seventh Name seven seven 7 Seventh Name seven seven
8 Eigth Name 88888 8 Eigth Name 88888
9 Ninth Name 99999 9 Ninth Name 99999
10 Tenth Name fee fie foe fum
DROP TABLE IF EXISTS federated.t1; DROP TABLE IF EXISTS federated.t1;
CREATE TABLE federated.t1 ( CREATE TABLE federated.t1 (
`id` int(20) NOT NULL auto_increment, `id` int(20) NOT NULL auto_increment,
...@@ -674,8 +676,8 @@ id col1 col2 col3 col4 ...@@ -674,8 +676,8 @@ id col1 col2 col3 col4
SELECT * FROM federated.t1 WHERE (id = 5 AND col2 = 'five 5 five five 5') SELECT * FROM federated.t1 WHERE (id = 5 AND col2 = 'five 5 five five 5')
OR (col2 = 'three Three' AND col3 = 33); OR (col2 = 'three Three' AND col3 = 33);
id col1 col2 col3 col4 id col1 col2 col3 col4
5 5 five 5 five five 5 5 55555
3 3 three Three 33 33333 3 3 three Three 33 33333
5 5 five 5 five five 5 5 55555
SELECT * FROM federated.t1 WHERE (id = 5 AND col2 = 'Two two') SELECT * FROM federated.t1 WHERE (id = 5 AND col2 = 'Two two')
OR (col2 = 444 AND col3 = 4444444); OR (col2 = 444 AND col3 = 4444444);
id col1 col2 col3 col4 id col1 col2 col3 col4
...@@ -686,25 +688,25 @@ OR col3 = 33 ...@@ -686,25 +688,25 @@ OR col3 = 33
OR col4 = 4444444; OR col4 = 4444444;
id col1 col2 col3 col4 id col1 col2 col3 col4
1 1 one One 11 1111 1 1 one One 11 1111
10 10 Tenth ten TEN 1010101 1010
2 2 Two two 22 2222 2 2 Two two 22 2222
3 3 three Three 33 33333 3 3 three Three 33 33333
4 4 fourfourfour 444 4444444 4 4 fourfourfour 444 4444444
10 10 Tenth ten TEN 1010101 1010
SELECT * FROM federated.t1 WHERE id > 5; SELECT * FROM federated.t1 WHERE id > 5;
id col1 col2 col3 col4 id col1 col2 col3 col4
10 10 Tenth ten TEN 1010101 1010
6 6 six six Sixsix 6666 6 6 6 six six Sixsix 6666 6
7 7 seven Sevenseven 77777 7777 7 7 seven Sevenseven 77777 7777
8 8 eight eight eight 88888 88 8 8 eight eight eight 88888 88
9 9 nine Nine 999999 999999 9 9 nine Nine 999999 999999
10 10 Tenth ten TEN 1010101 1010
SELECT * FROM federated.t1 WHERE id >= 5; SELECT * FROM federated.t1 WHERE id >= 5;
id col1 col2 col3 col4 id col1 col2 col3 col4
10 10 Tenth ten TEN 1010101 1010
5 5 five 5 five five 5 5 55555 5 5 five 5 five five 5 5 55555
6 6 six six Sixsix 6666 6 6 6 six six Sixsix 6666 6
7 7 seven Sevenseven 77777 7777 7 7 seven Sevenseven 77777 7777
8 8 eight eight eight 88888 88 8 8 eight eight eight 88888 88
9 9 nine Nine 999999 999999 9 9 nine Nine 999999 999999
10 10 Tenth ten TEN 1010101 1010
SELECT * FROM federated.t1 WHERE id < 5; SELECT * FROM federated.t1 WHERE id < 5;
id col1 col2 col3 col4 id col1 col2 col3 col4
1 1 one One 11 1111 1 1 one One 11 1111
...@@ -721,6 +723,7 @@ id col1 col2 col3 col4 ...@@ -721,6 +723,7 @@ id col1 col2 col3 col4
SELECT * FROM federated.t1 WHERE id != 5; SELECT * FROM federated.t1 WHERE id != 5;
id col1 col2 col3 col4 id col1 col2 col3 col4
1 1 one One 11 1111 1 1 one One 11 1111
10 10 Tenth ten TEN 1010101 1010
2 2 Two two 22 2222 2 2 Two two 22 2222
3 3 three Three 33 33333 3 3 three Three 33 33333
4 4 fourfourfour 444 4444444 4 4 fourfourfour 444 4444444
...@@ -728,7 +731,6 @@ id col1 col2 col3 col4 ...@@ -728,7 +731,6 @@ id col1 col2 col3 col4
7 7 seven Sevenseven 77777 7777 7 7 seven Sevenseven 77777 7777
8 8 eight eight eight 88888 88 8 8 eight eight eight 88888 88
9 9 nine Nine 999999 999999 9 9 nine Nine 999999 999999
10 10 Tenth ten TEN 1010101 1010
SELECT * FROM federated.t1 WHERE id > 3 AND id < 7; SELECT * FROM federated.t1 WHERE id > 3 AND id < 7;
id col1 col2 col3 col4 id col1 col2 col3 col4
4 4 fourfourfour 444 4444444 4 4 fourfourfour 444 4444444
...@@ -756,25 +758,25 @@ id col1 col2 col3 col4 ...@@ -756,25 +758,25 @@ id col1 col2 col3 col4
SELECT * FROM federated.t1 WHERE id < 3 OR id > 7; SELECT * FROM federated.t1 WHERE id < 3 OR id > 7;
id col1 col2 col3 col4 id col1 col2 col3 col4
1 1 one One 11 1111 1 1 one One 11 1111
10 10 Tenth ten TEN 1010101 1010
2 2 Two two 22 2222 2 2 Two two 22 2222
8 8 eight eight eight 88888 88 8 8 eight eight eight 88888 88
9 9 nine Nine 999999 999999 9 9 nine Nine 999999 999999
10 10 Tenth ten TEN 1010101 1010
SELECT * FROM federated.t1 WHERE col2 = 'three Three'; SELECT * FROM federated.t1 WHERE col2 = 'three Three';
id col1 col2 col3 col4 id col1 col2 col3 col4
3 3 three Three 33 33333 3 3 three Three 33 33333
SELECT * FROM federated.t1 WHERE col2 > 'one'; SELECT * FROM federated.t1 WHERE col2 > 'one';
id col1 col2 col3 col4 id col1 col2 col3 col4
1 1 one One 11 1111 1 1 one One 11 1111
10 10 Tenth ten TEN 1010101 1010
2 2 Two two 22 2222 2 2 Two two 22 2222
3 3 three Three 33 33333 3 3 three Three 33 33333
6 6 six six Sixsix 6666 6 6 6 six six Sixsix 6666 6
7 7 seven Sevenseven 77777 7777 7 7 seven Sevenseven 77777 7777
10 10 Tenth ten TEN 1010101 1010
SELECT * FROM federated.t1 WHERE col2 LIKE 's%'; SELECT * FROM federated.t1 WHERE col2 LIKE 's%';
id col1 col2 col3 col4 id col1 col2 col3 col4
7 7 seven Sevenseven 77777 7777
6 6 six six Sixsix 6666 6 6 6 six six Sixsix 6666 6
7 7 seven Sevenseven 77777 7777
SELECT * FROM federated.t1 WHERE col2 LIKE 'si%'; SELECT * FROM federated.t1 WHERE col2 LIKE 'si%';
id col1 col2 col3 col4 id col1 col2 col3 col4
6 6 six six Sixsix 6666 6 6 6 six six Sixsix 6666 6
...@@ -784,6 +786,7 @@ id col1 col2 col3 col4 ...@@ -784,6 +786,7 @@ id col1 col2 col3 col4
SELECT * FROM federated.t1 WHERE col2 NOT LIKE 'e%'; SELECT * FROM federated.t1 WHERE col2 NOT LIKE 'e%';
id col1 col2 col3 col4 id col1 col2 col3 col4
1 1 one One 11 1111 1 1 one One 11 1111
10 10 Tenth ten TEN 1010101 1010
2 2 Two two 22 2222 2 2 Two two 22 2222
3 3 three Three 33 33333 3 3 three Three 33 33333
4 4 fourfourfour 444 4444444 4 4 fourfourfour 444 4444444
...@@ -791,18 +794,17 @@ id col1 col2 col3 col4 ...@@ -791,18 +794,17 @@ id col1 col2 col3 col4
6 6 six six Sixsix 6666 6 6 6 six six Sixsix 6666 6
7 7 seven Sevenseven 77777 7777 7 7 seven Sevenseven 77777 7777
9 9 nine Nine 999999 999999 9 9 nine Nine 999999 999999
10 10 Tenth ten TEN 1010101 1010
SELECT * FROM federated.t1 WHERE col2 <> 'one One'; SELECT * FROM federated.t1 WHERE col2 <> 'one One';
id col1 col2 col3 col4 id col1 col2 col3 col4
4 4 fourfourfour 444 4444444 10 10 Tenth ten TEN 1010101 1010
5 5 five 5 five five 5 5 55555
8 8 eight eight eight 88888 88
9 9 nine Nine 999999 999999
2 2 Two two 22 2222 2 2 Two two 22 2222
3 3 three Three 33 33333 3 3 three Three 33 33333
4 4 fourfourfour 444 4444444
5 5 five 5 five five 5 5 55555
6 6 six six Sixsix 6666 6 6 6 six six Sixsix 6666 6
7 7 seven Sevenseven 77777 7777 7 7 seven Sevenseven 77777 7777
10 10 Tenth ten TEN 1010101 1010 8 8 eight eight eight 88888 88
9 9 nine Nine 999999 999999
DROP TABLE IF EXISTS federated.t1; DROP TABLE IF EXISTS federated.t1;
CREATE TABLE federated.t1 ( CREATE TABLE federated.t1 (
`col1` varchar(8) NOT NULL DEFAULT '', `col1` varchar(8) NOT NULL DEFAULT '',
...@@ -969,11 +971,11 @@ INSERT INTO federated.t1 (name, floatval, other) ...@@ -969,11 +971,11 @@ INSERT INTO federated.t1 (name, floatval, other)
VALUES (0, 00.3333, NULL); VALUES (0, 00.3333, NULL);
SELECT * FROM federated.t1; SELECT * FROM federated.t1;
id name floatval other id name floatval other
1 NULL NULL NULL
NULL 0 0.3333 NULL
NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL NULL NULL
1 NULL NULL NULL
NULL foo 33.3333 NULL NULL foo 33.3333 NULL
NULL 0 0.3333 NULL
SELECT count(*) FROM federated.t1 SELECT count(*) FROM federated.t1
WHERE id IS NULL WHERE id IS NULL
AND name IS NULL AND name IS NULL
...@@ -2125,6 +2127,8 @@ End of 5.0 tests ...@@ -2125,6 +2127,8 @@ End of 5.0 tests
create server 's1' foreign data wrapper 'mysql' options (port 3306); create server 's1' foreign data wrapper 'mysql' options (port 3306);
drop server 's1'; drop server 's1';
End of 5.1 tests End of 5.1 tests
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_MASTER_CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
DROP TABLE IF EXISTS federated.t1; DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated; DROP DATABASE IF EXISTS federated;
DROP TABLE IF EXISTS federated.t1; DROP TABLE IF EXISTS federated.t1;
......
This diff is collapsed.
...@@ -2,7 +2,9 @@ DROP DATABASE IF EXISTS federated; ...@@ -2,7 +2,9 @@ DROP DATABASE IF EXISTS federated;
CREATE DATABASE federated; CREATE DATABASE federated;
DROP DATABASE IF EXISTS federated; DROP DATABASE IF EXISTS federated;
CREATE DATABASE federated; CREATE DATABASE federated;
SET @OLD_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT; SET @OLD_MASTER_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT= 0;
SET @OLD_SLAVE_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT= 0; SET @@GLOBAL.CONCURRENT_INSERT= 0;
DROP TABLE IF EXISTS federated.bug_13118_table; DROP TABLE IF EXISTS federated.bug_13118_table;
CREATE TABLE federated.t1 ( CREATE TABLE federated.t1 (
...@@ -44,9 +46,10 @@ id value ...@@ -44,9 +46,10 @@ id value
7 54 7 54
8 55 8 55
DROP TABLE federated.t1; DROP TABLE federated.t1;
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_MASTER_CONCURRENT_INSERT;
DROP TABLE federated.t1; DROP TABLE federated.t1;
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
DROP TABLE IF EXISTS federated.t1; DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated; DROP DATABASE IF EXISTS federated;
DROP TABLE IF EXISTS federated.t1; DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated; DROP DATABASE IF EXISTS federated;
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_CONCURRENT_INSERT;
...@@ -5,15 +5,17 @@ if (`select LENGTH("$MYSQL_BUG25714") = 0`) ...@@ -5,15 +5,17 @@ if (`select LENGTH("$MYSQL_BUG25714") = 0`)
{ {
skip Need bug25714 test program; skip Need bug25714 test program;
} }
connection default;
connection master;
# Disable concurrent inserts to avoid test failures when reading # Disable concurrent inserts to avoid test failures when reading
# data from concurrent connections (insert might return before # data from concurrent connections (insert might return before
# the data is actually in the table). # the data is actually in the table).
SET @OLD_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT; SET @OLD_MASTER_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT= 0; SET @@GLOBAL.CONCURRENT_INSERT= 0;
connection slave; connection slave;
SET @OLD_SLAVE_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT= 0;
--disable_warnings --disable_warnings
DROP TABLE IF EXISTS federated.bug_13118_table; DROP TABLE IF EXISTS federated.bug_13118_table;
--enable_warnings --enable_warnings
...@@ -50,8 +52,11 @@ SELECT LAST_INSERT_ID(); ...@@ -50,8 +52,11 @@ SELECT LAST_INSERT_ID();
SELECT * from federated.t1; SELECT * from federated.t1;
DROP TABLE federated.t1; DROP TABLE federated.t1;
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_MASTER_CONCURRENT_INSERT;
connection slave; connection slave;
DROP TABLE federated.t1; DROP TABLE federated.t1;
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
source federated_cleanup.inc; source federated_cleanup.inc;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# suite/funcs_1/storedproc/param_check.inc
#
# Auxiliary routine to be sourced by
# suite/funcs_1/t/storedproc.test
#
# Purpose:
# The assignment of float values to objects of type DECIMAL causes
# conversions and in some cases an adjustment of the value to
# a border of the value range.
# Try to reveal that function and procedure parameters get a similar
# mangling of the value like columns.
#
# Variables to be set before sourcing this routine
# $test_value - value to be checked
#
# Created:
# 2008-08-27 mleich
#
eval UPDATE t1_aux SET f1 = NULL;
# Enforce that all user variables have the same data type and initial value.
SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux;
eval UPDATE t1_aux SET f1 = $test_value;
SELECT f1 INTO @v1_tab FROM t1_aux;
eval CALL sproc_1($test_value, @v1_proc);
eval SET @v1_func = func_1($test_value);
if (`SELECT @v1_tab <> @v1_proc OR @v1_tab <> @v2_proc OR @v1_tab <> @v1_func`)
{
--echo Error: @v1_tab, @v1_proc, @v2_proc, @v1_func are not all equal
SELECT @v1_tab, @v1_proc, @v2_proc, @v1_func;
}
#### suite/funcs_1/t/innodb_storedproc.test
#
# This test cannot be used for the embedded server because we check here
# privileges.
--source include/not_embedded.inc
--source include/have_innodb.inc
let $engine_type= innodb;
--source suite/funcs_1/storedproc/load_sp_tb.inc
--source suite/funcs_1/storedproc/storedproc_master.inc
#### suite/funcs_1/t/memory_storedproc.test
#
# This test cannot be used for the embedded server because we check here
# privileges.
--source include/not_embedded.inc
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
let $engine_type= memory;
--source suite/funcs_1/storedproc/load_sp_tb.inc
--source suite/funcs_1/storedproc/storedproc_master.inc
#### suite/funcs_1/t/myisam_storedproc.test
#
# This test cannot be used for the embedded server because we check here
# privileges.
--source include/not_embedded.inc
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
let $engine_type= myisam;
--source suite/funcs_1/storedproc/load_sp_tb.inc
--source suite/funcs_1/storedproc/storedproc_master.inc
#### suite/funcs_1/t/ndb_storedproc.test
#
# This test cannot be used for the embedded server because we check here
# privileges.
--source include/not_embedded.inc
--source include/have_ndb.inc
let $engine_type= ndb;
--source suite/funcs_1/storedproc/load_sp_tb.inc
--source suite/funcs_1/storedproc/storedproc_master.inc
...@@ -158,10 +158,16 @@ DROP VIEW IF EXISTS v1; ...@@ -158,10 +158,16 @@ DROP VIEW IF EXISTS v1;
--disable_query_log --disable_query_log
# Storage for the SELECTs to be used for the VIEW definition # Storage for the SELECTs to be used for the VIEW definition
# Attention: my_select must be no too small because a statement like
# SELECT LOAD_FILE(< file in MYSQLTEST_VARDIR >)
# AS my_col,
# id FROM t1_values';
# might be a very long
# Bug#38427 "Data too long" ... tests "<ENGINE>_func_view" fail
CREATE TABLE t1_selects CREATE TABLE t1_selects
( (
id BIGINT AUTO_INCREMENT, id BIGINT AUTO_INCREMENT,
my_select VARCHAR(200) NOT NULL, my_select VARCHAR(1000) NOT NULL,
disable_result ENUM('Yes','No') NOT NULL default 'No', disable_result ENUM('Yes','No') NOT NULL default 'No',
PRIMARY KEY(id), PRIMARY KEY(id),
UNIQUE (my_select) UNIQUE (my_select)
......
...@@ -354,16 +354,52 @@ select * from t1 where a = 12; ...@@ -354,16 +354,52 @@ select * from t1 where a = 12;
a b c a b c
12 403 NULL 12 403 NULL
drop table t1; drop table t1;
create table t1 (a int not null, b varchar(10)) engine=ndb; create table t1(a int not null) engine=ndb;
show index from t1; $PK Bigunsigned PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment PRIMARY KEY($PK) - UniqueHashIndex
insert into t1 values (1),(2),(3);
alter table t1 add primary key (a); alter table t1 add primary key (a);
show index from t1; a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment PRIMARY KEY(a) - UniqueHashIndex
t1 0 PRIMARY 1 a A 0 NULL NULL BTREE PRIMARY(a) - OrderedIndex
update t1 set a = 17 where a = 1;
select * from t1 order by a;
a
2
3
17
alter table t1 drop primary key; alter table t1 drop primary key;
show index from t1; $PK Bigunsigned PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment PRIMARY KEY($PK) - UniqueHashIndex
update t1 set a = 1 where a = 17;
select * from t1 order by a;
a
1
2
3
drop table t1;
create table t1(a int not null) engine=ndb;
$PK Bigunsigned PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
PRIMARY KEY($PK) - UniqueHashIndex
insert into t1 values (1),(2),(3);
create unique index pk on t1(a);
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
PRIMARY KEY(a) - UniqueHashIndex
update t1 set a = 17 where a = 1;
select * from t1 order by a;
a
2
3
17
alter table t1 drop index pk;
$PK Bigunsigned PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
PRIMARY KEY($PK) - UniqueHashIndex
update t1 set a = 1 where a = 17;
select * from t1 order by a;
a
1
2
3
drop table t1; drop table t1;
create table t1 (a int not null primary key, b int not null default 0, c varchar(254)) engine=ndb; create table t1 (a int not null primary key, b int not null default 0, c varchar(254)) engine=ndb;
show create table t1; show create table t1;
......
...@@ -12,6 +12,5 @@ ...@@ -12,6 +12,5 @@
partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table
ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms
ndb_index_ordered : Bug#38370 The test ndb.ndb_index_ordered fails with the community features on
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
...@@ -412,13 +412,32 @@ select * from t1 where a = 12; ...@@ -412,13 +412,32 @@ select * from t1 where a = 12;
drop table t1; drop table t1;
# some other ALTER combinations # some other ALTER combinations
# add/drop pk # Check add/drop primary key (not supported on-line)
create table t1 (a int not null, b varchar(10)) engine=ndb; create table t1(a int not null) engine=ndb;
show index from t1; --exec $NDB_TOOLS_DIR/ndb_desc --no-defaults -d test t1 | grep PRIMARY
insert into t1 values (1),(2),(3);
alter table t1 add primary key (a); alter table t1 add primary key (a);
show index from t1; --exec $NDB_TOOLS_DIR/ndb_desc --no-defaults -d test t1 | grep PRIMARY
update t1 set a = 17 where a = 1;
select * from t1 order by a;
alter table t1 drop primary key; alter table t1 drop primary key;
show index from t1; --exec $NDB_TOOLS_DIR/ndb_desc --no-defaults -d test t1 | grep PRIMARY
update t1 set a = 1 where a = 17;
select * from t1 order by a;
drop table t1;
# bug#31233 mysql_alter_table() fails to drop UNIQUE KEY
create table t1(a int not null) engine=ndb;
--exec $NDB_TOOLS_DIR/ndb_desc --no-defaults -d test t1 | grep PRIMARY
insert into t1 values (1),(2),(3);
create unique index pk on t1(a);
--exec $NDB_TOOLS_DIR/ndb_desc --no-defaults -d test t1 | grep PRIMARY
update t1 set a = 17 where a = 1;
select * from t1 order by a;
alter table t1 drop index pk;
--exec $NDB_TOOLS_DIR/ndb_desc --no-defaults -d test t1 | grep PRIMARY
update t1 set a = 1 where a = 17;
select * from t1 order by a;
drop table t1; drop table t1;
# alter .. alter # alter .. alter
......
...@@ -134,10 +134,14 @@ insert into t4 values (1,31),(2,32),(3,33),(4,34),(5,35); ...@@ -134,10 +134,14 @@ insert into t4 values (1,31),(2,32),(3,33),(4,34),(5,35);
--let ndb_restore_filter=test t1 --let ndb_restore_filter=test t1
--source include/ndb_backup_print.inc --source include/ndb_backup_print.inc
--exec rm -f $MYSQLTEST_VARDIR/tmp/t1.txt --error 0,1
--exec rm -f $MYSQLTEST_VARDIR/tmp/t2.txt --remove_file $MYSQLTEST_VARDIR/tmp/t1.txt
--exec rm -f $MYSQLTEST_VARDIR/tmp/t3.txt --error 0,1
--exec rm -f $MYSQLTEST_VARDIR/tmp/t4.txt --remove_file $MYSQLTEST_VARDIR/tmp/t2.txt
--error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/t3.txt
--error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/t4.txt
--let ndb_restore_opts=--verbose=0 --print_data --hex --tab $MYSQLTEST_VARDIR/tmp --append --let ndb_restore_opts=--verbose=0 --print_data --hex --tab $MYSQLTEST_VARDIR/tmp --append
--let ndb_restore_filter=test --let ndb_restore_filter=test
...@@ -156,10 +160,10 @@ insert into t4 values (1,31),(2,32),(3,33),(4,34),(5,35); ...@@ -156,10 +160,10 @@ insert into t4 values (1,31),(2,32),(3,33),(4,34),(5,35);
--source include/show_msg.inc --source include/show_msg.inc
--exec sort $MYSQLTEST_VARDIR/tmp/t4.txt --exec sort $MYSQLTEST_VARDIR/tmp/t4.txt
--exec rm -f $MYSQLTEST_VARDIR/tmp/t1.txt --remove_file $MYSQLTEST_VARDIR/tmp/t1.txt
--exec rm -f $MYSQLTEST_VARDIR/tmp/t2.txt --remove_file $MYSQLTEST_VARDIR/tmp/t2.txt
--exec rm -f $MYSQLTEST_VARDIR/tmp/t3.txt --remove_file $MYSQLTEST_VARDIR/tmp/t3.txt
--exec rm -f $MYSQLTEST_VARDIR/tmp/t4.txt --remove_file $MYSQLTEST_VARDIR/tmp/t4.txt
# now test some other datatypes # now test some other datatypes
drop table t1; drop table t1;
......
...@@ -113,7 +113,7 @@ flush tables; ...@@ -113,7 +113,7 @@ flush tables;
# Remove the frm file from disk # Remove the frm file from disk
--remove_file $MYSQLTEST_VARDIR/master-data/test/t3.frm --remove_file $MYSQLTEST_VARDIR/master-data/test/t3.frm
--error 1050 --error ER_TABLE_EXISTS_ERROR
create table t3( create table t3(
id int not null primary key, id int not null primary key,
name char(20), a int, b float, c char(24) name char(20), a int, b float, c char(24)
...@@ -204,13 +204,13 @@ system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS ...@@ -204,13 +204,13 @@ system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS
# #
# Test that correct error is returned # Test that correct error is returned
--error 1146 --error ER_NO_SUCH_TABLE
select * from t4; select * from t4;
--error 1146 --error ER_NO_SUCH_TABLE
select * from t4; select * from t4;
show status like 'handler_discover%'; show status like 'handler_discover%';
--error 1051 --error ER_BAD_TABLE_ERROR
drop table t4; drop table t4;
create table t4( create table t4(
...@@ -223,14 +223,14 @@ select * from t4; ...@@ -223,14 +223,14 @@ select * from t4;
# Remove the table from NDB # Remove the table from NDB
system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS_OUTPUT ; system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS_OUTPUT ;
--error 1146 --error ER_NO_SUCH_TABLE
select * from t4; select * from t4;
drop table if exists t4; drop table if exists t4;
# Test that dropping a table that does not exists # Test that dropping a table that does not exists
# on disk or in NDB gives same result as above # on disk or in NDB gives same result as above
--error 1051 --error ER_BAD_TABLE_ERROR
drop table t5; drop table t5;
drop table if exists t5; drop table if exists t5;
...@@ -257,7 +257,7 @@ system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS ...@@ -257,7 +257,7 @@ system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS
SHOW TABLES; SHOW TABLES;
--error 1146 --error ER_NO_SUCH_TABLE
select * from t4; select * from t4;
####################################################### #######################################################
...@@ -342,9 +342,9 @@ show status like 'handler_discover%'; ...@@ -342,9 +342,9 @@ show status like 'handler_discover%';
# Check that t3 or t5 can't be created # Check that t3 or t5 can't be created
# frm files for these tables is stilll on disk # frm files for these tables is stilll on disk
--error 1050 --error ER_TABLE_EXISTS_ERROR
create table t3(a int); create table t3(a int);
--error 1050 --error ER_TABLE_EXISTS_ERROR
create table t5(a int); create table t5(a int);
SHOW TABLES LIKE 't%'; SHOW TABLES LIKE 't%';
...@@ -462,7 +462,7 @@ show tables; ...@@ -462,7 +462,7 @@ show tables;
create database test2; create database test2;
use test2; use test2;
show tables; show tables;
--error 1146 --error ER_NO_SUCH_TABLE
select * from t1; select * from t1;
create table t2 (b int,c longblob) engine=ndb; create table t2 (b int,c longblob) engine=ndb;
use test; use test;
...@@ -487,7 +487,7 @@ create table t1 (a int primary key) engine=ndb; ...@@ -487,7 +487,7 @@ create table t1 (a int primary key) engine=ndb;
select * from t1; select * from t1;
--exec $NDB_MGM --no-defaults -e "all restart -n" > /dev/null --exec $NDB_MGM --no-defaults -e "all restart -n" > /dev/null
--exec $NDB_TOOLS_DIR/ndb_waiter --no-defaults --not-started > /dev/null --exec $NDB_TOOLS_DIR/ndb_waiter --no-defaults --not-started > /dev/null
--error 1015 --error ER_CANT_LOCK
select * from t1; select * from t1;
--exec $NDB_MGM --no-defaults -e "all start" > /dev/null --exec $NDB_MGM --no-defaults -e "all start" > /dev/null
--exec $NDB_TOOLS_DIR/ndb_waiter --no-defaults > /dev/null --exec $NDB_TOOLS_DIR/ndb_waiter --no-defaults > /dev/null
...@@ -503,17 +503,17 @@ drop database test_only_ndb_tables; ...@@ -503,17 +503,17 @@ drop database test_only_ndb_tables;
# discovered( for example a table created via NDBAPI) # discovered( for example a table created via NDBAPI)
# Test disabled since it doesn't work on case insensitive systems # Test disabled since it doesn't work on case insensitive systems
#--error 1050 #--error ER_TABLE_EXISTS_ERROR
#CREATE TABLE sys.SYSTAB_0 (a int); #CREATE TABLE sys.SYSTAB_0 (a int);
#--error 1105 #--error ER_UNKNOWN_ERROR
#select * from sys.SYSTAB_0; #select * from sys.SYSTAB_0;
#CREATE TABLE IF NOT EXISTS sys.SYSTAB_0 (a int); #CREATE TABLE IF NOT EXISTS sys.SYSTAB_0 (a int);
#show warnings; #show warnings;
#--error 1105 #--error ER_UNKNOWN_ERROR
#select * from sys.SYSTAB_0; #select * from sys.SYSTAB_0;
#--error 1051 #--error ER_BAD_TABLE_ERROR
#drop table sys.SYSTAB_0; #drop table sys.SYSTAB_0;
#drop table IF EXISTS sys.SYSTAB_0; #drop table IF EXISTS sys.SYSTAB_0;
......
################################################################################ ################################################################################
# inc/partition_alter2.inc # # inc/partition_alter2_1.inc #
# # # #
# Purpose: # # Purpose: #
# Tests where the columns used within the partitioning function are altered. # # Tests where the columns used within the partitioning function are altered. #
# This routine is only useful for the partition_<feature>_<engine> tests. .# # This routine is only useful for the partition_<feature>_<engine> tests. .#
# Part 1: increasing size of column
# # # #
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# Original Author: mleich # # Original Author: mleich #
# Original Date: 2006-03-05 # # Original Date: 2006-03-05 #
# Change Author: # # Change Author: MattiasJ #
# Change Date: # # Change Date: 2008-09-08 #
# Change: # # Change: Splitted the test in two different parts (increasing/decreasing col) #
################################################################################ ################################################################################
--echo --echo
...@@ -140,133 +141,6 @@ let $unique= , UNIQUE INDEX uidx (f_int2,f_int1); ...@@ -140,133 +141,6 @@ let $unique= , UNIQUE INDEX uidx (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc --source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc --source suite/parts/inc/partition_alter_13.inc
--echo
--echo #========================================================================
--echo # 2 Decrease the size of the column used in the partitioning
--echo # function and/or PRIMARY KEY and/or UNIQUE INDEX
--echo #========================================================================
--echo #------------------------------------------------------------------------
--echo # 2.1 ALTER column f_int2 not used in partitioning function
--echo #------------------------------------------------------------------------
# Rule: Only f_int1 is used within the partitioning function
# ---> inc/partition_alter_11.inc
let $alter= ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
--echo # 2.1.1 no PRIMARY KEY or UNIQUE INDEX exists
let $unique= ;
--source suite/parts/inc/partition_alter_11.inc
#
if ($do_pk_tests)
{
# The value of the direct following test is maybe covered by the test with
# the PRIMARY KEY containing two columns.
if ($more_pk_ui_tests)
{
--echo # 2.1.2 PRIMARY KEY exists
let $unique= , PRIMARY KEY (f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , PRIMARY KEY (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , PRIMARY KEY (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
#
--echo # 2.1.3 UNIQUE INDEX exists
# The value of the direct following test is maybe covered by the test with
# the UNIQUE INDEX containing two columns.
if ($more_pk_ui_tests)
{
let $unique= , UNIQUE INDEX uidx1 (f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
#
if ($more_pk_ui_tests)
{
# The value of the tests 2.2 is maybe covered by the tests 2.3
--echo #------------------------------------------------------------------------
--echo # 2.2 ALTER column f_int1 used in partitioning function
--echo #------------------------------------------------------------------------
# Rule: Only f_int1 is used within the partitioning function
# ---> inc/partition_alter_11.inc
let $alter= ALTER TABLE t1 MODIFY f_int1 MEDIUMINT;
--echo # 2.2.1 no PRIMARY KEY or UNIQUE INDEX exists
let $unique= ;
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
#
if ($do_pk_tests)
{
--echo # 2.2.2 PRIMARY KEY exists
let $unique= , PRIMARY KEY (f_int1);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , PRIMARY KEY (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , PRIMARY KEY (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
#
--echo # 2.2.3 UNIQUE INDEX exists
let $unique= , UNIQUE INDEX uidx (f_int1);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
#
--echo #------------------------------------------------------------------------
--echo # 2.3 ALTER column f_int1 and f_int2 used in partitioning function
--echo #------------------------------------------------------------------------
# Rule: f_int1 and f_int2 is used within the partitioning function
# ---> inc/partition_alter_13.inc
let $alter= ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
--echo # 2.3.1 no PRIMARY KEY or UNIQUE INDEX exists
let $unique= ;
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
#
if ($do_pk_tests)
{
--echo # 2.3.2 PRIMARY KEY exists
# The value of the direct following test is maybe covered by the test with
# the PRIMARY KEY containing two columns.
if ($more_pk_ui_tests)
{
let $unique= , PRIMARY KEY (f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , PRIMARY KEY (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , PRIMARY KEY (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
#
--echo # 2.3.3 UNIQUE INDEX exists
# The value of the direct following test is maybe covered by the test with
# the UNIQUE INDEX containing two columns.
if ($more_pk_ui_tests)
{
let $unique= , UNIQUE INDEX uidx (f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
#
if (0) if (0)
{ {
--echo --echo
......
################################################################################
# inc/partition_alter2_2.inc #
# #
# Purpose: #
# Tests where the columns used within the partitioning function are altered. #
# This routine is only useful for the partition_<feature>_<engine> tests. .#
# Part 2: decreasing size of column
# #
#------------------------------------------------------------------------------#
# Original Author: mleich #
# Original Date: 2006-03-05 #
# Change Author: MattiasJ #
# Change Date: 2008-09-08 #
# Change: Splitted the test in two different parts (increasing/decreasing col) #
################################################################################
--echo
--echo #========================================================================
--echo # 2 Decrease the size of the column used in the partitioning
--echo # function and/or PRIMARY KEY and/or UNIQUE INDEX
--echo #========================================================================
--echo #------------------------------------------------------------------------
--echo # 2.1 ALTER column f_int2 not used in partitioning function
--echo #------------------------------------------------------------------------
# Rule: Only f_int1 is used within the partitioning function
# ---> inc/partition_alter_11.inc
let $alter= ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
--echo # 2.1.1 no PRIMARY KEY or UNIQUE INDEX exists
let $unique= ;
--source suite/parts/inc/partition_alter_11.inc
#
if ($do_pk_tests)
{
# The value of the direct following test is maybe covered by the test with
# the PRIMARY KEY containing two columns.
if ($more_pk_ui_tests)
{
--echo # 2.1.2 PRIMARY KEY exists
let $unique= , PRIMARY KEY (f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , PRIMARY KEY (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , PRIMARY KEY (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
#
--echo # 2.1.3 UNIQUE INDEX exists
# The value of the direct following test is maybe covered by the test with
# the UNIQUE INDEX containing two columns.
if ($more_pk_ui_tests)
{
let $unique= , UNIQUE INDEX uidx1 (f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
#
if ($more_pk_ui_tests)
{
# The value of the tests 2.2 is maybe covered by the tests 2.3
--echo #------------------------------------------------------------------------
--echo # 2.2 ALTER column f_int1 used in partitioning function
--echo #------------------------------------------------------------------------
# Rule: Only f_int1 is used within the partitioning function
# ---> inc/partition_alter_11.inc
let $alter= ALTER TABLE t1 MODIFY f_int1 MEDIUMINT;
--echo # 2.2.1 no PRIMARY KEY or UNIQUE INDEX exists
let $unique= ;
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
#
if ($do_pk_tests)
{
--echo # 2.2.2 PRIMARY KEY exists
let $unique= , PRIMARY KEY (f_int1);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , PRIMARY KEY (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , PRIMARY KEY (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
#
--echo # 2.2.3 UNIQUE INDEX exists
let $unique= , UNIQUE INDEX uidx (f_int1);
--source suite/parts/inc/partition_alter_11.inc
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
#
--echo #------------------------------------------------------------------------
--echo # 2.3 ALTER column f_int1 and f_int2 used in partitioning function
--echo #------------------------------------------------------------------------
# Rule: f_int1 and f_int2 is used within the partitioning function
# ---> inc/partition_alter_13.inc
let $alter= ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
--echo # 2.3.1 no PRIMARY KEY or UNIQUE INDEX exists
let $unique= ;
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
#
if ($do_pk_tests)
{
--echo # 2.3.2 PRIMARY KEY exists
# The value of the direct following test is maybe covered by the test with
# the PRIMARY KEY containing two columns.
if ($more_pk_ui_tests)
{
let $unique= , PRIMARY KEY (f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , PRIMARY KEY (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , PRIMARY KEY (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
}
#
--echo # 2.3.3 UNIQUE INDEX exists
# The value of the direct following test is maybe covered by the test with
# the UNIQUE INDEX containing two columns.
if ($more_pk_ui_tests)
{
let $unique= , UNIQUE INDEX uidx (f_int1);
--source suite/parts/inc/partition_alter_11.inc
}
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1);
--source suite/parts/inc/partition_alter_11.inc
--source suite/parts/inc/partition_alter_13.inc
#
if (0)
{
--echo
--echo #========================================================================
--echo # 3 ALTER the type of the column used in the partitioning
--echo # function and/or PRIMARY KEY and/or UNIQUE INDEX
--echo # INTEGER --> FLOAT
--echo # INTEGER --> DECIMAL
--echo # INTEGER --> VARCHAR
--echo # mleich: I assume that at least the first two variants are of
--echo # some interest. But I am unsure if the server allows such
--echo # conversions. I also think that such operations have a
--echo # conversions very small likelihood.
--echo # To be implemented.
--echo #========================================================================
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
partition_alter2_ndb : Bug#18735 Not supported
partition_basic_ndb : Bug#19899 Crashing the server partition_basic_ndb : Bug#19899 Crashing the server
# http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations-syntax.html # http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations-syntax.html
partition_bit_ndb : NDB does not support bit column in index partition_bit_ndb : NDB does not support bit column in index
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment