auto-merge
This commit is contained in:
commit
8fd4c59ff6
@ -330,41 +330,11 @@ AC_DEFUN([MYSQL_SETUP_NDBCLUSTER], [
|
|||||||
AC_SUBST([NDB_SIZEOF_LONG])
|
AC_SUBST([NDB_SIZEOF_LONG])
|
||||||
AC_SUBST([NDB_SIZEOF_LONG_LONG])
|
AC_SUBST([NDB_SIZEOF_LONG_LONG])
|
||||||
|
|
||||||
AC_CONFIG_FILES(storage/ndb/include/Makefile dnl
|
AC_CONFIG_FILES([
|
||||||
storage/ndb/src/Makefile storage/ndb/src/common/Makefile dnl
|
storage/ndb/include/ndb_version.h
|
||||||
storage/ndb/docs/Makefile dnl
|
storage/ndb/include/ndb_global.h
|
||||||
storage/ndb/tools/Makefile dnl
|
storage/ndb/include/ndb_types.h
|
||||||
storage/ndb/src/common/debugger/Makefile dnl
|
])
|
||||||
storage/ndb/src/common/debugger/signaldata/Makefile dnl
|
|
||||||
storage/ndb/src/common/portlib/Makefile dnl
|
|
||||||
storage/ndb/src/common/util/Makefile dnl
|
|
||||||
storage/ndb/src/common/logger/Makefile dnl
|
|
||||||
storage/ndb/src/common/transporter/Makefile dnl
|
|
||||||
storage/ndb/src/common/mgmcommon/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/error/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/blocks/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/blocks/dbdict/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/blocks/dbdih/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/blocks/dblqh/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/blocks/dbtup/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/blocks/backup/Makefile dnl
|
|
||||||
storage/ndb/src/kernel/vm/Makefile dnl
|
|
||||||
storage/ndb/src/mgmapi/Makefile dnl
|
|
||||||
storage/ndb/src/ndbapi/Makefile dnl
|
|
||||||
storage/ndb/src/mgmsrv/Makefile dnl
|
|
||||||
storage/ndb/src/mgmclient/Makefile dnl
|
|
||||||
storage/ndb/src/cw/Makefile dnl
|
|
||||||
storage/ndb/src/cw/cpcd/Makefile dnl
|
|
||||||
storage/ndb/test/Makefile dnl
|
|
||||||
storage/ndb/test/src/Makefile dnl
|
|
||||||
storage/ndb/test/ndbapi/Makefile dnl
|
|
||||||
storage/ndb/test/ndbapi/bank/Makefile dnl
|
|
||||||
storage/ndb/test/tools/Makefile dnl
|
|
||||||
storage/ndb/test/run-test/Makefile dnl
|
|
||||||
storage/ndb/include/ndb_version.h storage/ndb/include/ndb_global.h dnl
|
|
||||||
storage/ndb/include/ndb_types.h dnl
|
|
||||||
)
|
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_SUBST(TEST_NDBCLUSTER)
|
AC_SUBST(TEST_NDBCLUSTER)
|
||||||
|
@ -477,10 +477,23 @@ dnl Although this is "pretty", it breaks libmysqld build
|
|||||||
# Even if we don't build a plugin, we bundle its source into the dist
|
# Even if we don't build a plugin, we bundle its source into the dist
|
||||||
# file. So its Makefile (and Makefiles for any subdirs) must be
|
# file. So its Makefile (and Makefiles for any subdirs) must be
|
||||||
# generated for 'make dist' to work.
|
# generated for 'make dist' to work.
|
||||||
m4_syscmd(test -f "$6/configure")
|
m4_syscmd([test -f "]$6[/configure"])
|
||||||
ifelse(m4_sysval, 0,
|
ifelse(m4_sysval, 0,
|
||||||
[AC_CONFIG_SUBDIRS($6)],
|
[AC_CONFIG_SUBDIRS($6)],
|
||||||
[AC_CONFIG_FILES($6/Makefile)]
|
[
|
||||||
|
# autoconf doesn't provide an automatic way to configure DIST_SUBDIRS of
|
||||||
|
# a subdir; for our purposes, it's enough to just check for existing
|
||||||
|
# Makefile.am files and add them in here
|
||||||
|
dnl
|
||||||
|
dnl Warning, don't try to quote the m4_esyscmd() macro, it doesn't
|
||||||
|
dnl work. Quoting here is tricky.
|
||||||
|
dnl
|
||||||
|
dnl The $FIND or $SED variable can be set by the user when calling autoconf itself
|
||||||
|
dnl to if they need to pass a specific path. This is *NOT* used when calling
|
||||||
|
dnl running configure!
|
||||||
|
dnl
|
||||||
|
AC_CONFIG_FILES(m4_esyscmd([${FIND-find} "]$6[" -name Makefile.am -print | ${SED-sed} 's,\.am$,,']))
|
||||||
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
ifelse(
|
ifelse(
|
||||||
|
@ -843,14 +843,17 @@ extern void *memdup_root(MEM_ROOT *root,const void *str, size_t len);
|
|||||||
extern int get_defaults_options(int argc, char **argv,
|
extern int get_defaults_options(int argc, char **argv,
|
||||||
char **defaults, char **extra_defaults,
|
char **defaults, char **extra_defaults,
|
||||||
char **group_suffix);
|
char **group_suffix);
|
||||||
|
extern int my_load_defaults(const char *conf_file, const char **groups,
|
||||||
|
int *argc, char ***argv, const char ***);
|
||||||
extern int load_defaults(const char *conf_file, const char **groups,
|
extern int load_defaults(const char *conf_file, const char **groups,
|
||||||
int *argc, char ***argv);
|
int *argc, char ***argv);
|
||||||
extern int modify_defaults_file(const char *file_location, const char *option,
|
extern int modify_defaults_file(const char *file_location, const char *option,
|
||||||
const char *option_value,
|
const char *option_value,
|
||||||
const char *section_name, int remove_option);
|
const char *section_name, int remove_option);
|
||||||
extern int my_search_option_files(const char *conf_file, int *argc,
|
extern int my_search_option_files(const char *conf_file, int *argc,
|
||||||
char ***argv, uint *args_used,
|
char ***argv, uint *args_used,
|
||||||
Process_option_func func, void *func_ctx);
|
Process_option_func func, void *func_ctx,
|
||||||
|
const char **default_directories);
|
||||||
extern void free_defaults(char **argv);
|
extern void free_defaults(char **argv);
|
||||||
extern void my_print_default_files(const char *conf_file);
|
extern void my_print_default_files(const char *conf_file);
|
||||||
extern void print_defaults(const char *conf_file, const char **groups);
|
extern void print_defaults(const char *conf_file, const char **groups);
|
||||||
|
@ -11,6 +11,11 @@
|
|||||||
# $engine_type storage engine to be tested
|
# $engine_type storage engine to be tested
|
||||||
#
|
#
|
||||||
# Last update:
|
# Last update:
|
||||||
|
# 2009-02-13 HH "Release_lock("hello")" is now also successful when delivering NULL,
|
||||||
|
# replaced two sleeps by wait_condition. The last two "sleep 1" have not been
|
||||||
|
# replaced as all tried wait conditions leaded to nondeterministic results, especially
|
||||||
|
# to succeeding concurrent updates. To replace the sleeps there should be some time
|
||||||
|
# planned (or internal knowledge of the server may help).
|
||||||
# 2006-08-02 ML test refactored
|
# 2006-08-02 ML test refactored
|
||||||
# old name was t/innodb_concurrent.test
|
# old name was t/innodb_concurrent.test
|
||||||
# main code went into include/concurrent.inc
|
# main code went into include/concurrent.inc
|
||||||
@ -21,7 +26,6 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Show prerequisites for this test.
|
# Show prerequisites for this test.
|
||||||
#
|
#
|
||||||
@ -50,8 +54,6 @@ GRANT USAGE ON test.* TO mysqltest@localhost;
|
|||||||
#
|
#
|
||||||
# Preparatory cleanup.
|
# Preparatory cleanup.
|
||||||
#
|
#
|
||||||
DO release_lock("hello");
|
|
||||||
DO release_lock("hello2");
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
@ -86,13 +88,14 @@ drop table if exists t1;
|
|||||||
connection thread2;
|
connection thread2;
|
||||||
--echo ** Start transaction for thread 2
|
--echo ** Start transaction for thread 2
|
||||||
begin;
|
begin;
|
||||||
--echo ** Update will cause a table scan and a new ULL will
|
--echo ** Update will cause a table scan and a new ULL will
|
||||||
--echo ** be created and blocked on the first row where tipo=11.
|
--echo ** be created and blocked on the first row where tipo=11.
|
||||||
send update t1 set eta=1+get_lock("hello",10)*0 where tipo=11;
|
send update t1 set eta=1+get_lock("hello",10)*0 where tipo=11;
|
||||||
sleep 1;
|
|
||||||
|
|
||||||
--echo ** connection thread1
|
--echo ** connection thread1
|
||||||
connection thread1;
|
connection thread1;
|
||||||
|
let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'User lock';
|
||||||
|
--source include/wait_condition.inc
|
||||||
--echo ** Start new transaction for thread 1
|
--echo ** Start new transaction for thread 1
|
||||||
begin;
|
begin;
|
||||||
--echo ** Update on t1 will cause a table scan which will be blocked because
|
--echo ** Update on t1 will cause a table scan which will be blocked because
|
||||||
@ -111,7 +114,9 @@ drop table if exists t1;
|
|||||||
}
|
}
|
||||||
--echo ** Release user level name lock from thread 1. This will cause the ULL
|
--echo ** Release user level name lock from thread 1. This will cause the ULL
|
||||||
--echo ** on thread 2 to end its wait.
|
--echo ** on thread 2 to end its wait.
|
||||||
select release_lock("hello");
|
# Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following
|
||||||
|
# is also guaranteed for NULL. Replaced SELECT by DO (no result).
|
||||||
|
DO release_lock("hello");
|
||||||
--echo ** Table is now updated with a new eta on tipo=22 for thread 1.
|
--echo ** Table is now updated with a new eta on tipo=22 for thread 1.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
|
||||||
@ -119,7 +124,9 @@ drop table if exists t1;
|
|||||||
connection thread2;
|
connection thread2;
|
||||||
--echo ** Release the lock and collect result from update on thread 2
|
--echo ** Release the lock and collect result from update on thread 2
|
||||||
reap;
|
reap;
|
||||||
select release_lock("hello");
|
# Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following
|
||||||
|
# is also guaranteed for NULL. Replaced SELECT by DO (no result).
|
||||||
|
DO release_lock("hello");
|
||||||
--echo ** Table should have eta updates where tipo=11 but updates made by
|
--echo ** Table should have eta updates where tipo=11 but updates made by
|
||||||
--echo ** thread 1 shouldn't be visible yet.
|
--echo ** thread 1 shouldn't be visible yet.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -183,10 +190,11 @@ drop table t1;
|
|||||||
--echo ** This will cause a hang on the first row where tipo=1 until the
|
--echo ** This will cause a hang on the first row where tipo=1 until the
|
||||||
--echo ** blocking ULL is released.
|
--echo ** blocking ULL is released.
|
||||||
send update t1 set eta=1+get_lock("hello",10)*0 where tipo=1;
|
send update t1 set eta=1+get_lock("hello",10)*0 where tipo=1;
|
||||||
sleep 1;
|
|
||||||
|
|
||||||
--echo ** connection thread1
|
--echo ** connection thread1
|
||||||
connection thread1;
|
connection thread1;
|
||||||
|
let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'User lock';
|
||||||
|
--source include/wait_condition.inc
|
||||||
--echo ** Start transaction on thread 1
|
--echo ** Start transaction on thread 1
|
||||||
begin;
|
begin;
|
||||||
--echo ** Update on t1 will cause a table scan which will be blocked because
|
--echo ** Update on t1 will cause a table scan which will be blocked because
|
||||||
@ -204,7 +212,9 @@ drop table t1;
|
|||||||
update t1 set tipo=1 where tipo=2;
|
update t1 set tipo=1 where tipo=2;
|
||||||
}
|
}
|
||||||
--echo ** Release ULL. This will release the next waiting ULL on thread 2.
|
--echo ** Release ULL. This will release the next waiting ULL on thread 2.
|
||||||
select release_lock("hello");
|
# Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically)the success of the following
|
||||||
|
# is also guaranteed for NULL. Replaced SELECT by DO (no result).
|
||||||
|
DO release_lock("hello");
|
||||||
--echo ** The table should still be updated with updates for thread 1 only:
|
--echo ** The table should still be updated with updates for thread 1 only:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
|
||||||
@ -212,7 +222,9 @@ drop table t1;
|
|||||||
connection thread2;
|
connection thread2;
|
||||||
--echo ** Release the lock and collect result from thread 2:
|
--echo ** Release the lock and collect result from thread 2:
|
||||||
reap;
|
reap;
|
||||||
select release_lock("hello");
|
# Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following
|
||||||
|
# is also guaranteed for NULL. Replaced SELECT by DO (no result).
|
||||||
|
DO release_lock("hello");
|
||||||
--echo ** Seen from thread 2 the table should have been updated on four
|
--echo ** Seen from thread 2 the table should have been updated on four
|
||||||
--echo ** places.
|
--echo ** places.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -264,15 +276,18 @@ drop table t1;
|
|||||||
--echo ** Update will create a table scan which creates a ULL where a=2;
|
--echo ** Update will create a table scan which creates a ULL where a=2;
|
||||||
--echo ** this will hang waiting on thread 1.
|
--echo ** this will hang waiting on thread 1.
|
||||||
send update t1 set b=10+get_lock(concat("hello",a),10)*0 where a=2;
|
send update t1 set b=10+get_lock(concat("hello",a),10)*0 where a=2;
|
||||||
sleep 1;
|
|
||||||
|
|
||||||
--echo ** connection thread1
|
--echo ** connection thread1
|
||||||
connection thread1;
|
connection thread1;
|
||||||
|
let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'User lock';
|
||||||
|
--source include/wait_condition.inc
|
||||||
--echo ** Insert new values to t1 from thread 1; this created an implicit
|
--echo ** Insert new values to t1 from thread 1; this created an implicit
|
||||||
--echo ** commit since there are no on-going transactions.
|
--echo ** commit since there are no on-going transactions.
|
||||||
insert into t1 values (1,1);
|
insert into t1 values (1,1);
|
||||||
--echo ** Release the ULL (thread 2 updates will finish).
|
--echo ** Release the ULL (thread 2 updates will finish).
|
||||||
select release_lock("hello2");
|
# Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following
|
||||||
|
# is also guaranteed for NULL. Replaced SELECT by DO (no result).
|
||||||
|
DO release_lock("hello2");
|
||||||
--echo ** ..but thread 1 will still see t1 as if nothing has happend:
|
--echo ** ..but thread 1 will still see t1 as if nothing has happend:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
|
||||||
@ -280,7 +295,9 @@ drop table t1;
|
|||||||
connection thread2;
|
connection thread2;
|
||||||
--echo ** Collect results from thread 2 and release the lock.
|
--echo ** Collect results from thread 2 and release the lock.
|
||||||
reap;
|
reap;
|
||||||
select release_lock("hello2");
|
# Due to Bug#32782 User lock hash fails to find lock, which probably also cause Bug#39484 (main.concurrent_innodb_safelog fails sporadically) the success of the following
|
||||||
|
# is also guaranteed for NULL. Replaced SELECT by DO (no result).
|
||||||
|
DO release_lock("hello2");
|
||||||
--echo ** The table should look like the original+updates for thread 2,
|
--echo ** The table should look like the original+updates for thread 2,
|
||||||
--echo ** and consist of new rows:
|
--echo ** and consist of new rows:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -534,6 +551,9 @@ drop table t1;
|
|||||||
connection thread2;
|
connection thread2;
|
||||||
begin;
|
begin;
|
||||||
send delete from t1 where tipo=2;
|
send delete from t1 where tipo=2;
|
||||||
|
# The sleep has not been replaced as all tried wait conditions leaded to sporadically
|
||||||
|
# succeding update in the following thread. Also the used status variables '%lock%' and
|
||||||
|
# 'innodb_deleted_rows' and infos in processlist where not sucessful.
|
||||||
sleep 1;
|
sleep 1;
|
||||||
|
|
||||||
--echo ** connection thread1
|
--echo ** connection thread1
|
||||||
@ -594,8 +614,11 @@ drop table t1;
|
|||||||
connection thread2;
|
connection thread2;
|
||||||
begin;
|
begin;
|
||||||
send delete from t1 where tipo=2;
|
send delete from t1 where tipo=2;
|
||||||
|
# The sleep has not been replaced as all tried wait conditions leaded to sporadically
|
||||||
|
# succeding update in the following thread. Also the used status variables '%lock%' and
|
||||||
|
# 'innodb_deleted_rows' and infos in processlist where not sucessful.
|
||||||
sleep 1;
|
sleep 1;
|
||||||
|
|
||||||
--echo ** connection thread1
|
--echo ** connection thread1
|
||||||
connection thread1;
|
connection thread1;
|
||||||
begin;
|
begin;
|
||||||
|
@ -3,27 +3,44 @@
|
|||||||
# in test cases and can be reused. #
|
# in test cases and can be reused. #
|
||||||
######################################################
|
######################################################
|
||||||
|
|
||||||
# Bug#41307: Tests using include/ndb_backup.inc won't work on Windows due to
|
|
||||||
# 'grep' call
|
|
||||||
# This test is disabled on Windows via the next line until the above bug is
|
|
||||||
# resolved
|
|
||||||
--source include/not_windows.inc
|
|
||||||
|
|
||||||
--exec $NDB_MGM --no-defaults --ndb-connectstring="$NDB_CONNECTSTRING" -e "start backup" >> $NDB_TOOLS_OUTPUT
|
--exec $NDB_MGM --no-defaults --ndb-connectstring="$NDB_CONNECTSTRING" -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||||
|
|
||||||
# there is no neat way to find the backupid, this is a hack to find it...
|
# To find the backupid, we must dump this data to a table, and SELECT
|
||||||
let $dump_file= $MYSQLTEST_VARDIR/tmp/tmp.dat;
|
# what we want into an outfile. This could be accomplished with grep, but
|
||||||
--exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="$NDB_CONNECTSTRING" -d sys --delimiter=',' SYSTAB_0 | grep 520093696 > $dump_file
|
# grep isn't Windows-portable
|
||||||
|
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
--disable_query_log
|
||||||
|
# create a table to help us out
|
||||||
|
--disable_warnings # leave this on until done with the entire process
|
||||||
|
# cleanup
|
||||||
|
DROP TABLE IF EXISTS helper1;
|
||||||
|
CREATE TABLE helper1(c1 VARCHAR(20));
|
||||||
|
# dump raw data to file
|
||||||
|
let $ndb_backup_file1= $MYSQLTEST_VARDIR/ndb_backup_tmp.dat;
|
||||||
|
let $ndb_backup_file2= $MYSQLTEST_VARDIR/tmp.dat;
|
||||||
|
--error 0,1
|
||||||
|
--remove_file $ndb_backup_file1
|
||||||
|
--exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="$NDB_CONNECTSTRING" -d sys --delimiter=',' SYSTAB_0 > $ndb_backup_file1
|
||||||
|
# load the table from the raw data file
|
||||||
|
eval LOAD DATA INFILE '$ndb_backup_file1' INTO TABLE helper1;
|
||||||
|
--remove_file $ndb_backup_file1
|
||||||
|
# output what we need
|
||||||
|
eval SELECT * FROM helper1 WHERE c1 LIKE '%520093696%'
|
||||||
|
INTO OUTFILE '$ndb_backup_file2';
|
||||||
|
# cleanup
|
||||||
|
DROP TABLE helper1;
|
||||||
|
--enable_warnings
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
--replace_result $dump_file DUMP_FILE
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
eval LOAD DATA INFILE '$dump_file' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
|
||||||
|
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
|
||||||
|
eval LOAD DATA INFILE '$ndb_backup_file2' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
|
--remove_file $ndb_backup_file2
|
||||||
|
|
||||||
# Load backup id into environment variable
|
# Load backup id into environment variable
|
||||||
let the_backup_id=`SELECT backup_id from test.backup_info`;
|
let the_backup_id=`SELECT backup_id from test.backup_info`;
|
||||||
|
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
|
|
||||||
remove_file $dump_file;
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@ SELECT @@global.innodb_locks_unsafe_for_binlog;
|
|||||||
0
|
0
|
||||||
# keep_locks == 1
|
# keep_locks == 1
|
||||||
GRANT USAGE ON test.* TO mysqltest@localhost;
|
GRANT USAGE ON test.* TO mysqltest@localhost;
|
||||||
DO release_lock("hello");
|
|
||||||
DO release_lock("hello2");
|
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
|
||||||
**
|
**
|
||||||
@ -36,7 +34,7 @@ get_lock("hello",10)
|
|||||||
** connection thread2
|
** connection thread2
|
||||||
** Start transaction for thread 2
|
** Start transaction for thread 2
|
||||||
begin;
|
begin;
|
||||||
** Update will cause a table scan and a new ULL will
|
** Update will cause a table scan and a new ULL will
|
||||||
** be created and blocked on the first row where tipo=11.
|
** be created and blocked on the first row where tipo=11.
|
||||||
update t1 set eta=1+get_lock("hello",10)*0 where tipo=11;
|
update t1 set eta=1+get_lock("hello",10)*0 where tipo=11;
|
||||||
** connection thread1
|
** connection thread1
|
||||||
@ -51,9 +49,7 @@ update t1 set eta=2 where tipo=22;
|
|||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
** Release user level name lock from thread 1. This will cause the ULL
|
** Release user level name lock from thread 1. This will cause the ULL
|
||||||
** on thread 2 to end its wait.
|
** on thread 2 to end its wait.
|
||||||
select release_lock("hello");
|
DO release_lock("hello");
|
||||||
release_lock("hello")
|
|
||||||
1
|
|
||||||
** Table is now updated with a new eta on tipo=22 for thread 1.
|
** Table is now updated with a new eta on tipo=22 for thread 1.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
eta tipo c
|
eta tipo c
|
||||||
@ -70,9 +66,7 @@ eta tipo c
|
|||||||
90 11 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
90 11 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
||||||
** connection thread2
|
** connection thread2
|
||||||
** Release the lock and collect result from update on thread 2
|
** Release the lock and collect result from update on thread 2
|
||||||
select release_lock("hello");
|
DO release_lock("hello");
|
||||||
release_lock("hello")
|
|
||||||
1
|
|
||||||
** Table should have eta updates where tipo=11 but updates made by
|
** Table should have eta updates where tipo=11 but updates made by
|
||||||
** thread 1 shouldn't be visible yet.
|
** thread 1 shouldn't be visible yet.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -194,9 +188,7 @@ begin;
|
|||||||
update t1 set tipo=1 where tipo=2;
|
update t1 set tipo=1 where tipo=2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
** Release ULL. This will release the next waiting ULL on thread 2.
|
** Release ULL. This will release the next waiting ULL on thread 2.
|
||||||
select release_lock("hello");
|
DO release_lock("hello");
|
||||||
release_lock("hello")
|
|
||||||
1
|
|
||||||
** The table should still be updated with updates for thread 1 only:
|
** The table should still be updated with updates for thread 1 only:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
eta tipo c
|
eta tipo c
|
||||||
@ -213,9 +205,7 @@ eta tipo c
|
|||||||
90 11 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
90 11 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
||||||
** connection thread2
|
** connection thread2
|
||||||
** Release the lock and collect result from thread 2:
|
** Release the lock and collect result from thread 2:
|
||||||
select release_lock("hello");
|
DO release_lock("hello");
|
||||||
release_lock("hello")
|
|
||||||
1
|
|
||||||
** Seen from thread 2 the table should have been updated on four
|
** Seen from thread 2 the table should have been updated on four
|
||||||
** places.
|
** places.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -319,9 +309,7 @@ update t1 set b=10+get_lock(concat("hello",a),10)*0 where a=2;
|
|||||||
** commit since there are no on-going transactions.
|
** commit since there are no on-going transactions.
|
||||||
insert into t1 values (1,1);
|
insert into t1 values (1,1);
|
||||||
** Release the ULL (thread 2 updates will finish).
|
** Release the ULL (thread 2 updates will finish).
|
||||||
select release_lock("hello2");
|
DO release_lock("hello2");
|
||||||
release_lock("hello2")
|
|
||||||
1
|
|
||||||
** ..but thread 1 will still see t1 as if nothing has happend:
|
** ..but thread 1 will still see t1 as if nothing has happend:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a b
|
a b
|
||||||
@ -332,9 +320,7 @@ a b
|
|||||||
1 1
|
1 1
|
||||||
** connection thread2
|
** connection thread2
|
||||||
** Collect results from thread 2 and release the lock.
|
** Collect results from thread 2 and release the lock.
|
||||||
select release_lock("hello2");
|
DO release_lock("hello2");
|
||||||
release_lock("hello2")
|
|
||||||
1
|
|
||||||
** The table should look like the original+updates for thread 2,
|
** The table should look like the original+updates for thread 2,
|
||||||
** and consist of new rows:
|
** and consist of new rows:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
@ -7,8 +7,6 @@ SELECT @@global.innodb_locks_unsafe_for_binlog;
|
|||||||
1
|
1
|
||||||
# keep_locks == 0
|
# keep_locks == 0
|
||||||
GRANT USAGE ON test.* TO mysqltest@localhost;
|
GRANT USAGE ON test.* TO mysqltest@localhost;
|
||||||
DO release_lock("hello");
|
|
||||||
DO release_lock("hello2");
|
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
|
||||||
**
|
**
|
||||||
@ -36,7 +34,7 @@ get_lock("hello",10)
|
|||||||
** connection thread2
|
** connection thread2
|
||||||
** Start transaction for thread 2
|
** Start transaction for thread 2
|
||||||
begin;
|
begin;
|
||||||
** Update will cause a table scan and a new ULL will
|
** Update will cause a table scan and a new ULL will
|
||||||
** be created and blocked on the first row where tipo=11.
|
** be created and blocked on the first row where tipo=11.
|
||||||
update t1 set eta=1+get_lock("hello",10)*0 where tipo=11;
|
update t1 set eta=1+get_lock("hello",10)*0 where tipo=11;
|
||||||
** connection thread1
|
** connection thread1
|
||||||
@ -50,9 +48,7 @@ begin;
|
|||||||
update t1 set eta=2 where tipo=22;
|
update t1 set eta=2 where tipo=22;
|
||||||
** Release user level name lock from thread 1. This will cause the ULL
|
** Release user level name lock from thread 1. This will cause the ULL
|
||||||
** on thread 2 to end its wait.
|
** on thread 2 to end its wait.
|
||||||
select release_lock("hello");
|
DO release_lock("hello");
|
||||||
release_lock("hello")
|
|
||||||
1
|
|
||||||
** Table is now updated with a new eta on tipo=22 for thread 1.
|
** Table is now updated with a new eta on tipo=22 for thread 1.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
eta tipo c
|
eta tipo c
|
||||||
@ -69,9 +65,7 @@ eta tipo c
|
|||||||
90 11 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
90 11 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
||||||
** connection thread2
|
** connection thread2
|
||||||
** Release the lock and collect result from update on thread 2
|
** Release the lock and collect result from update on thread 2
|
||||||
select release_lock("hello");
|
DO release_lock("hello");
|
||||||
release_lock("hello")
|
|
||||||
1
|
|
||||||
** Table should have eta updates where tipo=11 but updates made by
|
** Table should have eta updates where tipo=11 but updates made by
|
||||||
** thread 1 shouldn't be visible yet.
|
** thread 1 shouldn't be visible yet.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -192,9 +186,7 @@ begin;
|
|||||||
** do not match the WHERE condition are released.
|
** do not match the WHERE condition are released.
|
||||||
update t1 set tipo=1 where tipo=2;
|
update t1 set tipo=1 where tipo=2;
|
||||||
** Release ULL. This will release the next waiting ULL on thread 2.
|
** Release ULL. This will release the next waiting ULL on thread 2.
|
||||||
select release_lock("hello");
|
DO release_lock("hello");
|
||||||
release_lock("hello")
|
|
||||||
1
|
|
||||||
** The table should still be updated with updates for thread 1 only:
|
** The table should still be updated with updates for thread 1 only:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
eta tipo c
|
eta tipo c
|
||||||
@ -211,9 +203,7 @@ eta tipo c
|
|||||||
90 11 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
90 11 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
||||||
** connection thread2
|
** connection thread2
|
||||||
** Release the lock and collect result from thread 2:
|
** Release the lock and collect result from thread 2:
|
||||||
select release_lock("hello");
|
DO release_lock("hello");
|
||||||
release_lock("hello")
|
|
||||||
1
|
|
||||||
** Seen from thread 2 the table should have been updated on four
|
** Seen from thread 2 the table should have been updated on four
|
||||||
** places.
|
** places.
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -317,9 +307,7 @@ update t1 set b=10+get_lock(concat("hello",a),10)*0 where a=2;
|
|||||||
** commit since there are no on-going transactions.
|
** commit since there are no on-going transactions.
|
||||||
insert into t1 values (1,1);
|
insert into t1 values (1,1);
|
||||||
** Release the ULL (thread 2 updates will finish).
|
** Release the ULL (thread 2 updates will finish).
|
||||||
select release_lock("hello2");
|
DO release_lock("hello2");
|
||||||
release_lock("hello2")
|
|
||||||
1
|
|
||||||
** ..but thread 1 will still see t1 as if nothing has happend:
|
** ..but thread 1 will still see t1 as if nothing has happend:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a b
|
a b
|
||||||
@ -330,9 +318,7 @@ a b
|
|||||||
1 1
|
1 1
|
||||||
** connection thread2
|
** connection thread2
|
||||||
** Collect results from thread 2 and release the lock.
|
** Collect results from thread 2 and release the lock.
|
||||||
select release_lock("hello2");
|
DO release_lock("hello2");
|
||||||
release_lock("hello2")
|
|
||||||
1
|
|
||||||
** The table should look like the original+updates for thread 2,
|
** The table should look like the original+updates for thread 2,
|
||||||
** and consist of new rows:
|
** and consist of new rows:
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
@ -1731,7 +1731,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`HOST` varchar(64) NOT NULL DEFAULT '',
|
`HOST` varchar(64) NOT NULL DEFAULT '',
|
||||||
`DB` varchar(64) DEFAULT NULL,
|
`DB` varchar(64) DEFAULT NULL,
|
||||||
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
||||||
`TIME` bigint(7) NOT NULL DEFAULT '0',
|
`TIME` int(7) NOT NULL DEFAULT '0',
|
||||||
`STATE` varchar(64) DEFAULT NULL,
|
`STATE` varchar(64) DEFAULT NULL,
|
||||||
`INFO` longtext
|
`INFO` longtext
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||||
@ -1745,7 +1745,7 @@ t1 CREATE TEMPORARY TABLE `t1` (
|
|||||||
`HOST` varchar(64) NOT NULL DEFAULT '',
|
`HOST` varchar(64) NOT NULL DEFAULT '',
|
||||||
`DB` varchar(64) DEFAULT NULL,
|
`DB` varchar(64) DEFAULT NULL,
|
||||||
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
||||||
`TIME` bigint(7) NOT NULL DEFAULT '0',
|
`TIME` int(7) NOT NULL DEFAULT '0',
|
||||||
`STATE` varchar(64) DEFAULT NULL,
|
`STATE` varchar(64) DEFAULT NULL,
|
||||||
`INFO` longtext
|
`INFO` longtext
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||||
|
@ -1720,4 +1720,9 @@ SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
|
|||||||
CREATE_OPTIONS
|
CREATE_OPTIONS
|
||||||
KEY_BLOCK_SIZE=1
|
KEY_BLOCK_SIZE=1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SET TIMESTAMP=@@TIMESTAMP + 10000000;
|
||||||
|
SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
|
||||||
|
TEST_RESULT
|
||||||
|
OK
|
||||||
|
SET TIMESTAMP=DEFAULT;
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
|
@ -276,8 +276,6 @@ Variable_name Value
|
|||||||
Key_blocks_unused KEY_BLOCKS_UNUSED
|
Key_blocks_unused KEY_BLOCKS_UNUSED
|
||||||
set global keycache2.key_buffer_size=0;
|
set global keycache2.key_buffer_size=0;
|
||||||
set global keycache3.key_buffer_size=100;
|
set global keycache3.key_buffer_size=100;
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect key_buffer_size value: '100'
|
|
||||||
set global keycache3.key_buffer_size=0;
|
set global keycache3.key_buffer_size=0;
|
||||||
create table t1 (mytext text, FULLTEXT (mytext));
|
create table t1 (mytext text, FULLTEXT (mytext));
|
||||||
insert t1 values ('aaabbb');
|
insert t1 values ('aaabbb');
|
||||||
|
@ -4416,4 +4416,32 @@ date_nokey
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Incorrect date value: '10:41:7' for column 'date_nokey' at row 1
|
Warning 1292 Incorrect date value: '10:41:7' for column 'date_nokey' at row 1
|
||||||
DROP TABLE A,C;
|
DROP TABLE A,C;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL, b INT);
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select '1' AS `a`,'1' AS `b` from `test`.`t1` where 1
|
||||||
|
SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND c=c) OR b > 20;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select '0' AS `a`,'0' AS `b`,'0' AS `c` from `test`.`t1` where 1
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a AND b=b) OR b > 20;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select '0' AS `a`,'0' AS `b`,'0' AS `c` from `test`.`t1` where 1
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND a=a) OR b > 20;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select '0' AS `a`,'0' AS `b`,'0' AS `c` from `test`.`t1` where 1
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -27,6 +27,7 @@ set @my_slow_launch_time =@@global.slow_launch_time;
|
|||||||
set @my_storage_engine =@@global.storage_engine;
|
set @my_storage_engine =@@global.storage_engine;
|
||||||
set @my_thread_cache_size =@@global.thread_cache_size;
|
set @my_thread_cache_size =@@global.thread_cache_size;
|
||||||
set @my_max_allowed_packet =@@global.max_allowed_packet;
|
set @my_max_allowed_packet =@@global.max_allowed_packet;
|
||||||
|
set @my_join_buffer_size =@@global.join_buffer_size;
|
||||||
set @`test`=1;
|
set @`test`=1;
|
||||||
select @test, @`test`, @TEST, @`TEST`, @"teSt";
|
select @test, @`test`, @TEST, @`TEST`, @"teSt";
|
||||||
@test @`test` @TEST @`TEST` @"teSt"
|
@test @`test` @TEST @`TEST` @"teSt"
|
||||||
@ -1018,6 +1019,11 @@ show variables like 'hostname';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
hostname #
|
hostname #
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
set join_buffer_size=1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect join_buffer_size value: '1'
|
||||||
|
set @save_join_buffer_size=@@join_buffer_size;
|
||||||
|
set join_buffer_size=@save_join_buffer_size;
|
||||||
set global binlog_cache_size =@my_binlog_cache_size;
|
set global binlog_cache_size =@my_binlog_cache_size;
|
||||||
set global connect_timeout =@my_connect_timeout;
|
set global connect_timeout =@my_connect_timeout;
|
||||||
set global delayed_insert_timeout =@my_delayed_insert_timeout;
|
set global delayed_insert_timeout =@my_delayed_insert_timeout;
|
||||||
@ -1048,6 +1054,7 @@ set global slow_launch_time =@my_slow_launch_time;
|
|||||||
set global storage_engine =@my_storage_engine;
|
set global storage_engine =@my_storage_engine;
|
||||||
set global thread_cache_size =@my_thread_cache_size;
|
set global thread_cache_size =@my_thread_cache_size;
|
||||||
set global max_allowed_packet =@my_max_allowed_packet;
|
set global max_allowed_packet =@my_max_allowed_packet;
|
||||||
|
set global join_buffer_size =@my_join_buffer_size;
|
||||||
show global variables where Variable_name='table_definition_cache' or
|
show global variables where Variable_name='table_definition_cache' or
|
||||||
Variable_name='table_lock_wait_timeout';
|
Variable_name='table_lock_wait_timeout';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
|
@ -38,4 +38,5 @@ DROP PROCEDURE IF EXISTS p2;
|
|||||||
DROP FUNCTION IF EXISTS f1;
|
DROP FUNCTION IF EXISTS f1;
|
||||||
DROP TRIGGER IF EXISTS tr1;
|
DROP TRIGGER IF EXISTS tr1;
|
||||||
stop slave sql_thread;
|
stop slave sql_thread;
|
||||||
|
reset slave;
|
||||||
SET @@global.relay_log_purge= @old_relay_log_purge;
|
SET @@global.relay_log_purge= @old_relay_log_purge;
|
||||||
|
@ -52,9 +52,10 @@ DROP FUNCTION IF EXISTS f1;
|
|||||||
DROP TRIGGER IF EXISTS tr1;
|
DROP TRIGGER IF EXISTS tr1;
|
||||||
enable_warnings;
|
enable_warnings;
|
||||||
|
|
||||||
|
stop slave sql_thread;
|
||||||
|
reset slave;
|
||||||
|
source include/wait_for_slave_sql_to_stop.inc;
|
||||||
remove_file $MYSQLD_DATADIR/slave-relay-bin.000001;
|
remove_file $MYSQLD_DATADIR/slave-relay-bin.000001;
|
||||||
remove_file $MYSQLD_DATADIR/slave-relay-bin.index;
|
remove_file $MYSQLD_DATADIR/slave-relay-bin.index;
|
||||||
stop slave sql_thread;
|
|
||||||
source include/wait_for_slave_sql_to_stop.inc;
|
|
||||||
|
|
||||||
SET @@global.relay_log_purge= @old_relay_log_purge;
|
SET @@global.relay_log_purge= @old_relay_log_purge;
|
||||||
|
@ -48,7 +48,7 @@ NULL mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL NULL NUL
|
|||||||
NULL mysql event modified 9 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
|
NULL mysql event modified 9 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
|
||||||
NULL mysql event name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
|
NULL mysql event name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
|
||||||
NULL mysql event on_completion 14 DROP NO enum 8 24 NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') select,insert,update,references
|
NULL mysql event on_completion 14 DROP NO enum 8 24 NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') select,insert,update,references
|
||||||
NULL mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL int(10) select,insert,update,references
|
NULL mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
|
||||||
NULL mysql event sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references
|
NULL mysql event sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references
|
||||||
NULL mysql event starts 11 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
|
NULL mysql event starts 11 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
|
||||||
NULL mysql event status 13 ENABLED NO enum 18 54 NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') select,insert,update,references
|
NULL mysql event status 13 ENABLED NO enum 18 54 NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') select,insert,update,references
|
||||||
@ -60,7 +60,7 @@ NULL mysql func type 4 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('fu
|
|||||||
NULL mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
NULL mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||||
NULL mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references
|
NULL mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references
|
||||||
NULL mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
NULL mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||||
NULL mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
NULL mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
|
||||||
NULL mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
NULL mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||||
NULL mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
NULL mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||||
NULL mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI select,insert,update,references
|
NULL mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI select,insert,update,references
|
||||||
@ -150,7 +150,7 @@ NULL mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL NULL NULL time
|
|||||||
NULL mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
|
NULL mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
|
||||||
NULL mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
NULL mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||||
NULL mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
NULL mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||||
NULL mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
NULL mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
|
||||||
NULL mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
NULL mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||||
NULL mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
NULL mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||||
NULL mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
NULL mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||||
@ -329,7 +329,7 @@ NULL mysql event ends datetime NULL NULL NULL NULL datetime
|
|||||||
3.0000 mysql event on_completion enum 8 24 utf8 utf8_general_ci enum('DROP','PRESERVE')
|
3.0000 mysql event on_completion enum 8 24 utf8 utf8_general_ci enum('DROP','PRESERVE')
|
||||||
3.0000 mysql event sql_mode set 478 1434 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
|
3.0000 mysql event sql_mode set 478 1434 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
|
||||||
3.0000 mysql event comment char 64 192 utf8 utf8_bin char(64)
|
3.0000 mysql event comment char 64 192 utf8 utf8_bin char(64)
|
||||||
NULL mysql event originator int NULL NULL NULL NULL int(10)
|
NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
|
||||||
1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64)
|
1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64)
|
||||||
3.0000 mysql event character_set_client char 32 96 utf8 utf8_bin char(32)
|
3.0000 mysql event character_set_client char 32 96 utf8 utf8_bin char(32)
|
||||||
3.0000 mysql event collation_connection char 32 96 utf8 utf8_bin char(32)
|
3.0000 mysql event collation_connection char 32 96 utf8 utf8_bin char(32)
|
||||||
@ -342,7 +342,7 @@ NULL mysql func ret tinyint NULL NULL NULL NULL tinyint(1)
|
|||||||
NULL mysql general_log event_time timestamp NULL NULL NULL NULL timestamp
|
NULL mysql general_log event_time timestamp NULL NULL NULL NULL timestamp
|
||||||
1.0000 mysql general_log user_host mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
1.0000 mysql general_log user_host mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||||
NULL mysql general_log thread_id int NULL NULL NULL NULL int(11)
|
NULL mysql general_log thread_id int NULL NULL NULL NULL int(11)
|
||||||
NULL mysql general_log server_id int NULL NULL NULL NULL int(11)
|
NULL mysql general_log server_id int NULL NULL NULL NULL int(10) unsigned
|
||||||
3.0000 mysql general_log command_type varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 mysql general_log command_type varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
1.0000 mysql general_log argument mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
1.0000 mysql general_log argument mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||||
NULL mysql help_category help_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
|
NULL mysql help_category help_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
|
||||||
@ -434,7 +434,7 @@ NULL mysql slow_log rows_examined int NULL NULL NULL NULL int(11)
|
|||||||
3.0000 mysql slow_log db varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
3.0000 mysql slow_log db varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||||
NULL mysql slow_log last_insert_id int NULL NULL NULL NULL int(11)
|
NULL mysql slow_log last_insert_id int NULL NULL NULL NULL int(11)
|
||||||
NULL mysql slow_log insert_id int NULL NULL NULL NULL int(11)
|
NULL mysql slow_log insert_id int NULL NULL NULL NULL int(11)
|
||||||
NULL mysql slow_log server_id int NULL NULL NULL NULL int(11)
|
NULL mysql slow_log server_id int NULL NULL NULL NULL int(10) unsigned
|
||||||
1.0000 mysql slow_log sql_text mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
1.0000 mysql slow_log sql_text mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||||
3.0000 mysql tables_priv Host char 60 180 utf8 utf8_bin char(60)
|
3.0000 mysql tables_priv Host char 60 180 utf8 utf8_bin char(60)
|
||||||
3.0000 mysql tables_priv Db char 64 192 utf8 utf8_bin char(64)
|
3.0000 mysql tables_priv Db char 64 192 utf8 utf8_bin char(64)
|
||||||
|
@ -131,8 +131,9 @@ create table t9 engine=myisam as select * from t9_c;
|
|||||||
create table t10 engine=myisam as select * from t10_c;
|
create table t10 engine=myisam as select * from t10_c;
|
||||||
ForceVarPart: 0
|
ForceVarPart: 0
|
||||||
ForceVarPart: 1
|
ForceVarPart: 1
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
||||||
ForceVarPart: 0
|
ForceVarPart: 0
|
||||||
@ -286,8 +287,9 @@ auto_increment
|
|||||||
10001
|
10001
|
||||||
ALTER TABLE t7_c
|
ALTER TABLE t7_c
|
||||||
PARTITION BY LINEAR KEY (`dardtestard`);
|
PARTITION BY LINEAR KEY (`dardtestard`);
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
||||||
select count(*) from t1;
|
select count(*) from t1;
|
||||||
@ -490,8 +492,9 @@ select * from t9_c) a;
|
|||||||
count(*)
|
count(*)
|
||||||
3
|
3
|
||||||
drop table t1_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
drop table t1_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
||||||
drop table if exists t2_c;
|
drop table if exists t2_c;
|
||||||
|
@ -125,8 +125,9 @@ create table t6 engine=myisam as select * from t6_c;
|
|||||||
create table t7 engine=myisam as select * from t7_c;
|
create table t7 engine=myisam as select * from t7_c;
|
||||||
create table t8 engine=myisam as select * from t8_c;
|
create table t8 engine=myisam as select * from t8_c;
|
||||||
create table t9 engine=myisam as select * from t9_c;
|
create table t9 engine=myisam as select * from t9_c;
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||||
select count(*) from t1;
|
select count(*) from t1;
|
||||||
@ -244,8 +245,9 @@ PARTITION BY LINEAR HASH (`relatta`)
|
|||||||
PARTITIONS 4;
|
PARTITIONS 4;
|
||||||
ALTER TABLE t7_c
|
ALTER TABLE t7_c
|
||||||
PARTITION BY LINEAR KEY (`dardtestard`);
|
PARTITION BY LINEAR KEY (`dardtestard`);
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||||
select count(*) from t1;
|
select count(*) from t1;
|
||||||
@ -448,8 +450,9 @@ select * from t9_c) a;
|
|||||||
count(*)
|
count(*)
|
||||||
3
|
3
|
||||||
drop table t1_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
drop table t1_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
Create table test/def/t2_c failed: Translate frm error
|
Create table test/def/t2_c failed: Translate frm error
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
@ -227,8 +227,9 @@ hex(h3) NULL
|
|||||||
hex(i1) NULL
|
hex(i1) NULL
|
||||||
hex(i2) NULL
|
hex(i2) NULL
|
||||||
hex(i3) NULL
|
hex(i3) NULL
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
1;0x1;0x17;0x789A;0x789ABCDE;0xFEDC0001;127;255;32767;65535;2147483647;4294967295;9223372036854775807;18446744073709551615;1;12345678901234567890123456789012;123456789;1;12345678901234567890123456789012;123456789;0x12;0x123456789ABCDEF0;0x012345;0x12;0x123456789ABCDEF0;0x00123450
|
1;0x1;0x17;0x789A;0x789ABCDE;0xFEDC0001;127;255;32767;65535;2147483647;4294967295;9223372036854775807;18446744073709551615;1;12345678901234567890123456789012;123456789;1;12345678901234567890123456789012;123456789;0x12;0x123456789ABCDEF0;0x012345;0x12;0x123456789ABCDEF0;0x00123450
|
||||||
2;0x0;0x0;0x0;0x0;0x0;-128;0;-32768;0;-2147483648;0;-9223372036854775808;0;;;;;;;0x0;0x0;0x0;0x0;0x0;0x0
|
2;0x0;0x0;0x0;0x0;0x0;-128;0;-32768;0;-2147483648;0;-9223372036854775808;0;;;;;;;0x0;0x0;0x0;0x0;0x0;0x0
|
||||||
@ -257,8 +258,9 @@ create table t4 (pk int key, a int) engine ndb;
|
|||||||
insert into t2 values (1,11),(2,12),(3,13),(4,14),(5,15);
|
insert into t2 values (1,11),(2,12),(3,13),(4,14),(5,15);
|
||||||
insert into t3 values (1,21),(2,22),(3,23),(4,24),(5,25);
|
insert into t3 values (1,21),(2,22),(3,23),(4,24),(5,25);
|
||||||
insert into t4 values (1,31),(2,32),(3,33),(4,34),(5,35);
|
insert into t4 values (1,31),(2,32),(3,33),(4,34),(5,35);
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
'1' '1' '12345678901234567890123456789012' '123456789' '1' '12345678901234567890123456789012' '123456789' '0x20' '0x123456789ABCDEF020' '0x012345000020' '0x1200000020' '0x123456789ABCDEF000000020' '0x00123450000020'
|
'1' '1' '12345678901234567890123456789012' '123456789' '1' '12345678901234567890123456789012' '123456789' '0x20' '0x123456789ABCDEF020' '0x012345000020' '0x1200000020' '0x123456789ABCDEF000000020' '0x00123450000020'
|
||||||
|
|
||||||
@ -297,8 +299,9 @@ create table t1
|
|||||||
insert into t1 values(1, 8388607, 16777215);
|
insert into t1 values(1, 8388607, 16777215);
|
||||||
insert into t1 values(2, -8388608, 0);
|
insert into t1 values(2, -8388608, 0);
|
||||||
insert into t1 values(3, -1, 1);
|
insert into t1 values(3, -1, 1);
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
1;8388607;16777215
|
1;8388607;16777215
|
||||||
2;-8388608;0
|
2;-8388608;0
|
||||||
|
@ -27,8 +27,9 @@ pk1 c2 c3 hex(c4)
|
|||||||
3 Sweden 498 1
|
3 Sweden 498 1
|
||||||
4 Sweden 497 1
|
4 Sweden 497 1
|
||||||
5 Sweden 496 1
|
5 Sweden 496 1
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
ALTER TABLESPACE table_space1
|
ALTER TABLESPACE table_space1
|
||||||
@ -91,8 +92,9 @@ LENGTH(data)
|
|||||||
SELECT LENGTH(data) FROM test.t4 WHERE c1 = 2;
|
SELECT LENGTH(data) FROM test.t4 WHERE c1 = 2;
|
||||||
LENGTH(data)
|
LENGTH(data)
|
||||||
16384
|
16384
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
DROP TABLE test.t2;
|
DROP TABLE test.t2;
|
||||||
@ -317,8 +319,9 @@ pk1 c2 c3 hex(c4)
|
|||||||
248 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 4 1
|
248 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 4 1
|
||||||
247 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 6 1
|
247 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 6 1
|
||||||
246 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 8 1
|
246 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 8 1
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
DROP TABLE test.t2;
|
DROP TABLE test.t2;
|
||||||
|
@ -27,8 +27,9 @@ pk1 c2 c3 hex(c4)
|
|||||||
3 Sweden 498 1
|
3 Sweden 498 1
|
||||||
4 Sweden 497 1
|
4 Sweden 497 1
|
||||||
5 Sweden 496 1
|
5 Sweden 496 1
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
ALTER TABLESPACE table_space1
|
ALTER TABLESPACE table_space1
|
||||||
@ -91,8 +92,9 @@ LENGTH(data)
|
|||||||
SELECT LENGTH(data) FROM test.t4 WHERE c1 = 2;
|
SELECT LENGTH(data) FROM test.t4 WHERE c1 = 2;
|
||||||
LENGTH(data)
|
LENGTH(data)
|
||||||
16384
|
16384
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
DROP TABLE test.t2;
|
DROP TABLE test.t2;
|
||||||
@ -317,8 +319,9 @@ pk1 c2 c3 hex(c4)
|
|||||||
248 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 4 1
|
248 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 4 1
|
||||||
247 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 6 1
|
247 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 6 1
|
||||||
246 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 8 1
|
246 TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU 8 1
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
DROP TABLE test.t2;
|
DROP TABLE test.t2;
|
||||||
|
@ -25,8 +25,9 @@ hex(c2) hex(c3) c1
|
|||||||
0 1 BCDEF
|
0 1 BCDEF
|
||||||
1 0 CD
|
1 0 CD
|
||||||
0 0 DEFGHIJKL
|
0 0 DEFGHIJKL
|
||||||
CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info
|
||||||
LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
(id INT, backup_id INT) ENGINE = MEMORY;
|
||||||
|
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
|
||||||
DROP TABLE test.backup_info;
|
DROP TABLE test.backup_info;
|
||||||
UPDATE t1 SET c2=0 WHERE c3="row2";
|
UPDATE t1 SET c2=0 WHERE c3="row2";
|
||||||
SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
|
SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
|
||||||
|
@ -1410,6 +1410,15 @@ CREATE TABLE t1(a INT) KEY_BLOCK_SIZE=1;
|
|||||||
SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
|
SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #22047: Time in SHOW PROCESSLIST for SQL thread in replication seems
|
||||||
|
# to become negative
|
||||||
|
#
|
||||||
|
|
||||||
|
SET TIMESTAMP=@@TIMESTAMP + 10000000;
|
||||||
|
SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
|
||||||
|
SET TIMESTAMP=DEFAULT;
|
||||||
|
|
||||||
--echo End of 5.1 tests.
|
--echo End of 5.1 tests.
|
||||||
|
|
||||||
# Wait till all disconnects are completed
|
# Wait till all disconnects are completed
|
||||||
|
@ -3769,4 +3769,20 @@ SELECT date_nokey FROM C
|
|||||||
|
|
||||||
DROP TABLE A,C;
|
DROP TABLE A,C;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #42957: no results from
|
||||||
|
# select where .. (col=col and col=col) or ... (false expression)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL, b INT);
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
|
||||||
|
SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND c=c) OR b > 20;
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a AND b=b) OR b > 20;
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND a=a) OR b > 20;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -36,6 +36,7 @@ set @my_slow_launch_time =@@global.slow_launch_time;
|
|||||||
set @my_storage_engine =@@global.storage_engine;
|
set @my_storage_engine =@@global.storage_engine;
|
||||||
set @my_thread_cache_size =@@global.thread_cache_size;
|
set @my_thread_cache_size =@@global.thread_cache_size;
|
||||||
set @my_max_allowed_packet =@@global.max_allowed_packet;
|
set @my_max_allowed_packet =@@global.max_allowed_packet;
|
||||||
|
set @my_join_buffer_size =@@global.join_buffer_size;
|
||||||
# case insensitivity tests (new in 5.0)
|
# case insensitivity tests (new in 5.0)
|
||||||
set @`test`=1;
|
set @`test`=1;
|
||||||
select @test, @`test`, @TEST, @`TEST`, @"teSt";
|
select @test, @`test`, @TEST, @`TEST`, @"teSt";
|
||||||
@ -780,6 +781,18 @@ show variables like 'hostname';
|
|||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#36446: Attempt to set @@join_buffer_size to its minimum value
|
||||||
|
# produces spurious warning
|
||||||
|
#
|
||||||
|
|
||||||
|
# set to 1 so mysqld will correct to minimum (+ warn)
|
||||||
|
set join_buffer_size=1;
|
||||||
|
# save minimum
|
||||||
|
set @save_join_buffer_size=@@join_buffer_size;
|
||||||
|
# set minimum
|
||||||
|
set join_buffer_size=@save_join_buffer_size;
|
||||||
|
|
||||||
# This is at the very after the versioned tests, since it involves doing
|
# This is at the very after the versioned tests, since it involves doing
|
||||||
# cleanup
|
# cleanup
|
||||||
#
|
#
|
||||||
@ -816,6 +829,8 @@ set global slow_launch_time =@my_slow_launch_time;
|
|||||||
set global storage_engine =@my_storage_engine;
|
set global storage_engine =@my_storage_engine;
|
||||||
set global thread_cache_size =@my_thread_cache_size;
|
set global thread_cache_size =@my_thread_cache_size;
|
||||||
set global max_allowed_packet =@my_max_allowed_packet;
|
set global max_allowed_packet =@my_max_allowed_packet;
|
||||||
|
set global join_buffer_size =@my_join_buffer_size;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#28580 Repeatation of status variables
|
# Bug#28580 Repeatation of status variables
|
||||||
#
|
#
|
||||||
|
@ -152,7 +152,7 @@ static char *remove_end_comment(char *ptr);
|
|||||||
|
|
||||||
int my_search_option_files(const char *conf_file, int *argc, char ***argv,
|
int my_search_option_files(const char *conf_file, int *argc, char ***argv,
|
||||||
uint *args_used, Process_option_func func,
|
uint *args_used, Process_option_func func,
|
||||||
void *func_ctx)
|
void *func_ctx, const char **default_directories)
|
||||||
{
|
{
|
||||||
const char **dirs, *forced_default_file, *forced_extra_defaults;
|
const char **dirs, *forced_default_file, *forced_extra_defaults;
|
||||||
int error= 0;
|
int error= 0;
|
||||||
@ -359,9 +359,8 @@ int get_defaults_options(int argc, char **argv,
|
|||||||
return org_argc - argc;
|
return org_argc - argc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Read options from configurations files
|
Wrapper around my_load_defaults() for interface compatibility.
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
load_defaults()
|
load_defaults()
|
||||||
@ -372,6 +371,35 @@ int get_defaults_options(int argc, char **argv,
|
|||||||
argc Pointer to argc of original program
|
argc Pointer to argc of original program
|
||||||
argv Pointer to argv of original program
|
argv Pointer to argv of original program
|
||||||
|
|
||||||
|
NOTES
|
||||||
|
|
||||||
|
This function is NOT thread-safe as it uses a global pointer internally.
|
||||||
|
See also notes for my_load_defaults().
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
0 ok
|
||||||
|
1 The given conf_file didn't exists
|
||||||
|
*/
|
||||||
|
int load_defaults(const char *conf_file, const char **groups,
|
||||||
|
int *argc, char ***argv)
|
||||||
|
{
|
||||||
|
return my_load_defaults(conf_file, groups, argc, argv, &default_directories);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Read options from configurations files
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
my_load_defaults()
|
||||||
|
conf_file Basename for configuration file to search for.
|
||||||
|
If this is a path, then only this file is read.
|
||||||
|
groups Which [group] entrys to read.
|
||||||
|
Points to an null terminated array of pointers
|
||||||
|
argc Pointer to argc of original program
|
||||||
|
argv Pointer to argv of original program
|
||||||
|
default_directories Pointer to a location where a pointer to the list
|
||||||
|
of default directories will be stored
|
||||||
|
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
|
|
||||||
Read options from configuration files and put them BEFORE the arguments
|
Read options from configuration files and put them BEFORE the arguments
|
||||||
@ -386,13 +414,18 @@ int get_defaults_options(int argc, char **argv,
|
|||||||
that was put in *argv
|
that was put in *argv
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
0 ok
|
- If successful, 0 is returned. If 'default_directories' is not NULL,
|
||||||
1 The given conf_file didn't exists
|
a pointer to the array of default directory paths is stored to a location
|
||||||
|
it points to. That stored value must be passed to my_search_option_files()
|
||||||
|
later.
|
||||||
|
|
||||||
|
- 1 is returned if the given conf_file didn't exist. In this case, the
|
||||||
|
value pointed to by default_directories is undefined.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
int load_defaults(const char *conf_file, const char **groups,
|
int my_load_defaults(const char *conf_file, const char **groups,
|
||||||
int *argc, char ***argv)
|
int *argc, char ***argv, const char ***default_directories)
|
||||||
{
|
{
|
||||||
DYNAMIC_ARRAY args;
|
DYNAMIC_ARRAY args;
|
||||||
TYPELIB group;
|
TYPELIB group;
|
||||||
@ -402,10 +435,11 @@ int load_defaults(const char *conf_file, const char **groups,
|
|||||||
MEM_ROOT alloc;
|
MEM_ROOT alloc;
|
||||||
char *ptr,**res;
|
char *ptr,**res;
|
||||||
struct handle_option_ctx ctx;
|
struct handle_option_ctx ctx;
|
||||||
|
const char **dirs;
|
||||||
DBUG_ENTER("load_defaults");
|
DBUG_ENTER("load_defaults");
|
||||||
|
|
||||||
init_alloc_root(&alloc,512,0);
|
init_alloc_root(&alloc,512,0);
|
||||||
if ((default_directories= init_default_directories(&alloc)) == NULL)
|
if ((dirs= init_default_directories(&alloc)) == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
/*
|
/*
|
||||||
Check if the user doesn't want any default option processing
|
Check if the user doesn't want any default option processing
|
||||||
@ -426,6 +460,8 @@ int load_defaults(const char *conf_file, const char **groups,
|
|||||||
(*argc)--;
|
(*argc)--;
|
||||||
*argv=res;
|
*argv=res;
|
||||||
*(MEM_ROOT*) ptr= alloc; /* Save alloc root for free */
|
*(MEM_ROOT*) ptr= alloc; /* Save alloc root for free */
|
||||||
|
if (default_directories)
|
||||||
|
*default_directories= dirs;
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -444,7 +480,8 @@ int load_defaults(const char *conf_file, const char **groups,
|
|||||||
ctx.group= &group;
|
ctx.group= &group;
|
||||||
|
|
||||||
error= my_search_option_files(conf_file, argc, argv, &args_used,
|
error= my_search_option_files(conf_file, argc, argv, &args_used,
|
||||||
handle_default_option, (void *) &ctx);
|
handle_default_option, (void *) &ctx,
|
||||||
|
dirs);
|
||||||
/*
|
/*
|
||||||
Here error contains <> 0 only if we have a fully specified conf_file
|
Here error contains <> 0 only if we have a fully specified conf_file
|
||||||
or a forced default file
|
or a forced default file
|
||||||
@ -490,6 +527,10 @@ int load_defaults(const char *conf_file, const char **groups,
|
|||||||
puts("");
|
puts("");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (error == 0 && default_directories)
|
||||||
|
*default_directories= dirs;
|
||||||
|
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
@ -895,15 +936,11 @@ void my_print_default_files(const char *conf_file)
|
|||||||
fputs(conf_file,stdout);
|
fputs(conf_file,stdout);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*
|
const char **dirs;
|
||||||
If default_directories is already initialized, use it. Otherwise,
|
|
||||||
use a private MEM_ROOT.
|
|
||||||
*/
|
|
||||||
const char **dirs = default_directories;
|
|
||||||
MEM_ROOT alloc;
|
MEM_ROOT alloc;
|
||||||
init_alloc_root(&alloc,512,0);
|
init_alloc_root(&alloc,512,0);
|
||||||
|
|
||||||
if (!dirs && (dirs= init_default_directories(&alloc)) == NULL)
|
if ((dirs= init_default_directories(&alloc)) == NULL)
|
||||||
{
|
{
|
||||||
fputs("Internal error initializing default directories list", stdout);
|
fputs("Internal error initializing default directories list", stdout);
|
||||||
}
|
}
|
||||||
|
@ -846,7 +846,8 @@ longlong getopt_ll_limit_value(longlong num, const struct my_option *optp,
|
|||||||
if (num < optp->min_value)
|
if (num < optp->min_value)
|
||||||
{
|
{
|
||||||
num= optp->min_value;
|
num= optp->min_value;
|
||||||
adjusted= TRUE;
|
if (old < optp->min_value)
|
||||||
|
adjusted= TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fix)
|
if (fix)
|
||||||
@ -917,7 +918,8 @@ ulonglong getopt_ull_limit_value(ulonglong num, const struct my_option *optp,
|
|||||||
if (num < (ulonglong) optp->min_value)
|
if (num < (ulonglong) optp->min_value)
|
||||||
{
|
{
|
||||||
num= (ulonglong) optp->min_value;
|
num= (ulonglong) optp->min_value;
|
||||||
adjusted= TRUE;
|
if (old < (ulonglong) optp->min_value)
|
||||||
|
adjusted= TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fix)
|
if (fix)
|
||||||
|
@ -536,7 +536,8 @@ int Instance_map::load()
|
|||||||
*/
|
*/
|
||||||
if (my_search_option_files(Options::Main::config_file, &argc,
|
if (my_search_option_files(Options::Main::config_file, &argc,
|
||||||
(char ***) &argv, &args_used,
|
(char ***) &argv, &args_used,
|
||||||
process_option, (void*) this))
|
process_option, (void*) this,
|
||||||
|
Options::default_directories))
|
||||||
log_info("Falling back to compiled-in defaults.");
|
log_info("Falling back to compiled-in defaults.");
|
||||||
|
|
||||||
return complete_initialization();
|
return complete_initialization();
|
||||||
|
@ -86,6 +86,7 @@ const char *Options::Main::bind_address= NULL; /* No default value */
|
|||||||
uint Options::Main::monitoring_interval= DEFAULT_MONITORING_INTERVAL;
|
uint Options::Main::monitoring_interval= DEFAULT_MONITORING_INTERVAL;
|
||||||
uint Options::Main::port_number= DEFAULT_PORT;
|
uint Options::Main::port_number= DEFAULT_PORT;
|
||||||
my_bool Options::Main::mysqld_safe_compatible= FALSE;
|
my_bool Options::Main::mysqld_safe_compatible= FALSE;
|
||||||
|
const char **Options::default_directories= NULL;
|
||||||
|
|
||||||
/* Options::User_management */
|
/* Options::User_management */
|
||||||
|
|
||||||
@ -439,7 +440,8 @@ int Options::load(int argc, char **argv)
|
|||||||
log_info("Loading config file '%s'...",
|
log_info("Loading config file '%s'...",
|
||||||
(const char *) Main::config_file);
|
(const char *) Main::config_file);
|
||||||
|
|
||||||
load_defaults(Main::config_file, default_groups, &argc, &saved_argv);
|
my_load_defaults(Main::config_file, default_groups, &argc,
|
||||||
|
&saved_argv, &default_directories);
|
||||||
|
|
||||||
if ((handle_options(&argc, &saved_argv, my_long_options, get_one_option)))
|
if ((handle_options(&argc, &saved_argv, my_long_options, get_one_option)))
|
||||||
return ERR_INVALID_USAGE;
|
return ERR_INVALID_USAGE;
|
||||||
|
@ -91,6 +91,9 @@ struct Options
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/* Array of paths to be passed to my_search_option_files() later */
|
||||||
|
static const char **default_directories;
|
||||||
|
|
||||||
static int load(int argc, char **argv);
|
static int load(int argc, char **argv);
|
||||||
static void cleanup();
|
static void cleanup();
|
||||||
|
|
||||||
|
@ -1021,7 +1021,7 @@ void mysql_read_default_options(struct st_mysql_options *options,
|
|||||||
argc=1; argv=argv_buff; argv_buff[0]= (char*) "client";
|
argc=1; argv=argv_buff; argv_buff[0]= (char*) "client";
|
||||||
groups[0]= (char*) "client"; groups[1]= (char*) group; groups[2]=0;
|
groups[0]= (char*) "client"; groups[1]= (char*) group; groups[2]=0;
|
||||||
|
|
||||||
load_defaults(filename, groups, &argc, &argv);
|
my_load_defaults(filename, groups, &argc, &argv, NULL);
|
||||||
if (argc != 1) /* If some default option */
|
if (argc != 1) /* If some default option */
|
||||||
{
|
{
|
||||||
char **option=argv;
|
char **option=argv;
|
||||||
|
@ -2047,6 +2047,9 @@ extern SHOW_COMP_OPTION have_geometry, have_rtree_keys;
|
|||||||
extern SHOW_COMP_OPTION have_crypt;
|
extern SHOW_COMP_OPTION have_crypt;
|
||||||
extern SHOW_COMP_OPTION have_compress;
|
extern SHOW_COMP_OPTION have_compress;
|
||||||
|
|
||||||
|
extern int orig_argc;
|
||||||
|
extern char **orig_argv;
|
||||||
|
extern const char *load_default_groups[];
|
||||||
|
|
||||||
#ifndef __WIN__
|
#ifndef __WIN__
|
||||||
extern pthread_t signal_thread;
|
extern pthread_t signal_thread;
|
||||||
|
@ -648,6 +648,9 @@ static int defaults_argc;
|
|||||||
static char **defaults_argv;
|
static char **defaults_argv;
|
||||||
static char *opt_bin_logname;
|
static char *opt_bin_logname;
|
||||||
|
|
||||||
|
int orig_argc;
|
||||||
|
char **orig_argv;
|
||||||
|
|
||||||
static my_socket unix_sock,ip_sock;
|
static my_socket unix_sock,ip_sock;
|
||||||
struct rand_struct sql_rand; ///< used by sql_class.cc:THD::THD()
|
struct rand_struct sql_rand; ///< used by sql_class.cc:THD::THD()
|
||||||
|
|
||||||
@ -2922,18 +2925,16 @@ pthread_handler_t handle_shutdown(void *arg)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(EMBEDDED_LIBRARY)
|
const char *load_default_groups[]= {
|
||||||
static const char *load_default_groups[]= {
|
|
||||||
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
|
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
|
||||||
"mysql_cluster",
|
"mysql_cluster",
|
||||||
#endif
|
#endif
|
||||||
"mysqld","server", MYSQL_BASE_VERSION, 0, 0};
|
"mysqld","server", MYSQL_BASE_VERSION, 0, 0};
|
||||||
|
|
||||||
#if defined(__WIN__)
|
#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY)
|
||||||
static const int load_default_groups_sz=
|
static const int load_default_groups_sz=
|
||||||
sizeof(load_default_groups)/sizeof(load_default_groups[0]);
|
sizeof(load_default_groups)/sizeof(load_default_groups[0]);
|
||||||
#endif
|
#endif
|
||||||
#endif /*!EMBEDDED_LIBRARY*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3221,6 +3222,8 @@ static int init_common_variables(const char *conf_file_name, int argc,
|
|||||||
SQLCOM_END + 8);
|
SQLCOM_END + 8);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
orig_argc=argc;
|
||||||
|
orig_argv=argv;
|
||||||
load_defaults(conf_file_name, groups, &argc, &argv);
|
load_defaults(conf_file_name, groups, &argc, &argv);
|
||||||
defaults_argv=argv;
|
defaults_argv=argv;
|
||||||
defaults_argc=argc;
|
defaults_argc=argc;
|
||||||
@ -3886,6 +3889,7 @@ server.");
|
|||||||
if ((ho_error= handle_options(&defaults_argc, &tmp_argv, no_opts,
|
if ((ho_error= handle_options(&defaults_argc, &tmp_argv, no_opts,
|
||||||
mysqld_get_one_option)))
|
mysqld_get_one_option)))
|
||||||
unireg_abort(ho_error);
|
unireg_abort(ho_error);
|
||||||
|
my_getopt_skip_unknown= TRUE;
|
||||||
|
|
||||||
if (defaults_argc)
|
if (defaults_argc)
|
||||||
{
|
{
|
||||||
|
@ -1139,8 +1139,9 @@ int plugin_init(int *argc, char **argv, int flags)
|
|||||||
for (plugin= *builtins; plugin->info; plugin++)
|
for (plugin= *builtins; plugin->info; plugin++)
|
||||||
{
|
{
|
||||||
if (opt_ignore_builtin_innodb &&
|
if (opt_ignore_builtin_innodb &&
|
||||||
!my_strcasecmp(&my_charset_latin1, plugin->name, "InnoDB"))
|
!my_strnncoll(&my_charset_latin1, (const uchar*) plugin->name,
|
||||||
continue;
|
6, (const uchar*) "InnoDB", 6))
|
||||||
|
continue;
|
||||||
/* by default, ndbcluster and federated are disabled */
|
/* by default, ndbcluster and federated are disabled */
|
||||||
def_enabled=
|
def_enabled=
|
||||||
my_strcasecmp(&my_charset_latin1, plugin->name, "NDBCLUSTER") != 0 &&
|
my_strcasecmp(&my_charset_latin1, plugin->name, "NDBCLUSTER") != 0 &&
|
||||||
@ -1633,8 +1634,8 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
|
|||||||
{
|
{
|
||||||
TABLE_LIST tables;
|
TABLE_LIST tables;
|
||||||
TABLE *table;
|
TABLE *table;
|
||||||
int error, argc;
|
int error, argc=orig_argc;
|
||||||
char *argv[2];
|
char **argv=orig_argv;
|
||||||
struct st_plugin_int *tmp;
|
struct st_plugin_int *tmp;
|
||||||
DBUG_ENTER("mysql_install_plugin");
|
DBUG_ENTER("mysql_install_plugin");
|
||||||
|
|
||||||
@ -1650,21 +1651,31 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
|
|||||||
|
|
||||||
pthread_mutex_lock(&LOCK_plugin);
|
pthread_mutex_lock(&LOCK_plugin);
|
||||||
rw_wrlock(&LOCK_system_variables_hash);
|
rw_wrlock(&LOCK_system_variables_hash);
|
||||||
/* handle_options() assumes arg0 (program name) always exists */
|
|
||||||
argv[0]= const_cast<char*>(""); // without a cast gcc emits a warning
|
my_load_defaults(MYSQL_CONFIG_NAME, load_default_groups, &argc, &argv, NULL);
|
||||||
argv[1]= 0;
|
|
||||||
argc= 1;
|
|
||||||
error= plugin_add(thd->mem_root, name, dl, &argc, argv, REPORT_TO_USER);
|
error= plugin_add(thd->mem_root, name, dl, &argc, argv, REPORT_TO_USER);
|
||||||
|
if (argv)
|
||||||
|
free_defaults(argv);
|
||||||
rw_unlock(&LOCK_system_variables_hash);
|
rw_unlock(&LOCK_system_variables_hash);
|
||||||
|
|
||||||
if (error || !(tmp= plugin_find_internal(name, MYSQL_ANY_PLUGIN)))
|
if (error || !(tmp= plugin_find_internal(name, MYSQL_ANY_PLUGIN)))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (plugin_initialize(tmp))
|
if (tmp->state == PLUGIN_IS_DISABLED)
|
||||||
{
|
{
|
||||||
my_error(ER_CANT_INITIALIZE_UDF, MYF(0), name->str,
|
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
"Plugin initialization function failed.");
|
ER_CANT_INITIALIZE_UDF, ER(ER_CANT_INITIALIZE_UDF),
|
||||||
goto deinit;
|
name->str, "Plugin is disabled");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DBUG_ASSERT(tmp->state == PLUGIN_IS_UNINITIALIZED);
|
||||||
|
if (plugin_initialize(tmp))
|
||||||
|
{
|
||||||
|
my_error(ER_CANT_INITIALIZE_UDF, MYF(0), name->str,
|
||||||
|
"Plugin initialization function failed.");
|
||||||
|
goto deinit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7625,7 +7625,7 @@ static COND *build_equal_items_for_cond(THD *thd, COND *cond,
|
|||||||
if (and_level)
|
if (and_level)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Retrieve all conjucts of this level detecting the equality
|
Retrieve all conjuncts of this level detecting the equality
|
||||||
that are subject to substitution by multiple equality items and
|
that are subject to substitution by multiple equality items and
|
||||||
removing each such predicate from the conjunction after having
|
removing each such predicate from the conjunction after having
|
||||||
found/created a multiple equality whose inference the predicate is.
|
found/created a multiple equality whose inference the predicate is.
|
||||||
@ -7641,6 +7641,15 @@ static COND *build_equal_items_for_cond(THD *thd, COND *cond,
|
|||||||
li.remove();
|
li.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check if we eliminated all the predicates of the level, e.g.
|
||||||
|
(a=a AND b=b AND a=a).
|
||||||
|
*/
|
||||||
|
if (!args->elements &&
|
||||||
|
!cond_equal.current_level.elements &&
|
||||||
|
!eq_list.elements)
|
||||||
|
return new Item_int((longlong) 1, 1);
|
||||||
|
|
||||||
List_iterator_fast<Item_equal> it(cond_equal.current_level);
|
List_iterator_fast<Item_equal> it(cond_equal.current_level);
|
||||||
while ((item_equal= it++))
|
while ((item_equal= it++))
|
||||||
{
|
{
|
||||||
|
@ -1704,7 +1704,8 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
|
|||||||
field_list.push_back(field=new Item_empty_string("db",NAME_CHAR_LEN));
|
field_list.push_back(field=new Item_empty_string("db",NAME_CHAR_LEN));
|
||||||
field->maybe_null=1;
|
field->maybe_null=1;
|
||||||
field_list.push_back(new Item_empty_string("Command",16));
|
field_list.push_back(new Item_empty_string("Command",16));
|
||||||
field_list.push_back(new Item_return_int("Time",7, MYSQL_TYPE_LONG));
|
field_list.push_back(field= new Item_return_int("Time",7, MYSQL_TYPE_LONG));
|
||||||
|
field->unsigned_flag= 0;
|
||||||
field_list.push_back(field=new Item_empty_string("State",30));
|
field_list.push_back(field=new Item_empty_string("State",30));
|
||||||
field->maybe_null=1;
|
field->maybe_null=1;
|
||||||
field_list.push_back(field=new Item_empty_string("Info",max_query_length));
|
field_list.push_back(field=new Item_empty_string("Info",max_query_length));
|
||||||
@ -1797,7 +1798,7 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
|
|||||||
else
|
else
|
||||||
protocol->store(command_name[thd_info->command].str, system_charset_info);
|
protocol->store(command_name[thd_info->command].str, system_charset_info);
|
||||||
if (thd_info->start_time)
|
if (thd_info->start_time)
|
||||||
protocol->store((uint32) (now - thd_info->start_time));
|
protocol->store_long ((longlong) (now - thd_info->start_time));
|
||||||
else
|
else
|
||||||
protocol->store_null();
|
protocol->store_null();
|
||||||
protocol->store(thd_info->state_info, system_charset_info);
|
protocol->store(thd_info->state_info, system_charset_info);
|
||||||
@ -1872,8 +1873,8 @@ int fill_schema_processlist(THD* thd, TABLE_LIST* tables, COND* cond)
|
|||||||
table->field[4]->store(command_name[tmp->command].str,
|
table->field[4]->store(command_name[tmp->command].str,
|
||||||
command_name[tmp->command].length, cs);
|
command_name[tmp->command].length, cs);
|
||||||
/* MYSQL_TIME */
|
/* MYSQL_TIME */
|
||||||
table->field[5]->store((uint32)(tmp->start_time ?
|
table->field[5]->store((longlong)(tmp->start_time ?
|
||||||
now - tmp->start_time : 0), TRUE);
|
now - tmp->start_time : 0), FALSE);
|
||||||
/* STATE */
|
/* STATE */
|
||||||
#ifndef EMBEDDED_LIBRARY
|
#ifndef EMBEDDED_LIBRARY
|
||||||
val= (char*) (tmp->locked ? "Locked" :
|
val= (char*) (tmp->locked ? "Locked" :
|
||||||
@ -6558,7 +6559,7 @@ ST_FIELD_INFO processlist_fields_info[]=
|
|||||||
SKIP_OPEN_TABLE},
|
SKIP_OPEN_TABLE},
|
||||||
{"DB", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, "Db", SKIP_OPEN_TABLE},
|
{"DB", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, "Db", SKIP_OPEN_TABLE},
|
||||||
{"COMMAND", 16, MYSQL_TYPE_STRING, 0, 0, "Command", SKIP_OPEN_TABLE},
|
{"COMMAND", 16, MYSQL_TYPE_STRING, 0, 0, "Command", SKIP_OPEN_TABLE},
|
||||||
{"TIME", 7, MYSQL_TYPE_LONGLONG, 0, 0, "Time", SKIP_OPEN_TABLE},
|
{"TIME", 7, MYSQL_TYPE_LONG, 0, 0, "Time", SKIP_OPEN_TABLE},
|
||||||
{"STATE", 64, MYSQL_TYPE_STRING, 0, 1, "State", SKIP_OPEN_TABLE},
|
{"STATE", 64, MYSQL_TYPE_STRING, 0, 1, "State", SKIP_OPEN_TABLE},
|
||||||
{"INFO", PROCESS_LIST_INFO_WIDTH, MYSQL_TYPE_STRING, 0, 1, "Info",
|
{"INFO", PROCESS_LIST_INFO_WIDTH, MYSQL_TYPE_STRING, 0, 1, "Info",
|
||||||
SKIP_OPEN_TABLE},
|
SKIP_OPEN_TABLE},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user