mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge bk-internal:/home/bk/mysql-5.0
into serg.mylan:/usr/home/serg/Abk/mysql-5.0 BitKeeper/etc/ignore: auto-union configure.in: Auto merged dbug/dbug.c: Auto merged include/my_dbug.h: Auto merged include/my_sys.h: Auto merged sql/filesort.cc: Auto merged sql/ha_isam.cc: Auto merged sql/ha_isammrg.cc: Auto merged sql/ha_myisam.cc: Auto merged sql/ha_myisammrg.cc: Auto merged sql/sql_select.cc: Auto merged
This commit is contained in:
@ -37,7 +37,7 @@ test_DATA = std_data/client-key.pem std_data/client-cert.pem std_data/cacert.pem
|
||||
CLEANFILES = $(test_SCRIPTS) $(test_DATA)
|
||||
|
||||
INCLUDES = -I$(srcdir)/../include -I../include -I..
|
||||
bin_PROGRAMS = mysql_test_run_new
|
||||
EXTRA_PROGRAMS = mysql_test_run_new
|
||||
noinst_HEADERS = my_manage.h
|
||||
mysql_test_run_new_SOURCES= mysql_test_run_new.c my_manage.c
|
||||
|
||||
@ -48,6 +48,7 @@ dist-hook:
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.test $(srcdir)/t/*.opt $(srcdir)/t/*.sh $(srcdir)/t/*.slave-mi $(distdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/include/*.inc $(distdir)/include
|
||||
$(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(distdir)/std_data
|
||||
@ -70,6 +71,7 @@ install-data-local:
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.*001 $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data
|
||||
|
||||
std_data/%.pem:
|
||||
|
File diff suppressed because one or more lines are too long
@ -30,7 +30,8 @@
|
||||
#ifndef __WIN__
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#include <fnmatch.h>
|
||||
#include <signal.h>
|
||||
#include <fnmatch.h> /* FIXME HAVE_FNMATCH_H or something */
|
||||
#else
|
||||
#include <direct.h>
|
||||
#include <stdlib.h>
|
||||
@ -100,7 +101,7 @@ void init_args(arg_list_t *al)
|
||||
void add_arg(arg_list_t *al, const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char temp[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
|
||||
ASSERT(al != NULL);
|
||||
|
||||
@ -230,10 +231,10 @@ int wait_for_server_start(char *bin_dir __attribute__((unused)),
|
||||
{
|
||||
arg_list_t al;
|
||||
int err= 0, i;
|
||||
char trash[PATH_MAX];
|
||||
char trash[FN_REFLEN];
|
||||
|
||||
/* mysqladmin file */
|
||||
snprintf(trash, PATH_MAX, "%s/trash.out",tmp_dir);
|
||||
snprintf(trash, FN_REFLEN, "%s/trash.out",tmp_dir);
|
||||
|
||||
/* args */
|
||||
init_args(&al);
|
||||
@ -490,9 +491,9 @@ int stop_server(char *bin_dir __attribute__((unused)), char *mysqladmin_file,
|
||||
{
|
||||
arg_list_t al;
|
||||
int err= 0;
|
||||
char trash[PATH_MAX];
|
||||
char trash[FN_REFLEN];
|
||||
|
||||
snprintf(trash, PATH_MAX, "%s/trash.out",tmp_dir);
|
||||
snprintf(trash, FN_REFLEN, "%s/trash.out",tmp_dir);
|
||||
|
||||
/* args */
|
||||
init_args(&al);
|
||||
@ -548,7 +549,7 @@ int stop_server(char *bin_dir __attribute__((unused)), char *mysqladmin_file,
|
||||
#ifndef __WIN__
|
||||
pid_t get_server_pid(char *pid_file)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
char buf[FN_REFLEN];
|
||||
int fd, err;
|
||||
char *p;
|
||||
pid_t id= 0;
|
||||
@ -556,7 +557,7 @@ pid_t get_server_pid(char *pid_file)
|
||||
/* discover id */
|
||||
fd= open(pid_file, O_RDONLY);
|
||||
|
||||
err= read(fd, buf, PATH_MAX);
|
||||
err= read(fd, buf, FN_REFLEN);
|
||||
|
||||
close(fd);
|
||||
|
||||
@ -619,7 +620,7 @@ void del_tree(char *dir)
|
||||
#ifndef __WIN__
|
||||
DIR *parent= opendir(dir);
|
||||
struct dirent *entry;
|
||||
char temp[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
|
||||
if (parent == NULL)
|
||||
{
|
||||
@ -629,22 +630,36 @@ void del_tree(char *dir)
|
||||
while ((entry= readdir(parent)) != NULL)
|
||||
{
|
||||
/* create long name */
|
||||
snprintf(temp, PATH_MAX, "%s/%s", dir, entry->d_name);
|
||||
snprintf(temp, FN_REFLEN, "%s/%s", dir, entry->d_name);
|
||||
|
||||
if (entry->d_name[0] == '.')
|
||||
{
|
||||
/* Skip */
|
||||
}
|
||||
else
|
||||
if (S_ISDIR(entry->d_type))
|
||||
{
|
||||
/* delete subdirectory */
|
||||
del_tree(temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* remove file */
|
||||
remove(temp);
|
||||
/* FIXME missing test in acinclude.m4 */
|
||||
#ifndef STRUCT_DIRENT_HAS_D_TYPE
|
||||
struct stat st;
|
||||
|
||||
if (lstat(entry->d_name, &st) == -1)
|
||||
{
|
||||
/* FIXME error */
|
||||
return;
|
||||
}
|
||||
if (S_ISDIR(st.st_mode))
|
||||
#else
|
||||
if (S_ISDIR(entry->d_type))
|
||||
#endif
|
||||
{
|
||||
/* delete subdirectory */
|
||||
del_tree(temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* remove file */
|
||||
remove(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* remove directory */
|
||||
@ -652,10 +667,10 @@ void del_tree(char *dir)
|
||||
#else
|
||||
struct _finddata_t parent;
|
||||
intptr_t handle;
|
||||
char temp[PATH_MAX];
|
||||
char mask[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
char mask[FN_REFLEN];
|
||||
|
||||
snprintf(mask,MAX_PATH,"%s/*.*",dir);
|
||||
snprintf(mask,FN_REFLEN,"%s/*.*",dir);
|
||||
|
||||
if ((handle=_findfirst(mask,&parent)) == -1L)
|
||||
{
|
||||
@ -665,7 +680,7 @@ void del_tree(char *dir)
|
||||
do
|
||||
{
|
||||
/* create long name */
|
||||
snprintf(temp, PATH_MAX, "%s/%s", dir, parent.name);
|
||||
snprintf(temp, FN_REFLEN, "%s/%s", dir, parent.name);
|
||||
if (parent.name[0] == '.')
|
||||
{
|
||||
/* Skip */
|
||||
@ -700,11 +715,11 @@ int removef(const char *format, ...)
|
||||
{
|
||||
#ifdef __NETWARE__
|
||||
va_list ap;
|
||||
char path[PATH_MAX];
|
||||
char path[FN_REFLEN];
|
||||
|
||||
va_start(ap, format);
|
||||
|
||||
vsnprintf(path, PATH_MAX, format, ap);
|
||||
vsnprintf(path, FN_REFLEN, format, ap);
|
||||
|
||||
va_end(ap);
|
||||
return remove(path);
|
||||
@ -712,15 +727,15 @@ int removef(const char *format, ...)
|
||||
#eldef __WIN__
|
||||
{
|
||||
va_list ap;
|
||||
char path[PATH_MAX];
|
||||
char path[FN_REFLEN];
|
||||
struct _finddata_t parent;
|
||||
intptr_t handle;
|
||||
char temp[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
char *p;
|
||||
|
||||
va_start(ap, format);
|
||||
|
||||
vsnprintf(path, PATH_MAX, format, ap);
|
||||
vsnprintf(path, FN_REFLEN, format, ap);
|
||||
|
||||
va_end(ap);
|
||||
|
||||
@ -739,7 +754,7 @@ int removef(const char *format, ...)
|
||||
{
|
||||
if (! (parent.attrib & _A_SUBDIR))
|
||||
{
|
||||
snprintf(temp, PATH_MAX, "%s/%s", path, parent.name);
|
||||
snprintf(temp, FN_REFLEN, "%s/%s", path, parent.name);
|
||||
remove(temp);
|
||||
}
|
||||
}while (_findnext(handle,&parent) == 0);
|
||||
@ -749,14 +764,14 @@ int removef(const char *format, ...)
|
||||
#else
|
||||
DIR *parent;
|
||||
struct dirent *entry;
|
||||
char temp[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
va_list ap;
|
||||
char path[PATH_MAX];
|
||||
char path[FN_REFLEN];
|
||||
char *p;
|
||||
/* Get path with mask */
|
||||
va_start(ap, format);
|
||||
|
||||
vsnprintf(path, PATH_MAX, format, ap);
|
||||
vsnprintf(path, FN_REFLEN, format, ap);
|
||||
|
||||
va_end(ap);
|
||||
|
||||
@ -775,10 +790,21 @@ int removef(const char *format, ...)
|
||||
while ((entry= readdir(parent)) != NULL)
|
||||
{
|
||||
/* entry is not directory and entry matches with mask */
|
||||
#ifndef STRUCT_DIRENT_HAS_D_TYPE
|
||||
struct stat st;
|
||||
|
||||
if (lstat(entry->d_name, &st) == -1)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!S_ISDIR(st.st_mode) && !fnmatch(p, entry->d_name,0))
|
||||
#else
|
||||
if (!S_ISDIR(entry->d_type) && !fnmatch(p, entry->d_name,0))
|
||||
#endif
|
||||
{
|
||||
/* create long name */
|
||||
snprintf(temp, PATH_MAX, "%s/%s", path, entry->d_name);
|
||||
snprintf(temp, FN_REFLEN, "%s/%s", path, entry->d_name);
|
||||
/* Delete only files */
|
||||
remove(temp);
|
||||
}
|
||||
@ -795,7 +821,7 @@ int removef(const char *format, ...)
|
||||
|
||||
void get_basedir(char *argv0, char *basedir)
|
||||
{
|
||||
char temp[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
char *p;
|
||||
int position;
|
||||
|
||||
|
@ -52,8 +52,6 @@ int my_vsnprintf_(char *to, size_t n, const char* value, ...);
|
||||
#define TRY_MAX 5
|
||||
|
||||
#ifdef __WIN__
|
||||
#define PATH_MAX _MAX_PATH
|
||||
#define NAME_MAX _MAX_FNAME
|
||||
#define kill(A,B) TerminateProcess((HANDLE)A,0)
|
||||
#define NOT_NEED_PID 0
|
||||
#define MASTER_PID 1
|
||||
|
@ -227,7 +227,7 @@ DO_CLIENT_GDB=""
|
||||
SLEEP_TIME_AFTER_RESTART=1
|
||||
SLEEP_TIME_FOR_DELETE=10
|
||||
SLEEP_TIME_FOR_FIRST_MASTER=400 # Enough time to create innodb tables
|
||||
SLEEP_TIME_FOR_SECOND_MASTER=30
|
||||
SLEEP_TIME_FOR_SECOND_MASTER=400
|
||||
SLEEP_TIME_FOR_FIRST_SLAVE=400
|
||||
SLEEP_TIME_FOR_SECOND_SLAVE=30
|
||||
CHARACTER_SET=latin1
|
||||
@ -457,6 +457,9 @@ SMALL_SERVER="--key_buffer_size=1M --sort_buffer=256K --max_heap_table_size=1M"
|
||||
|
||||
export MASTER_MYPORT MASTER_MYPORT1 SLAVE_MYPORT MYSQL_TCP_PORT MASTER_MYSOCK MASTER_MYSOCK1
|
||||
|
||||
NDBCLUSTER_BASE_PORT=`expr $NDBCLUSTER_PORT + 2`
|
||||
NDBCLUSTER_OPTS="--port=$NDBCLUSTER_PORT --port-base=$NDBCLUSTER_BASE_PORT --data-dir=$MYSQL_TEST_DIR/var"
|
||||
|
||||
if [ x$SOURCE_DIST = x1 ] ; then
|
||||
MY_BASEDIR=$MYSQL_TEST_DIR
|
||||
else
|
||||
@ -941,11 +944,11 @@ start_ndbcluster()
|
||||
echo "Starting ndbcluster"
|
||||
if [ "$DO_BENCH" = 1 ]
|
||||
then
|
||||
NDBCLUSTER_OPTS=""
|
||||
NDBCLUSTER_EXTRA_OPTS=""
|
||||
else
|
||||
NDBCLUSTER_OPTS="--small"
|
||||
NDBCLUSTER_EXTRA_OPTS="--small"
|
||||
fi
|
||||
./ndb/ndbcluster --port-base=$NDBCLUSTER_PORT $NDBCLUSTER_OPTS --diskless --initial --data-dir=$MYSQL_TEST_DIR/var || exit 1
|
||||
./ndb/ndbcluster $NDBCLUSTER_OPTS $NDBCLUSTER_EXTRA_OPTS --diskless --initial || exit 1
|
||||
NDB_CONNECTSTRING="host=localhost:$NDBCLUSTER_PORT"
|
||||
else
|
||||
NDB_CONNECTSTRING="$USE_RUNNING_NDBCLUSTER"
|
||||
@ -963,7 +966,7 @@ stop_ndbcluster()
|
||||
if [ -z "$USE_RUNNING_NDBCLUSTER" ]
|
||||
then
|
||||
# Kill any running ndbcluster stuff
|
||||
./ndb/ndbcluster --data-dir=$MYSQL_TEST_DIR/var --port-base=$NDBCLUSTER_PORT --stop
|
||||
./ndb/ndbcluster $NDBCLUSTER_OPTS --stop
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
@ -73,25 +73,25 @@ const char *TEST_IGNORE= "[ignore]";
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef __NETWARE__
|
||||
static char base_dir[PATH_MAX]= "sys:/mysql";
|
||||
static char base_dir[FN_REFLEN]= "sys:/mysql";
|
||||
#else
|
||||
static char base_dir[PATH_MAX]= "..";
|
||||
static char base_dir[FN_REFLEN]= "..";
|
||||
#endif
|
||||
static char db[PATH_MAX]= "test";
|
||||
static char user[PATH_MAX]= "root";
|
||||
static char password[PATH_MAX]= "";
|
||||
static char db[FN_LEN]= "test";
|
||||
static char user[FN_LEN]= "root";
|
||||
static char password[FN_LEN]= "";
|
||||
|
||||
int master_port= 9306;
|
||||
int slave_port= 9307;
|
||||
|
||||
#if !defined(__NETWARE__) && !defined(__WIN__)
|
||||
static char master_socket[PATH_MAX]= "./var/tmp/master.sock";
|
||||
static char slave_socket[PATH_MAX]= "./var/tmp/slave.sock";
|
||||
static char master_socket[FN_REFLEN]= "./var/tmp/master.sock";
|
||||
static char slave_socket[FN_REFLEN]= "./var/tmp/slave.sock";
|
||||
#endif
|
||||
|
||||
/* comma delimited list of tests to skip or empty string */
|
||||
#ifndef __WIN__
|
||||
static char skip_test[PATH_MAX]= " lowercase_table3 , system_mysql_db_fix ";
|
||||
static char skip_test[FN_REFLEN]= " lowercase_table3 , system_mysql_db_fix ";
|
||||
#else
|
||||
/*
|
||||
The most ignore testes contain the calls of system command
|
||||
@ -110,7 +110,7 @@ static char skip_test[PATH_MAX]= " lowercase_table3 , system_mysql_db_fix ";
|
||||
mysqldump contains a command system
|
||||
rpl000001 makes non-exit loop...temporary skiped
|
||||
*/
|
||||
static char skip_test[PATH_MAX]=
|
||||
static char skip_test[FN_REFLEN]=
|
||||
" lowercase_table3 ,"
|
||||
" system_mysql_db_fix ,"
|
||||
" sp ,"
|
||||
@ -123,44 +123,44 @@ static char skip_test[PATH_MAX]=
|
||||
" mysqldump ,"
|
||||
" rpl000001 ";
|
||||
#endif
|
||||
static char ignore_test[PATH_MAX]= "";
|
||||
static char ignore_test[FN_REFLEN]= "";
|
||||
|
||||
static char bin_dir[PATH_MAX];
|
||||
static char mysql_test_dir[PATH_MAX];
|
||||
static char test_dir[PATH_MAX];
|
||||
static char mysql_tmp_dir[PATH_MAX];
|
||||
static char result_dir[PATH_MAX];
|
||||
static char master_dir[PATH_MAX];
|
||||
static char slave_dir[PATH_MAX];
|
||||
static char lang_dir[PATH_MAX];
|
||||
static char char_dir[PATH_MAX];
|
||||
static char bin_dir[FN_REFLEN];
|
||||
static char mysql_test_dir[FN_REFLEN];
|
||||
static char test_dir[FN_REFLEN];
|
||||
static char mysql_tmp_dir[FN_REFLEN];
|
||||
static char result_dir[FN_REFLEN];
|
||||
static char master_dir[FN_REFLEN];
|
||||
static char slave_dir[FN_REFLEN];
|
||||
static char lang_dir[FN_REFLEN];
|
||||
static char char_dir[FN_REFLEN];
|
||||
|
||||
static char mysqladmin_file[PATH_MAX];
|
||||
static char mysqld_file[PATH_MAX];
|
||||
static char mysqltest_file[PATH_MAX];
|
||||
static char mysqladmin_file[FN_REFLEN];
|
||||
static char mysqld_file[FN_REFLEN];
|
||||
static char mysqltest_file[FN_REFLEN];
|
||||
#ifndef __WIN__
|
||||
static char master_pid[PATH_MAX];
|
||||
static char slave_pid[PATH_MAX];
|
||||
static char sh_file[PATH_MAX]= "/bin/sh";
|
||||
static char master_pid[FN_REFLEN];
|
||||
static char slave_pid[FN_REFLEN];
|
||||
static char sh_file[FN_REFLEN]= "/bin/sh";
|
||||
#else
|
||||
static HANDLE master_pid;
|
||||
static HANDLE slave_pid;
|
||||
#endif
|
||||
|
||||
static char master_opt[PATH_MAX]= "";
|
||||
static char slave_opt[PATH_MAX]= "";
|
||||
static char master_opt[FN_REFLEN]= "";
|
||||
static char slave_opt[FN_REFLEN]= "";
|
||||
|
||||
static char slave_master_info[PATH_MAX]= "";
|
||||
static char slave_master_info[FN_REFLEN]= "";
|
||||
|
||||
static char master_init_script[PATH_MAX]= "";
|
||||
static char slave_init_script[PATH_MAX]= "";
|
||||
static char master_init_script[FN_REFLEN]= "";
|
||||
static char slave_init_script[FN_REFLEN]= "";
|
||||
|
||||
/* OpenSSL */
|
||||
static char ca_cert[PATH_MAX];
|
||||
static char server_cert[PATH_MAX];
|
||||
static char server_key[PATH_MAX];
|
||||
static char client_cert[PATH_MAX];
|
||||
static char client_key[PATH_MAX];
|
||||
static char ca_cert[FN_REFLEN];
|
||||
static char server_cert[FN_REFLEN];
|
||||
static char server_key[FN_REFLEN];
|
||||
static char client_cert[FN_REFLEN];
|
||||
static char client_key[FN_REFLEN];
|
||||
|
||||
int total_skip= 0;
|
||||
int total_pass= 0;
|
||||
@ -254,18 +254,18 @@ void install_db(char *datadir)
|
||||
{
|
||||
arg_list_t al;
|
||||
int err;
|
||||
char input[PATH_MAX];
|
||||
char output[PATH_MAX];
|
||||
char error[PATH_MAX];
|
||||
char input[FN_REFLEN];
|
||||
char output[FN_REFLEN];
|
||||
char error[FN_REFLEN];
|
||||
|
||||
/* input file */
|
||||
#ifdef __NETWARE__
|
||||
snprintf(input, PATH_MAX, "%s/bin/init_db.sql", base_dir);
|
||||
snprintf(input, FN_REFLEN, "%s/bin/init_db.sql", base_dir);
|
||||
#else
|
||||
snprintf(input, PATH_MAX, "%s/mysql-test/init_db.sql", base_dir);
|
||||
snprintf(input, FN_REFLEN, "%s/mysql-test/init_db.sql", base_dir);
|
||||
#endif
|
||||
snprintf(output, PATH_MAX, "%s/install.out", datadir);
|
||||
snprintf(error, PATH_MAX, "%s/install.err", datadir);
|
||||
snprintf(output, FN_REFLEN, "%s/install.out", datadir);
|
||||
snprintf(error, FN_REFLEN, "%s/install.err", datadir);
|
||||
|
||||
/* args */
|
||||
init_args(&al);
|
||||
@ -302,10 +302,10 @@ void install_db(char *datadir)
|
||||
|
||||
void mysql_install_db()
|
||||
{
|
||||
char temp[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
|
||||
/* var directory */
|
||||
snprintf(temp, PATH_MAX, "%s/var", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var", mysql_test_dir);
|
||||
|
||||
/* clean up old direcotry */
|
||||
del_tree(temp);
|
||||
@ -315,41 +315,41 @@ void mysql_install_db()
|
||||
mkdir(temp, S_IRWXU);
|
||||
/* create subdirectories */
|
||||
mlog("Creating test-suite folders...\n");
|
||||
snprintf(temp, PATH_MAX, "%s/var/run", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/run", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
snprintf(temp, PATH_MAX, "%s/var/tmp", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/tmp", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
snprintf(temp, PATH_MAX, "%s/var/master-data", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/master-data", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
snprintf(temp, PATH_MAX, "%s/var/master-data/mysql", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/master-data/mysql", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
snprintf(temp, PATH_MAX, "%s/var/master-data/test", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/master-data/test", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
snprintf(temp, PATH_MAX, "%s/var/slave-data", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/slave-data", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
snprintf(temp, PATH_MAX, "%s/var/slave-data/mysql", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/slave-data/mysql", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
snprintf(temp, PATH_MAX, "%s/var/slave-data/test", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/slave-data/test", mysql_test_dir);
|
||||
mkdir(temp, S_IRWXU);
|
||||
#else
|
||||
mkdir(temp);
|
||||
/* create subdirectories */
|
||||
mlog("Creating test-suite folders...\n");
|
||||
snprintf(temp, PATH_MAX, "%s/var/run", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/run", mysql_test_dir);
|
||||
mkdir(temp);
|
||||
snprintf(temp, PATH_MAX, "%s/var/tmp", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/tmp", mysql_test_dir);
|
||||
mkdir(temp);
|
||||
snprintf(temp, PATH_MAX, "%s/var/master-data", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/master-data", mysql_test_dir);
|
||||
mkdir(temp);
|
||||
snprintf(temp, PATH_MAX, "%s/var/master-data/mysql", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/master-data/mysql", mysql_test_dir);
|
||||
mkdir(temp);
|
||||
snprintf(temp, PATH_MAX, "%s/var/master-data/test", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/master-data/test", mysql_test_dir);
|
||||
mkdir(temp);
|
||||
snprintf(temp, PATH_MAX, "%s/var/slave-data", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/slave-data", mysql_test_dir);
|
||||
mkdir(temp);
|
||||
snprintf(temp, PATH_MAX, "%s/var/slave-data/mysql", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/slave-data/mysql", mysql_test_dir);
|
||||
mkdir(temp);
|
||||
snprintf(temp, PATH_MAX, "%s/var/slave-data/test", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/var/slave-data/test", mysql_test_dir);
|
||||
mkdir(temp);
|
||||
#endif
|
||||
|
||||
@ -372,10 +372,10 @@ void start_master()
|
||||
{
|
||||
arg_list_t al;
|
||||
int err;
|
||||
char master_out[PATH_MAX];
|
||||
char master_err[PATH_MAX];
|
||||
/* char temp[PATH_MAX]; */
|
||||
char temp2[PATH_MAX];
|
||||
char master_out[FN_REFLEN];
|
||||
char master_err[FN_REFLEN];
|
||||
/* char temp[FN_REFLEN]; */
|
||||
char temp2[FN_REFLEN];
|
||||
|
||||
/* remove old berkeley db log files that can confuse the server */
|
||||
removef("%s/log.*", master_dir);
|
||||
@ -405,7 +405,7 @@ void start_master()
|
||||
FILE *fp;
|
||||
|
||||
/* create an empty index file */
|
||||
snprintf(temp, PATH_MAX, "%s/test/t1.MYI", master_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/test/t1.MYI", master_dir);
|
||||
fp= fopen(temp, "wb+");
|
||||
|
||||
fputs("1", fp);
|
||||
@ -418,19 +418,19 @@ void start_master()
|
||||
}
|
||||
|
||||
/* redirection files */
|
||||
snprintf(master_out, PATH_MAX, "%s/var/run/master%u.out",
|
||||
snprintf(master_out, FN_REFLEN, "%s/var/run/master%u.out",
|
||||
mysql_test_dir, restarts);
|
||||
snprintf(master_err, PATH_MAX, "%s/var/run/master%u.err",
|
||||
snprintf(master_err, FN_REFLEN, "%s/var/run/master%u.err",
|
||||
mysql_test_dir, restarts);
|
||||
#ifndef __WIN__
|
||||
snprintf(temp2,PATH_MAX,"%s/var",mysql_test_dir);
|
||||
snprintf(temp2,FN_REFLEN,"%s/var",mysql_test_dir);
|
||||
mkdir(temp2,S_IRWXU);
|
||||
snprintf(temp2,PATH_MAX,"%s/var/log",mysql_test_dir);
|
||||
snprintf(temp2,FN_REFLEN,"%s/var/log",mysql_test_dir);
|
||||
mkdir(temp2,S_IRWXU);
|
||||
#else
|
||||
snprintf(temp2,PATH_MAX,"%s/var",mysql_test_dir);
|
||||
snprintf(temp2,FN_REFLEN,"%s/var",mysql_test_dir);
|
||||
mkdir(temp2);
|
||||
snprintf(temp2,PATH_MAX,"%s/var/log",mysql_test_dir);
|
||||
snprintf(temp2,FN_REFLEN,"%s/var/log",mysql_test_dir);
|
||||
mkdir(temp2);
|
||||
#endif
|
||||
/* args */
|
||||
@ -539,8 +539,8 @@ void start_slave()
|
||||
{
|
||||
arg_list_t al;
|
||||
int err;
|
||||
char slave_out[PATH_MAX];
|
||||
char slave_err[PATH_MAX];
|
||||
char slave_out[FN_REFLEN];
|
||||
char slave_err[FN_REFLEN];
|
||||
|
||||
/* skip? */
|
||||
if (skip_slave) return;
|
||||
@ -568,7 +568,7 @@ void start_slave()
|
||||
if (strinstr(slave_init_script, "rpl000016-slave.sh") != 0)
|
||||
{
|
||||
/* create empty master.info file */
|
||||
snprintf(temp, PATH_MAX, "%s/master.info", slave_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/master.info", slave_dir);
|
||||
close(open(temp, O_WRONLY | O_CREAT,S_IRWXU|S_IRWXG|S_IRWXO));
|
||||
}
|
||||
else if (strinstr(slave_init_script, "rpl000017-slave.sh") != 0)
|
||||
@ -576,7 +576,7 @@ void start_slave()
|
||||
FILE *fp;
|
||||
|
||||
/* create a master.info file */
|
||||
snprintf(temp, PATH_MAX, "%s/master.info", slave_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/master.info", slave_dir);
|
||||
fp= fopen(temp, "wb+");
|
||||
|
||||
fputs("master-bin.000001\n", fp);
|
||||
@ -593,7 +593,7 @@ void start_slave()
|
||||
else if (strinstr(slave_init_script, "rpl_rotate_logs-slave.sh") != 0)
|
||||
{
|
||||
/* create empty master.info file */
|
||||
snprintf(temp, PATH_MAX, "%s/master.info", slave_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/master.info", slave_dir);
|
||||
close(open(temp, O_WRONLY | O_CREAT,S_IRWXU|S_IRWXG|S_IRWXO));
|
||||
}
|
||||
#elif !defined(__WIN__)
|
||||
@ -602,9 +602,9 @@ void start_slave()
|
||||
}
|
||||
|
||||
/* redirection files */
|
||||
snprintf(slave_out, PATH_MAX, "%s/var/run/slave%u.out",
|
||||
snprintf(slave_out, FN_REFLEN, "%s/var/run/slave%u.out",
|
||||
mysql_test_dir, restarts);
|
||||
snprintf(slave_err, PATH_MAX, "%s/var/run/slave%u.err",
|
||||
snprintf(slave_err, FN_REFLEN, "%s/var/run/slave%u.err",
|
||||
mysql_test_dir, restarts);
|
||||
|
||||
/* args */
|
||||
@ -859,14 +859,14 @@ int read_option(char *opt_file, char *opt)
|
||||
{
|
||||
int fd, err;
|
||||
char *p;
|
||||
char buf[PATH_MAX];
|
||||
char buf[FN_REFLEN];
|
||||
|
||||
/* copy current option */
|
||||
strncpy(buf, opt, PATH_MAX);
|
||||
strncpy(buf, opt, FN_REFLEN);
|
||||
|
||||
/* open options file */
|
||||
fd= open(opt_file, O_RDONLY);
|
||||
err= read(fd, opt, PATH_MAX);
|
||||
err= read(fd, opt, FN_REFLEN);
|
||||
close(fd);
|
||||
|
||||
if (err > 0)
|
||||
@ -890,7 +890,7 @@ int read_option(char *opt_file, char *opt)
|
||||
/* check for $MYSQL_TEST_DIR */
|
||||
if ((p= strstr(opt, "$MYSQL_TEST_DIR")) != NULL)
|
||||
{
|
||||
char temp[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
|
||||
*p= 0;
|
||||
|
||||
@ -925,7 +925,7 @@ int read_option(char *opt_file, char *opt)
|
||||
|
||||
void run_test(char *test)
|
||||
{
|
||||
char temp[PATH_MAX];
|
||||
char temp[FN_REFLEN];
|
||||
const char *rstr;
|
||||
int skip= FALSE, ignore=FALSE;
|
||||
int restart= FALSE;
|
||||
@ -933,13 +933,13 @@ void run_test(char *test)
|
||||
struct stat info;
|
||||
|
||||
/* skip tests in the skip list */
|
||||
snprintf(temp, PATH_MAX, " %s ", test);
|
||||
snprintf(temp, FN_REFLEN, " %s ", test);
|
||||
skip= (strinstr(skip_test, temp) != 0);
|
||||
if (skip == FALSE)
|
||||
ignore= (strinstr(ignore_test, temp) != 0);
|
||||
|
||||
snprintf(master_init_script, PATH_MAX, "%s/%s-master.sh", test_dir, test);
|
||||
snprintf(slave_init_script, PATH_MAX, "%s/%s-slave.sh", test_dir, test);
|
||||
snprintf(master_init_script, FN_REFLEN, "%s/%s-master.sh", test_dir, test);
|
||||
snprintf(slave_init_script, FN_REFLEN, "%s/%s-slave.sh", test_dir, test);
|
||||
#ifdef __WIN__
|
||||
if (! stat(master_init_script, &info))
|
||||
skip= TRUE;
|
||||
@ -957,14 +957,14 @@ void run_test(char *test)
|
||||
}
|
||||
else if (!skip) /* skip test? */
|
||||
{
|
||||
char test_file[PATH_MAX];
|
||||
char master_opt_file[PATH_MAX];
|
||||
char slave_opt_file[PATH_MAX];
|
||||
char slave_master_info_file[PATH_MAX];
|
||||
char result_file[PATH_MAX];
|
||||
char reject_file[PATH_MAX];
|
||||
char out_file[PATH_MAX];
|
||||
char err_file[PATH_MAX];
|
||||
char test_file[FN_REFLEN];
|
||||
char master_opt_file[FN_REFLEN];
|
||||
char slave_opt_file[FN_REFLEN];
|
||||
char slave_master_info_file[FN_REFLEN];
|
||||
char result_file[FN_REFLEN];
|
||||
char reject_file[FN_REFLEN];
|
||||
char out_file[FN_REFLEN];
|
||||
char err_file[FN_REFLEN];
|
||||
int err;
|
||||
arg_list_t al;
|
||||
#ifdef __WIN__
|
||||
@ -981,20 +981,20 @@ void run_test(char *test)
|
||||
if (flag != skip_slave) restart= TRUE;
|
||||
|
||||
/* create files */
|
||||
snprintf(master_opt_file, PATH_MAX, "%s/%s-master.opt", test_dir, test);
|
||||
snprintf(slave_opt_file, PATH_MAX, "%s/%s-slave.opt", test_dir, test);
|
||||
snprintf(slave_master_info_file, PATH_MAX, "%s/%s.slave-mi",
|
||||
snprintf(master_opt_file, FN_REFLEN, "%s/%s-master.opt", test_dir, test);
|
||||
snprintf(slave_opt_file, FN_REFLEN, "%s/%s-slave.opt", test_dir, test);
|
||||
snprintf(slave_master_info_file, FN_REFLEN, "%s/%s.slave-mi",
|
||||
test_dir, test);
|
||||
snprintf(reject_file, PATH_MAX, "%s/%s%s",
|
||||
snprintf(reject_file, FN_REFLEN, "%s/%s%s",
|
||||
result_dir, test, REJECT_SUFFIX);
|
||||
snprintf(out_file, PATH_MAX, "%s/%s%s", result_dir, test, OUT_SUFFIX);
|
||||
snprintf(err_file, PATH_MAX, "%s/%s%s", result_dir, test, ERR_SUFFIX);
|
||||
snprintf(out_file, FN_REFLEN, "%s/%s%s", result_dir, test, OUT_SUFFIX);
|
||||
snprintf(err_file, FN_REFLEN, "%s/%s%s", result_dir, test, ERR_SUFFIX);
|
||||
|
||||
/* netware specific files */
|
||||
snprintf(test_file, PATH_MAX, "%s/%s%s", test_dir, test, NW_TEST_SUFFIX);
|
||||
snprintf(test_file, FN_REFLEN, "%s/%s%s", test_dir, test, NW_TEST_SUFFIX);
|
||||
if (stat(test_file, &info))
|
||||
{
|
||||
snprintf(test_file, PATH_MAX, "%s/%s%s", test_dir, test, TEST_SUFFIX);
|
||||
snprintf(test_file, FN_REFLEN, "%s/%s%s", test_dir, test, TEST_SUFFIX);
|
||||
if (access(test_file,0))
|
||||
{
|
||||
printf("Invalid test name %s, %s file not found\n",test,test_file);
|
||||
@ -1002,11 +1002,11 @@ void run_test(char *test)
|
||||
}
|
||||
}
|
||||
|
||||
snprintf(result_file, PATH_MAX, "%s/%s%s",
|
||||
snprintf(result_file, FN_REFLEN, "%s/%s%s",
|
||||
result_dir, test, NW_RESULT_SUFFIX);
|
||||
if (stat(result_file, &info))
|
||||
{
|
||||
snprintf(result_file, PATH_MAX, "%s/%s%s",
|
||||
snprintf(result_file, FN_REFLEN, "%s/%s%s",
|
||||
result_dir, test, RESULT_SUFFIX);
|
||||
}
|
||||
|
||||
@ -1248,8 +1248,8 @@ void die(const char *msg)
|
||||
|
||||
void setup(char *file __attribute__((unused)))
|
||||
{
|
||||
char temp[PATH_MAX];
|
||||
char file_path[PATH_MAX*2];
|
||||
char temp[FN_REFLEN];
|
||||
char file_path[FN_REFLEN*2];
|
||||
char *p;
|
||||
int position;
|
||||
|
||||
@ -1257,14 +1257,14 @@ void setup(char *file __attribute__((unused)))
|
||||
#ifdef __WIN__
|
||||
_putenv( "TZ=GMT-3" );
|
||||
#else
|
||||
setenv("TZ", "GMT-3", TRUE);
|
||||
putenv((char *)"TZ=GMT-3");
|
||||
#endif
|
||||
/* find base dir */
|
||||
#ifdef __NETWARE__
|
||||
strcpy(temp, strlwr(file));
|
||||
while ((p= strchr(temp, '\\')) != NULL) *p= '/';
|
||||
#else
|
||||
getcwd(temp, PATH_MAX);
|
||||
getcwd(temp, FN_REFLEN);
|
||||
position= strlen(temp);
|
||||
temp[position]= '/';
|
||||
temp[position+1]= 0;
|
||||
@ -1284,100 +1284,100 @@ void setup(char *file __attribute__((unused)))
|
||||
|
||||
#ifdef __NETWARE__
|
||||
/* setup paths */
|
||||
snprintf(bin_dir, PATH_MAX, "%s/bin", base_dir);
|
||||
snprintf(mysql_test_dir, PATH_MAX, "%s/mysql-test", base_dir);
|
||||
snprintf(test_dir, PATH_MAX, "%s/t", mysql_test_dir);
|
||||
snprintf(mysql_tmp_dir, PATH_MAX, "%s/var/tmp", mysql_test_dir);
|
||||
snprintf(result_dir, PATH_MAX, "%s/r", mysql_test_dir);
|
||||
snprintf(master_dir, PATH_MAX, "%s/var/master-data", mysql_test_dir);
|
||||
snprintf(slave_dir, PATH_MAX, "%s/var/slave-data", mysql_test_dir);
|
||||
snprintf(lang_dir, PATH_MAX, "%s/share/english", base_dir);
|
||||
snprintf(char_dir, PATH_MAX, "%s/share/charsets", base_dir);
|
||||
snprintf(bin_dir, FN_REFLEN, "%s/bin", base_dir);
|
||||
snprintf(mysql_test_dir, FN_REFLEN, "%s/mysql-test", base_dir);
|
||||
snprintf(test_dir, FN_REFLEN, "%s/t", mysql_test_dir);
|
||||
snprintf(mysql_tmp_dir, FN_REFLEN, "%s/var/tmp", mysql_test_dir);
|
||||
snprintf(result_dir, FN_REFLEN, "%s/r", mysql_test_dir);
|
||||
snprintf(master_dir, FN_REFLEN, "%s/var/master-data", mysql_test_dir);
|
||||
snprintf(slave_dir, FN_REFLEN, "%s/var/slave-data", mysql_test_dir);
|
||||
snprintf(lang_dir, FN_REFLEN, "%s/share/english", base_dir);
|
||||
snprintf(char_dir, FN_REFLEN, "%s/share/charsets", base_dir);
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
use_openssl= TRUE;
|
||||
#endif /* HAVE_OPENSSL */
|
||||
|
||||
/* OpenSSL paths */
|
||||
snprintf(ca_cert, PATH_MAX, "%s/SSL/cacert.pem", base_dir);
|
||||
snprintf(server_cert, PATH_MAX, "%s/SSL/server-cert.pem", base_dir);
|
||||
snprintf(server_key, PATH_MAX, "%s/SSL/server-key.pem", base_dir);
|
||||
snprintf(client_cert, PATH_MAX, "%s/SSL/client-cert.pem", base_dir);
|
||||
snprintf(client_key, PATH_MAX, "%s/SSL/client-key.pem", base_dir);
|
||||
snprintf(ca_cert, FN_REFLEN, "%s/SSL/cacert.pem", base_dir);
|
||||
snprintf(server_cert, FN_REFLEN, "%s/SSL/server-cert.pem", base_dir);
|
||||
snprintf(server_key, FN_REFLEN, "%s/SSL/server-key.pem", base_dir);
|
||||
snprintf(client_cert, FN_REFLEN, "%s/SSL/client-cert.pem", base_dir);
|
||||
snprintf(client_key, FN_REFLEN, "%s/SSL/client-key.pem", base_dir);
|
||||
|
||||
/* setup files */
|
||||
snprintf(mysqld_file, PATH_MAX, "%s/mysqld", bin_dir);
|
||||
snprintf(mysqltest_file, PATH_MAX, "%s/mysqltest", bin_dir);
|
||||
snprintf(mysqladmin_file, PATH_MAX, "%s/mysqladmin", bin_dir);
|
||||
snprintf(master_pid, PATH_MAX, "%s/var/run/master.pid", mysql_test_dir);
|
||||
snprintf(slave_pid, PATH_MAX, "%s/var/run/slave.pid", mysql_test_dir);
|
||||
snprintf(mysqld_file, FN_REFLEN, "%s/mysqld", bin_dir);
|
||||
snprintf(mysqltest_file, FN_REFLEN, "%s/mysqltest", bin_dir);
|
||||
snprintf(mysqladmin_file, FN_REFLEN, "%s/mysqladmin", bin_dir);
|
||||
snprintf(master_pid, FN_REFLEN, "%s/var/run/master.pid", mysql_test_dir);
|
||||
snprintf(slave_pid, FN_REFLEN, "%s/var/run/slave.pid", mysql_test_dir);
|
||||
#elif __WIN__
|
||||
/* setup paths */
|
||||
#ifdef _DEBUG
|
||||
snprintf(bin_dir, PATH_MAX, "%s/client_debug", base_dir);
|
||||
snprintf(bin_dir, FN_REFLEN, "%s/client_debug", base_dir);
|
||||
#else
|
||||
snprintf(bin_dir, PATH_MAX, "%s/client_release", base_dir);
|
||||
snprintf(bin_dir, FN_REFLEN, "%s/client_release", base_dir);
|
||||
#endif
|
||||
snprintf(mysql_test_dir, PATH_MAX, "%s/mysql-test", base_dir);
|
||||
snprintf(test_dir, PATH_MAX, "%s/t", mysql_test_dir);
|
||||
snprintf(mysql_tmp_dir, PATH_MAX, "%s/var/tmp", mysql_test_dir);
|
||||
snprintf(result_dir, PATH_MAX, "%s/r", mysql_test_dir);
|
||||
snprintf(master_dir, PATH_MAX, "%s/var/master-data", mysql_test_dir);
|
||||
snprintf(slave_dir, PATH_MAX, "%s/var/slave-data", mysql_test_dir);
|
||||
snprintf(lang_dir, PATH_MAX, "%s/share/english", base_dir);
|
||||
snprintf(char_dir, PATH_MAX, "%s/share/charsets", base_dir);
|
||||
snprintf(mysql_test_dir, FN_REFLEN, "%s/mysql-test", base_dir);
|
||||
snprintf(test_dir, FN_REFLEN, "%s/t", mysql_test_dir);
|
||||
snprintf(mysql_tmp_dir, FN_REFLEN, "%s/var/tmp", mysql_test_dir);
|
||||
snprintf(result_dir, FN_REFLEN, "%s/r", mysql_test_dir);
|
||||
snprintf(master_dir, FN_REFLEN, "%s/var/master-data", mysql_test_dir);
|
||||
snprintf(slave_dir, FN_REFLEN, "%s/var/slave-data", mysql_test_dir);
|
||||
snprintf(lang_dir, FN_REFLEN, "%s/share/english", base_dir);
|
||||
snprintf(char_dir, FN_REFLEN, "%s/share/charsets", base_dir);
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
use_openssl= TRUE;
|
||||
#endif /* HAVE_OPENSSL */
|
||||
|
||||
/* OpenSSL paths */
|
||||
snprintf(ca_cert, PATH_MAX, "%s/SSL/cacert.pem", base_dir);
|
||||
snprintf(server_cert, PATH_MAX, "%s/SSL/server-cert.pem", base_dir);
|
||||
snprintf(server_key, PATH_MAX, "%s/SSL/server-key.pem", base_dir);
|
||||
snprintf(client_cert, PATH_MAX, "%s/SSL/client-cert.pem", base_dir);
|
||||
snprintf(client_key, PATH_MAX, "%s/SSL/client-key.pem", base_dir);
|
||||
snprintf(ca_cert, FN_REFLEN, "%s/SSL/cacert.pem", base_dir);
|
||||
snprintf(server_cert, FN_REFLEN, "%s/SSL/server-cert.pem", base_dir);
|
||||
snprintf(server_key, FN_REFLEN, "%s/SSL/server-key.pem", base_dir);
|
||||
snprintf(client_cert, FN_REFLEN, "%s/SSL/client-cert.pem", base_dir);
|
||||
snprintf(client_key, FN_REFLEN, "%s/SSL/client-key.pem", base_dir);
|
||||
|
||||
/* setup files */
|
||||
snprintf(mysqld_file, PATH_MAX, "%s/mysqld.exe", bin_dir);
|
||||
snprintf(mysqltest_file, PATH_MAX, "%s/mysqltest.exe", bin_dir);
|
||||
snprintf(mysqladmin_file, PATH_MAX, "%s/mysqladmin.exe", bin_dir);
|
||||
snprintf(mysqld_file, FN_REFLEN, "%s/mysqld.exe", bin_dir);
|
||||
snprintf(mysqltest_file, FN_REFLEN, "%s/mysqltest.exe", bin_dir);
|
||||
snprintf(mysqladmin_file, FN_REFLEN, "%s/mysqladmin.exe", bin_dir);
|
||||
#else
|
||||
/* setup paths */
|
||||
snprintf(bin_dir, PATH_MAX, "%s/client", base_dir);
|
||||
snprintf(mysql_test_dir, PATH_MAX, "%s/mysql-test", base_dir);
|
||||
snprintf(test_dir, PATH_MAX, "%s/t", mysql_test_dir);
|
||||
snprintf(mysql_tmp_dir, PATH_MAX, "%s/var/tmp", mysql_test_dir);
|
||||
snprintf(result_dir, PATH_MAX, "%s/r", mysql_test_dir);
|
||||
snprintf(master_dir, PATH_MAX, "%s/var/master-data", mysql_test_dir);
|
||||
snprintf(slave_dir, PATH_MAX, "%s/var/slave-data", mysql_test_dir);
|
||||
snprintf(lang_dir, PATH_MAX, "%s/sql/share/english", base_dir);
|
||||
snprintf(char_dir, PATH_MAX, "%s/sql/share/charsets", base_dir);
|
||||
snprintf(bin_dir, FN_REFLEN, "%s/client", base_dir);
|
||||
snprintf(mysql_test_dir, FN_REFLEN, "%s/mysql-test", base_dir);
|
||||
snprintf(test_dir, FN_REFLEN, "%s/t", mysql_test_dir);
|
||||
snprintf(mysql_tmp_dir, FN_REFLEN, "%s/var/tmp", mysql_test_dir);
|
||||
snprintf(result_dir, FN_REFLEN, "%s/r", mysql_test_dir);
|
||||
snprintf(master_dir, FN_REFLEN, "%s/var/master-data", mysql_test_dir);
|
||||
snprintf(slave_dir, FN_REFLEN, "%s/var/slave-data", mysql_test_dir);
|
||||
snprintf(lang_dir, FN_REFLEN, "%s/sql/share/english", base_dir);
|
||||
snprintf(char_dir, FN_REFLEN, "%s/sql/share/charsets", base_dir);
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
use_openssl= TRUE;
|
||||
#endif /* HAVE_OPENSSL */
|
||||
|
||||
/* OpenSSL paths */
|
||||
snprintf(ca_cert, PATH_MAX, "%s/SSL/cacert.pem", base_dir);
|
||||
snprintf(server_cert, PATH_MAX, "%s/SSL/server-cert.pem", base_dir);
|
||||
snprintf(server_key, PATH_MAX, "%s/SSL/server-key.pem", base_dir);
|
||||
snprintf(client_cert, PATH_MAX, "%s/SSL/client-cert.pem", base_dir);
|
||||
snprintf(client_key, PATH_MAX, "%s/SSL/client-key.pem", base_dir);
|
||||
snprintf(ca_cert, FN_REFLEN, "%s/SSL/cacert.pem", base_dir);
|
||||
snprintf(server_cert, FN_REFLEN, "%s/SSL/server-cert.pem", base_dir);
|
||||
snprintf(server_key, FN_REFLEN, "%s/SSL/server-key.pem", base_dir);
|
||||
snprintf(client_cert, FN_REFLEN, "%s/SSL/client-cert.pem", base_dir);
|
||||
snprintf(client_key, FN_REFLEN, "%s/SSL/client-key.pem", base_dir);
|
||||
|
||||
/* setup files */
|
||||
snprintf(mysqld_file, PATH_MAX, "%s/sql/mysqld", base_dir);
|
||||
snprintf(mysqltest_file, PATH_MAX, "%s/mysqltest", bin_dir);
|
||||
snprintf(mysqladmin_file, PATH_MAX, "%s/mysqladmin", bin_dir);
|
||||
snprintf(master_pid, PATH_MAX, "%s/var/run/master.pid", mysql_test_dir);
|
||||
snprintf(slave_pid, PATH_MAX, "%s/var/run/slave.pid", mysql_test_dir);
|
||||
snprintf(mysqld_file, FN_REFLEN, "%s/sql/mysqld", base_dir);
|
||||
snprintf(mysqltest_file, FN_REFLEN, "%s/mysqltest", bin_dir);
|
||||
snprintf(mysqladmin_file, FN_REFLEN, "%s/mysqladmin", bin_dir);
|
||||
snprintf(master_pid, FN_REFLEN, "%s/var/run/master.pid", mysql_test_dir);
|
||||
snprintf(slave_pid, FN_REFLEN, "%s/var/run/slave.pid", mysql_test_dir);
|
||||
|
||||
snprintf(master_socket,PATH_MAX, "%s/var/tmp/master.sock", mysql_test_dir);
|
||||
snprintf(slave_socket,PATH_MAX, "%s/var/tmp/slave.sock", mysql_test_dir);
|
||||
snprintf(master_socket,FN_REFLEN, "%s/var/tmp/master.sock", mysql_test_dir);
|
||||
snprintf(slave_socket,FN_REFLEN, "%s/var/tmp/slave.sock", mysql_test_dir);
|
||||
|
||||
#endif
|
||||
/* create log file */
|
||||
snprintf(temp, PATH_MAX, "%s/mysql-test-run.log", mysql_test_dir);
|
||||
snprintf(temp, FN_REFLEN, "%s/mysql-test-run.log", mysql_test_dir);
|
||||
if ((log_fd= fopen(temp, "w+")) == NULL)
|
||||
{
|
||||
log_errno("Unable to create log file.");
|
||||
@ -1386,46 +1386,47 @@ void setup(char *file __attribute__((unused)))
|
||||
/* prepare skip test list */
|
||||
while ((p= strchr(skip_test, ',')) != NULL) *p= ' ';
|
||||
strcpy(temp, strlwr(skip_test));
|
||||
snprintf(skip_test, PATH_MAX, " %s ", temp);
|
||||
snprintf(skip_test, FN_REFLEN, " %s ", temp);
|
||||
|
||||
/* environment */
|
||||
#ifdef __NETWARE__
|
||||
setenv("MYSQL_TEST_DIR", mysql_test_dir, 1);
|
||||
snprintf(file_path, PATH_MAX*2,
|
||||
snprintf(file_path, FN_REFLEN*2,
|
||||
"%s/client/mysqldump --no-defaults -u root --port=%u",
|
||||
bin_dir, master_port);
|
||||
setenv("MYSQL_DUMP", file_path, 1);
|
||||
snprintf(file_path, PATH_MAX*2,
|
||||
snprintf(file_path, FN_REFLEN*2,
|
||||
"%s/client/mysqlbinlog --no-defaults --local-load=%s",
|
||||
bin_dir, mysql_tmp_dir);
|
||||
setenv("MYSQL_BINLOG", file_path, 1);
|
||||
#elif __WIN__
|
||||
snprintf(file_path,MAX_PATH,"MYSQL_TEST_DIR=%s",mysql_test_dir);
|
||||
snprintf(file_path,FN_REFLEN,"MYSQL_TEST_DIR=%s",mysql_test_dir);
|
||||
_putenv(file_path);
|
||||
snprintf(file_path, PATH_MAX*2,
|
||||
snprintf(file_path, FN_REFLEN*2,
|
||||
"MYSQL_DUMP=%s/mysqldump.exe --no-defaults -u root --port=%u",
|
||||
bin_dir, master_port);
|
||||
_putenv(file_path);
|
||||
snprintf(file_path, PATH_MAX*2,
|
||||
snprintf(file_path, FN_REFLEN*2,
|
||||
"MYSQL_BINLOG=%s/mysqlbinlog.exe --no-defaults --local-load=%s",
|
||||
bin_dir, mysql_tmp_dir);
|
||||
_putenv(file_path);
|
||||
#else
|
||||
setenv("MYSQL_TEST_DIR", mysql_test_dir, 1);
|
||||
snprintf(file_path, PATH_MAX*2,
|
||||
"%s/mysqldump --no-defaults -u root --port=%u --socket=%s",
|
||||
snprintf(file_path,FN_REFLEN,"MYSQL_TEST_DIR=%s",mysql_test_dir);
|
||||
putenv(file_path);
|
||||
snprintf(file_path, FN_REFLEN*2,
|
||||
"MYSQL_DUMP=%s/mysqldump --no-defaults -u root --port=%u --socket=%s",
|
||||
bin_dir, master_port, master_socket);
|
||||
setenv("MYSQL_DUMP", file_path, 1);
|
||||
snprintf(file_path, PATH_MAX*2,
|
||||
"%s/mysqlbinlog --no-defaults --local-load=%s",
|
||||
putenv(file_path);
|
||||
snprintf(file_path, FN_REFLEN*2,
|
||||
"MYSQL_BINLOG=%s/mysqlbinlog --no-defaults --local-load=%s",
|
||||
bin_dir, mysql_tmp_dir);
|
||||
setenv("MYSQL_BINLOG", file_path, 1);
|
||||
putenv(file_path);
|
||||
#endif
|
||||
|
||||
#ifndef __WIN__
|
||||
setenv("MASTER_MYPORT", "9306", 1);
|
||||
setenv("SLAVE_MYPORT", "9307", 1);
|
||||
setenv("MYSQL_TCP_PORT", "3306", 1);
|
||||
putenv((char *)"MASTER_MYPORT=9306");
|
||||
putenv((char *)"SLAVE_MYPORT=9307");
|
||||
putenv((char *)"MYSQL_TCP_PORT=3306");
|
||||
#else
|
||||
_putenv("MASTER_MYPORT=9306");
|
||||
_putenv("SLAVE_MYPORT=9307");
|
||||
@ -1461,7 +1462,7 @@ int main(int argc, char **argv)
|
||||
temp= strdup(strchr(argv[1],'=') + 1);
|
||||
for (token=str_tok(temp, ","); token != NULL; token=str_tok(NULL, ","))
|
||||
{
|
||||
if (strlen(ignore_test) + strlen(token) + 2 <= PATH_MAX-1)
|
||||
if (strlen(ignore_test) + strlen(token) + 2 <= FN_REFLEN-1)
|
||||
sprintf(ignore_test+strlen(ignore_test), " %s ", token);
|
||||
else
|
||||
{
|
||||
@ -1507,38 +1508,35 @@ int main(int argc, char **argv)
|
||||
{
|
||||
/* run all tests */
|
||||
#ifndef __WIN__
|
||||
struct dirent **namelist;
|
||||
int i,n;
|
||||
char test[NAME_MAX];
|
||||
char *p;
|
||||
struct dirent *entry;
|
||||
DIR *parent;
|
||||
char test[FN_LEN];
|
||||
int position;
|
||||
|
||||
n= scandir(test_dir, &namelist, 0, alphasort);
|
||||
if (n < 0)
|
||||
/* FIXME are we sure the list is sorted if using readdir()? */
|
||||
if ((parent= opendir(test_dir)) == NULL) /* Not thread safe */
|
||||
die("Unable to open tests directory.");
|
||||
else
|
||||
{
|
||||
for (i= 0; i < n; i++)
|
||||
while ((entry= readdir(parent)) != NULL) /* Not thread safe */
|
||||
{
|
||||
strcpy(test, strlwr(namelist[i]->d_name));
|
||||
strcpy(test, strlwr(entry->d_name));
|
||||
/* find the test suffix */
|
||||
if ((position= strinstr(test, TEST_SUFFIX)) != 0)
|
||||
{
|
||||
p= test + position - 1;
|
||||
/* null terminate at the suffix */
|
||||
*p= 0;
|
||||
*(test + position - 1)= '\0';
|
||||
/* run test */
|
||||
run_test(test);
|
||||
}
|
||||
free(namelist[n]);
|
||||
}
|
||||
free(namelist);
|
||||
closedir(parent);
|
||||
}
|
||||
#else
|
||||
struct _finddata_t dir;
|
||||
intptr_t handle;
|
||||
char test[NAME_MAX];
|
||||
char mask[PATH_MAX];
|
||||
char test[FN_LEN];
|
||||
char mask[FN_REFLEN];
|
||||
char *p;
|
||||
int position;
|
||||
char **names= 0;
|
||||
@ -1549,7 +1547,7 @@ int main(int argc, char **argv)
|
||||
/* single test */
|
||||
single_test= FALSE;
|
||||
|
||||
snprintf(mask,MAX_PATH,"%s/*.test",test_dir);
|
||||
snprintf(mask,FN_REFLEN,"%s/*.test",test_dir);
|
||||
|
||||
if ((handle=_findfirst(mask,&dir)) == -1L)
|
||||
{
|
||||
@ -1574,7 +1572,7 @@ int main(int argc, char **argv)
|
||||
*p= 0;
|
||||
|
||||
/* insert test */
|
||||
*names= malloc(PATH_MAX);
|
||||
*names= malloc(FN_REFLEN);
|
||||
strcpy(*names,test);
|
||||
names++;
|
||||
name_index++;
|
||||
|
@ -13,6 +13,8 @@ SUFFIXES = .sh
|
||||
.sh:
|
||||
@RM@ -f $@ $@-t
|
||||
@SED@ \
|
||||
-e 's!@''ndb_port''@!$(ndb_port)!g' \
|
||||
-e 's!@''ndb_port_base''@!$(ndb_port_base)!g' \
|
||||
-e 's!@''ndbbindir''@!$(ndbbindir)!g' \
|
||||
-e 's!@''ndbtoolsdir''@!$(ndbtoolsdir)!g' \
|
||||
$< > $@-t
|
||||
|
@ -5,7 +5,8 @@
|
||||
# This scripts starts the table handler ndbcluster
|
||||
|
||||
# configurable parameters, make sure to change in mysqlcluterd as well
|
||||
port_base="2200"
|
||||
port=@ndb_port@
|
||||
port_base=@ndb_port_base@
|
||||
fsdir=`pwd`
|
||||
# end configurable parameters
|
||||
|
||||
@ -22,6 +23,7 @@ if [ -d ../sql ] ; then
|
||||
exec_ndb=$ndbtop/src/kernel/ndbd
|
||||
exec_mgmtsrvr=$ndbtop/src/mgmsrv/ndb_mgmd
|
||||
exec_waiter=$ndbtop/tools/ndb_waiter
|
||||
exec_test=$ndbtop/tools/ndb_test_platform
|
||||
exec_mgmtclient=$ndbtop/src/mgmclient/ndb_mgm
|
||||
else
|
||||
BINARY_DIST=1
|
||||
@ -34,9 +36,15 @@ else
|
||||
exec_mgmtsrvr=$BASEDIR/bin/ndb_mgmd
|
||||
fi
|
||||
exec_waiter=$BASEDIR/bin/ndb_waiter
|
||||
exec_test=$BASEDIR/bin/ndb_test_platform
|
||||
exec_mgmtclient=$BASEDIR/bin/ndb_mgm
|
||||
fi
|
||||
|
||||
if $exec_test ; then :; else
|
||||
echo "ndb not correctly compiled to support this platform"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pidfile=ndbcluster.pid
|
||||
cfgfile=Ndb.cfg
|
||||
stop_ndb=
|
||||
@ -77,6 +85,9 @@ while test $# -gt 0; do
|
||||
--data-dir=*)
|
||||
fsdir=`echo "$1" | sed -e "s;--data-dir=;;"`
|
||||
;;
|
||||
--port=*)
|
||||
port=`echo "$1" | sed -e "s;--port=;;"`
|
||||
;;
|
||||
--port-base=*)
|
||||
port_base=`echo "$1" | sed -e "s;--port-base=;;"`
|
||||
;;
|
||||
@ -87,7 +98,7 @@ while test $# -gt 0; do
|
||||
shift
|
||||
done
|
||||
|
||||
fs_ndb="$fsdir/ndbcluster-$port_base"
|
||||
fs_ndb="$fsdir/ndbcluster-$port"
|
||||
|
||||
NDB_HOME=
|
||||
if [ ! -x "$fsdir" ]; then
|
||||
@ -113,7 +124,7 @@ exec_ndb="$exec_ndb --no-defaults"
|
||||
exec_waiter="$exec_waiter --no-defaults"
|
||||
|
||||
ndb_host="localhost"
|
||||
ndb_mgmd_port=$port_base
|
||||
ndb_mgmd_port=$port
|
||||
NDB_CONNECTSTRING="host=$ndb_host:$ndb_mgmd_port"
|
||||
export NDB_CONNECTSTRING
|
||||
|
||||
@ -151,10 +162,6 @@ if [ -d "$fs_ndb" ]; then :; else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# set som help variables
|
||||
|
||||
port_transporter=`expr $ndb_mgmd_port + 2`
|
||||
|
||||
# Start management server as deamon
|
||||
|
||||
# Edit file system path and ports in config file
|
||||
@ -169,7 +176,7 @@ sed \
|
||||
-e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \
|
||||
-e s,"CHOOSE_FILESYSTEM","$fs_ndb",g \
|
||||
-e s,"CHOOSE_PORT_MGM","$ndb_mgmd_port",g \
|
||||
-e s,"CHOOSE_PORT_TRANSPORTER","$port_transporter",g \
|
||||
-e s,"CHOOSE_PORT_TRANSPORTER","$port_base",g \
|
||||
< ndb/ndb_config_2_node.ini \
|
||||
> "$fs_ndb/config.ini"
|
||||
fi
|
||||
|
@ -483,3 +483,13 @@ ERROR 42000: Incorrect table name 't1\\'
|
||||
rename table t1 to `t1\\`;
|
||||
ERROR 42000: Incorrect table name 't1\\'
|
||||
drop table t1;
|
||||
create table t1 (a text) character set koi8r;
|
||||
insert into t1 values (_koi8r'<27><><EFBFBD><EFBFBD>');
|
||||
select hex(a) from t1;
|
||||
hex(a)
|
||||
D4C5D3D4
|
||||
alter table t1 convert to character set cp1251;
|
||||
select hex(a) from t1;
|
||||
hex(a)
|
||||
F2E5F1F2
|
||||
drop table t1;
|
||||
|
15
mysql-test/r/consistent_snapshot.result
Normal file
15
mysql-test/r/consistent_snapshot.result
Normal file
@ -0,0 +1,15 @@
|
||||
drop table if exists t1;
|
||||
create table t1 (a int) engine=innodb;
|
||||
start transaction with consistent snapshot;
|
||||
insert into t1 values(1);
|
||||
select * from t1;
|
||||
a
|
||||
commit;
|
||||
delete from t1;
|
||||
start transaction;
|
||||
insert into t1 values(1);
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
commit;
|
||||
drop table t1;
|
@ -126,3 +126,43 @@ Field Type Null Key Default Extra
|
||||
a char(1)
|
||||
b enum('<27><>','<27><>') YES NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
a INTEGER NOT NULL,
|
||||
b VARCHAR(50) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (a),
|
||||
KEY b (b(10))
|
||||
) TYPE=InnoDB CHARACTER SET 'ujis' COLLATE 'ujis_japanese_ci';
|
||||
INSERT INTO t1 (a, b) VALUES (0, 'aaabbbcccddd');
|
||||
INSERT INTO t1 (a, b) VALUES (1, 'eeefffggghhh');
|
||||
INSERT INTO t1 (a, b) VALUES (2, 'iiijjjkkkl');
|
||||
SELECT t1.* FROM t1 WHERE b='aaabbbcccddd' ORDER BY a;
|
||||
a b
|
||||
0 aaabbbcccddd
|
||||
SELECT t1.* FROM t1 WHERE b='eeefffggghhh' ORDER BY a;
|
||||
a b
|
||||
1 eeefffggghhh
|
||||
SELECT t1.* FROM t1 WHERE b='iiijjjkkkl' ORDER BY a;
|
||||
a b
|
||||
2 iiijjjkkkl
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
a INTEGER NOT NULL,
|
||||
b VARCHAR(50) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (a),
|
||||
KEY b (b(10))
|
||||
) TYPE=MyISAM CHARACTER SET 'ujis' COLLATE 'ujis_japanese_ci';
|
||||
INSERT INTO t1 (a, b) VALUES (0, 'aaabbbcccddd');
|
||||
INSERT INTO t1 (a, b) VALUES (1, 'eeefffggghhh');
|
||||
INSERT INTO t1 (a, b) VALUES (2, 'iiijjjkkkl');
|
||||
SELECT t1.* FROM t1 WHERE b='aaabbbcccddd' ORDER BY a;
|
||||
a b
|
||||
0 aaabbbcccddd
|
||||
SELECT t1.* FROM t1 WHERE b='eeefffggghhh' ORDER BY a;
|
||||
a b
|
||||
1 eeefffggghhh
|
||||
SELECT t1.* FROM t1 WHERE b='iiijjjkkkl' ORDER BY a;
|
||||
a b
|
||||
2 iiijjjkkkl
|
||||
DROP TABLE t1;
|
||||
|
@ -201,6 +201,9 @@ hex(unhex("1")) hex(unhex("12")) hex(unhex("123")) hex(unhex("1234")) hex(unhex(
|
||||
select length(unhex(md5("abrakadabra")));
|
||||
length(unhex(md5("abrakadabra")))
|
||||
16
|
||||
select concat('a', quote(NULL));
|
||||
concat('a', quote(NULL))
|
||||
aNULL
|
||||
select reverse("");
|
||||
reverse("")
|
||||
|
||||
@ -312,7 +315,7 @@ insert into t1 values ('one'),(NULL),('two'),('four');
|
||||
select a, quote(a), isnull(quote(a)), quote(a) is null, ifnull(quote(a), 'n') from t1;
|
||||
a quote(a) isnull(quote(a)) quote(a) is null ifnull(quote(a), 'n')
|
||||
one 'one' 0 0 'one'
|
||||
NULL NULL 1 1 n
|
||||
NULL NULL 0 0 NULL
|
||||
two 'two' 0 0 'two'
|
||||
four 'four' 0 0 'four'
|
||||
drop table t1;
|
||||
|
@ -134,6 +134,31 @@ ERROR HY000: Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
insert into mysql.user (host, user) values ('localhost', 'test11');
|
||||
insert into mysql.db (host, db, user, select_priv) values
|
||||
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
||||
alter table mysql.db order by db asc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
Grants for test11@localhost
|
||||
GRANT USAGE ON *.* TO 'test11'@'localhost'
|
||||
GRANT SELECT ON `ab%`.* TO 'test11'@'localhost'
|
||||
GRANT SELECT ON `a%`.* TO 'test11'@'localhost'
|
||||
alter table mysql.db order by db desc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
Grants for test11@localhost
|
||||
GRANT USAGE ON *.* TO 'test11'@'localhost'
|
||||
GRANT SELECT ON `ab%`.* TO 'test11'@'localhost'
|
||||
GRANT SELECT ON `a%`.* TO 'test11'@'localhost'
|
||||
delete from mysql.user where user='test11';
|
||||
delete from mysql.db where user='test11';
|
||||
create database mysqltest1;
|
||||
grant usage on mysqltest1.* to test6123 identified by 'magic123';
|
||||
select host,db,user,select_priv,insert_priv from mysql.db where db="mysqltest1";
|
||||
host db user select_priv insert_priv
|
||||
delete from mysql.user where user='test6123';
|
||||
drop database mysqltest1;
|
||||
create table t1 (a int);
|
||||
grant ALL PRIVILEGES on *.* to drop_user2@localhost with GRANT OPTION;
|
||||
show grants for drop_user2@localhost;
|
||||
@ -229,25 +254,6 @@ GRANT SELECT (
|
||||
REVOKE SELECT (<28><><EFBFBD>) ON <20><>.<2E><><EFBFBD> FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||||
DROP DATABASE <20><>;
|
||||
SET NAMES latin1;
|
||||
insert into mysql.user (host, user) values ('localhost', 'test11');
|
||||
insert into mysql.db (host, db, user, select_priv) values
|
||||
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
||||
alter table mysql.db order by db asc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
Grants for test11@localhost
|
||||
GRANT USAGE ON *.* TO 'test11'@'localhost'
|
||||
GRANT SELECT ON `ab%`.* TO 'test11'@'localhost'
|
||||
GRANT SELECT ON `a%`.* TO 'test11'@'localhost'
|
||||
alter table mysql.db order by db desc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
Grants for test11@localhost
|
||||
GRANT USAGE ON *.* TO 'test11'@'localhost'
|
||||
GRANT SELECT ON `ab%`.* TO 'test11'@'localhost'
|
||||
GRANT SELECT ON `a%`.* TO 'test11'@'localhost'
|
||||
delete from mysql.user where user='test11';
|
||||
delete from mysql.db where user='test11';
|
||||
USE test;
|
||||
CREATE TABLE t1 (a int );
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
|
2
mysql-test/r/have_moscow_leap_timezone.require
Normal file
2
mysql-test/r/have_moscow_leap_timezone.require
Normal file
@ -0,0 +1,2 @@
|
||||
from_unixtime(1072904422)
|
||||
2004-01-01 00:00:00
|
@ -1,4 +1,4 @@
|
||||
drop table if exists t1,t2;
|
||||
drop table if exists t1,t2,t3;
|
||||
create table t1 (a int);
|
||||
select count(a) as b from t1 where a=0 having b > 0;
|
||||
b
|
||||
@ -128,3 +128,203 @@ id description c
|
||||
1 test 0
|
||||
2 test2 0
|
||||
drop table t1,t2,t3;
|
||||
create table t1 (col1 int, col2 varchar(5), col_t1 int);
|
||||
create table t2 (col1 int, col2 varchar(5), col_t2 int);
|
||||
create table t3 (col1 int, col2 varchar(5), col_t3 int);
|
||||
insert into t1 values(10,'hello',10);
|
||||
insert into t1 values(20,'hello',20);
|
||||
insert into t1 values(30,'hello',30);
|
||||
insert into t1 values(10,'bye',10);
|
||||
insert into t1 values(10,'sam',10);
|
||||
insert into t1 values(10,'bob',10);
|
||||
insert into t2 select * from t1;
|
||||
insert into t3 select * from t1;
|
||||
select count(*) from t1 group by col1 having col1 = 10;
|
||||
count(*)
|
||||
4
|
||||
select count(*) as count_col1 from t1 group by col1 having col1 = 10;
|
||||
count_col1
|
||||
4
|
||||
select count(*) as count_col1 from t1 as tmp1 group by col1 having col1 = 10;
|
||||
count_col1
|
||||
4
|
||||
select count(*) from t1 group by col2 having col2 = 'hello';
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t1 group by col2 having col1 = 10;
|
||||
ERROR 42S22: Unknown column 'col1' in 'having clause'
|
||||
select col1 as count_col1 from t1 as tmp1 group by col1 having col1 = 10;
|
||||
count_col1
|
||||
10
|
||||
select col1 as count_col1 from t1 as tmp1 group by col1 having count_col1 = 10;
|
||||
count_col1
|
||||
10
|
||||
select col1 as count_col1 from t1 as tmp1 group by count_col1 having col1 = 10;
|
||||
count_col1
|
||||
10
|
||||
select col1 as count_col1 from t1 as tmp1 group by count_col1 having count_col1 = 10;
|
||||
count_col1
|
||||
10
|
||||
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having col1 = 10;
|
||||
count_col1 col2
|
||||
10 bob
|
||||
10 bye
|
||||
10 hello
|
||||
10 sam
|
||||
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having count_col1 = 10;
|
||||
count_col1 col2
|
||||
10 bob
|
||||
10 bye
|
||||
10 hello
|
||||
10 sam
|
||||
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having col2 = 'hello';
|
||||
count_col1 col2
|
||||
10 hello
|
||||
20 hello
|
||||
30 hello
|
||||
select col1 as count_col1,col2 as group_col2 from t1 as tmp1 group by col1,col2 having group_col2 = 'hello';
|
||||
count_col1 group_col2
|
||||
10 hello
|
||||
20 hello
|
||||
30 hello
|
||||
select sum(col1) as co12 from t1 group by col2 having col2 10;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10' at line 1
|
||||
select sum(col1) as co2, count(col2) as cc from t1 group by col1 having col1 =10;
|
||||
co2 cc
|
||||
40 4
|
||||
select t2.col2 from t2 group by t2.col1, t2.col2 having t1.col1 <= 10;
|
||||
ERROR 42S22: Unknown column 't1.col1' in 'having clause'
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having t2.col1 <= 10);
|
||||
col1
|
||||
10
|
||||
20
|
||||
30
|
||||
10
|
||||
10
|
||||
10
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2
|
||||
having t2.col1 <=
|
||||
(select min(t3.col1) from t3));
|
||||
col1
|
||||
10
|
||||
20
|
||||
30
|
||||
10
|
||||
10
|
||||
10
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having t1.col1 <= 10);
|
||||
col1
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
select t1.col1 as tmp_col from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having tmp_col <= 10);
|
||||
tmp_col
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having col_t1 <= 10);
|
||||
col1
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
select sum(col1) from t1
|
||||
group by col_t1
|
||||
having (select col_t1 from t2 where col_t1 = col_t2 order by col_t2 limit 1);
|
||||
sum(col1)
|
||||
40
|
||||
20
|
||||
30
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having col_t1 <= 10)
|
||||
having col_t1 <= 20;
|
||||
ERROR 42S22: Unknown column 'col_t1' in 'having clause'
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having col_t1 <= 10)
|
||||
group by col_t1
|
||||
having col_t1 <= 20;
|
||||
col1
|
||||
10
|
||||
select col_t1, sum(col1) from t1
|
||||
group by col_t1
|
||||
having col_t1 > 10 and
|
||||
exists (select sum(t2.col1) from t2
|
||||
group by t2.col2 having t2.col2 > 'b');
|
||||
col_t1 sum(col1)
|
||||
20 20
|
||||
30 30
|
||||
select sum(col1) from t1
|
||||
group by col_t1
|
||||
having col_t1 in (select sum(t2.col1) from t2
|
||||
group by t2.col2, t2.col1 having t2.col1 = t1.col1);
|
||||
ERROR 42S22: Unknown column 't1.col1' in 'having clause'
|
||||
select sum(col1) from t1
|
||||
group by col_t1
|
||||
having col_t1 in (select sum(t2.col1) from t2
|
||||
group by t2.col2, t2.col1 having t2.col1 = col_t1);
|
||||
sum(col1)
|
||||
40
|
||||
20
|
||||
30
|
||||
select t1.col1, t2.col1 from t1, t2 where t1.col1 = t2.col1
|
||||
group by t1.col1, t2.col1 having col1 = 2;
|
||||
ERROR 23000: Column 'col1' in having clause is ambiguous
|
||||
select t1.col1*10+t2.col1 from t1,t2 where t1.col1=t2.col1
|
||||
group by t1.col1, t2.col1 having col1 = 2;
|
||||
ERROR 23000: Column 'col1' in having clause is ambiguous
|
||||
drop table t1, t2, t3;
|
||||
create table t1 (s1 int);
|
||||
insert into t1 values (1),(2),(3);
|
||||
select count(*) from t1 group by s1 having s1 is null;
|
||||
count(*)
|
||||
select s1*0 as s1 from t1 group by s1 having s1 <> 0;
|
||||
s1
|
||||
0
|
||||
0
|
||||
0
|
||||
Warnings:
|
||||
Warning 1052 Column 's1' in having clause is ambiguous
|
||||
select s1*0 from t1 group by s1 having s1 = 0;
|
||||
s1*0
|
||||
select s1 from t1 group by 1 having 1 = 0;
|
||||
s1
|
||||
select count(s1) from t1 group by s1 having count(1+1)=2;
|
||||
count(s1)
|
||||
select count(s1) from t1 group by s1 having s1*0=0;
|
||||
count(s1)
|
||||
1
|
||||
1
|
||||
1
|
||||
select * from t1 a, t1 b group by a.s1 having s1 is null;
|
||||
ERROR 23000: Column 's1' in having clause is ambiguous
|
||||
drop table t1;
|
||||
create table t1 (s1 char character set latin1 collate latin1_german1_ci);
|
||||
insert into t1 values ('ü'),('y');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 's1' at row 1
|
||||
select s1,count(s1) from t1
|
||||
group by s1 collate latin1_swedish_ci having s1 = 'y';
|
||||
s1 count(s1)
|
||||
y 1
|
||||
drop table t1;
|
||||
|
441
mysql-test/r/information_schema.result
Normal file
441
mysql-test/r/information_schema.result
Normal file
@ -0,0 +1,441 @@
|
||||
grant all privileges on test.* to mysqltest_1@localhost;
|
||||
select * from information_schema.SCHEMATA where schema_name > 'm';
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
|
||||
NULL mysql latin1
|
||||
NULL test latin1
|
||||
select schema_name from information_schema.schemata;
|
||||
schema_name
|
||||
mysql
|
||||
test
|
||||
show databases *;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
|
||||
NULL mysql latin1
|
||||
NULL test latin1
|
||||
show databases like 't%';
|
||||
Database (t%)
|
||||
test
|
||||
show databases;
|
||||
Database
|
||||
mysql
|
||||
test
|
||||
show databases * where schema_name like 't%';
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
|
||||
NULL test latin1
|
||||
show databases * where schema_name = 't%';
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
|
||||
create database testtets;
|
||||
create table testtets.t1(a int, b VARCHAR(30), KEY string_data (b));
|
||||
create table test.t2(a int);
|
||||
create table t3(a int, KEY a_data (a));
|
||||
create table testtets.t4(a int);
|
||||
create view v1 (c) as select table_name from information_schema.TABLES;
|
||||
select * from v1;
|
||||
c
|
||||
columns_priv
|
||||
db
|
||||
func
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
help_topic
|
||||
host
|
||||
proc
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
time_zone_name
|
||||
time_zone_transition
|
||||
time_zone_transition_type
|
||||
user
|
||||
t2
|
||||
t3
|
||||
v1
|
||||
t1
|
||||
t4
|
||||
select c,table_name from v1
|
||||
left join information_schema.TABLES v2 on (v1.c=v2.table_name)
|
||||
where v1.c like "t%";
|
||||
c table_name
|
||||
tables_priv tables_priv
|
||||
time_zone time_zone
|
||||
time_zone_leap_second time_zone_leap_second
|
||||
time_zone_name time_zone_name
|
||||
time_zone_transition time_zone_transition
|
||||
time_zone_transition_type time_zone_transition_type
|
||||
t2 t2
|
||||
t3 t3
|
||||
t1 t1
|
||||
t4 t4
|
||||
select c, v2.table_name from v1
|
||||
right join information_schema.TABLES v2 on (v1.c=v2.table_name)
|
||||
where v1.c like "t%";
|
||||
c table_name
|
||||
tables_priv tables_priv
|
||||
time_zone time_zone
|
||||
time_zone_leap_second time_zone_leap_second
|
||||
time_zone_name time_zone_name
|
||||
time_zone_transition time_zone_transition
|
||||
time_zone_transition_type time_zone_transition_type
|
||||
t2 t2
|
||||
t3 t3
|
||||
t1 t1
|
||||
t4 t4
|
||||
select table_name from information_schema.TABLES
|
||||
where table_schema = "testtets" and table_name like "t%";
|
||||
table_name
|
||||
t1
|
||||
t4
|
||||
select * from information_schema.STATISTICS where TABLE_SCHEMA = "testtets";
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
|
||||
NULL testtets t1 1 testtets string_data 1 b A NULL NULL NULL YES BTREE
|
||||
show keys * where TABLE_SCHEMA Like "test%";
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
|
||||
NULL test t3 1 test a_data 1 a A NULL NULL NULL YES BTREE
|
||||
NULL testtets t1 1 testtets string_data 1 b A NULL NULL NULL YES BTREE
|
||||
show keys where INDEX_NAME = "a_data";
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t3 1 a_data 1 a A NULL NULL NULL YES BTREE
|
||||
show tables like 't%';
|
||||
Tables_in_test (t%)
|
||||
t2
|
||||
t3
|
||||
show tables * from test where table_name like 't%';
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
||||
NULL test t2
|
||||
NULL test t3
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t2 MyISAM 9 Fixed 0 0 0 21474836479 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
t3 MyISAM 9 Fixed 0 0 0 21474836479 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
v1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
show full columns from t3 like "a%";
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
a int(11) NULL YES MUL NULL select,insert,update,references
|
||||
show full columns from mysql.db like "Insert%";
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
Insert_priv enum('N','Y') utf8_bin N select,insert,update,references
|
||||
show full columns from v1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c char(64) latin1_swedish_ci select,insert,update,references
|
||||
select * from information_schema.COLUMNS where table_name="t1"
|
||||
and column_name= "a";
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME TYPE COLLATION_NAME IS_NULLABLE KEY COLUMN_DEFAULT EXTRA PRIVILEGES COMMENT
|
||||
NULL testtets t1 a 1 int 0 11 4 0 NULL int(11) NULL YES NULL select,insert,update,references
|
||||
show columns * where table_name = "t1";
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME TYPE COLLATION_NAME IS_NULLABLE KEY COLUMN_DEFAULT EXTRA PRIVILEGES COMMENT
|
||||
NULL testtets t1 a 1 int 0 11 4 0 NULL int(11) NULL YES NULL
|
||||
NULL testtets t1 b 2 varchar 30 30 30 31 latin1 varchar(30) latin1_swedish_ci YES MUL NULL
|
||||
drop view v1;
|
||||
drop tables testtets.t4, testtets.t1, t2, t3;
|
||||
drop database testtets;
|
||||
select * from information_schema.CHARACTER_SETS
|
||||
where CHARACTER_SET_NAME like 'latin1%';
|
||||
CHARACTER_SET_NAME Description DEFAULT_COLLATE_NAME Maxlen
|
||||
latin1 ISO 8859-1 West European latin1_swedish_ci 1
|
||||
SHOW CHARACTER SET LIKE 'latin1%';
|
||||
Charset Description Default collation Maxlen
|
||||
latin1 ISO 8859-1 West European latin1_swedish_ci 1
|
||||
SHOW CHARACTER SET * LIKE 'latin1%';
|
||||
CHARACTER_SET_NAME Description DEFAULT_COLLATE_NAME Maxlen
|
||||
latin1 ISO 8859-1 West European latin1_swedish_ci 1
|
||||
SHOW CHARACTER SET WHERE CHARACTER_SET_NAME like 'latin1%';
|
||||
Charset Description Default collation Maxlen
|
||||
latin1 ISO 8859-1 West European latin1_swedish_ci 1
|
||||
SHOW CHARACTER SET CHARACTER_SET_NAME WHERE CHARACTER_SET_NAME like 'latin1%';
|
||||
CHARACTER_SET_NAME
|
||||
latin1
|
||||
SHOW CHARACTER SET * WHERE CHARACTER_SET_NAME like 'latin1%';
|
||||
CHARACTER_SET_NAME Description DEFAULT_COLLATE_NAME Maxlen
|
||||
latin1 ISO 8859-1 West European latin1_swedish_ci 1
|
||||
select * from information_schema.COLLATIONS
|
||||
where COLLATION_NAME like 'latin1%';
|
||||
COLLATION_NAME Charset Id Default Compiled Sortlen
|
||||
latin1_german1_ci latin1 5 0
|
||||
latin1_swedish_ci latin1 8 Yes Yes 1
|
||||
latin1_danish_ci latin1 15 0
|
||||
latin1_german2_ci latin1 31 Yes 2
|
||||
latin1_bin latin1 47 Yes 1
|
||||
latin1_general_ci latin1 48 0
|
||||
latin1_general_cs latin1 49 0
|
||||
latin1_spanish_ci latin1 94 0
|
||||
SHOW COLLATION LIKE 'latin1%';
|
||||
Collation Charset Id Default Compiled Sortlen
|
||||
latin1_german1_ci latin1 5 0
|
||||
latin1_swedish_ci latin1 8 Yes Yes 1
|
||||
latin1_danish_ci latin1 15 0
|
||||
latin1_german2_ci latin1 31 Yes 2
|
||||
latin1_bin latin1 47 Yes 1
|
||||
latin1_general_ci latin1 48 0
|
||||
latin1_general_cs latin1 49 0
|
||||
latin1_spanish_ci latin1 94 0
|
||||
SHOW COLLATION * LIKE 'latin1%';
|
||||
COLLATION_NAME Charset Id Default Compiled Sortlen
|
||||
latin1_german1_ci latin1 5 0
|
||||
latin1_swedish_ci latin1 8 Yes Yes 1
|
||||
latin1_danish_ci latin1 15 0
|
||||
latin1_german2_ci latin1 31 Yes 2
|
||||
latin1_bin latin1 47 Yes 1
|
||||
latin1_general_ci latin1 48 0
|
||||
latin1_general_cs latin1 49 0
|
||||
latin1_spanish_ci latin1 94 0
|
||||
SHOW COLLATION WHERE COLLATION_NAME like 'latin1%';
|
||||
Collation Charset Id Default Compiled Sortlen
|
||||
latin1_german1_ci latin1 5 0
|
||||
latin1_swedish_ci latin1 8 Yes Yes 1
|
||||
latin1_danish_ci latin1 15 0
|
||||
latin1_german2_ci latin1 31 Yes 2
|
||||
latin1_bin latin1 47 Yes 1
|
||||
latin1_general_ci latin1 48 0
|
||||
latin1_general_cs latin1 49 0
|
||||
latin1_spanish_ci latin1 94 0
|
||||
SHOW COLLATION COLLATION_NAME WHERE COLLATION_NAME like 'latin1%';
|
||||
COLLATION_NAME
|
||||
latin1_german1_ci
|
||||
latin1_swedish_ci
|
||||
latin1_danish_ci
|
||||
latin1_german2_ci
|
||||
latin1_bin
|
||||
latin1_general_ci
|
||||
latin1_general_cs
|
||||
latin1_spanish_ci
|
||||
SHOW COLLATION * WHERE COLLATION_NAME like 'latin1%';
|
||||
COLLATION_NAME Charset Id Default Compiled Sortlen
|
||||
latin1_german1_ci latin1 5 0
|
||||
latin1_swedish_ci latin1 8 Yes Yes 1
|
||||
latin1_danish_ci latin1 15 0
|
||||
latin1_german2_ci latin1 31 Yes 2
|
||||
latin1_bin latin1 47 Yes 1
|
||||
latin1_general_ci latin1 48 0
|
||||
latin1_general_cs latin1 49 0
|
||||
latin1_spanish_ci latin1 94 0
|
||||
select * from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY
|
||||
where COLLATION_NAME like 'latin1%';
|
||||
COLLATION_NAME CHARACTER_SET_NAME
|
||||
latin1_german1_ci latin1
|
||||
latin1_swedish_ci latin1
|
||||
latin1_danish_ci latin1
|
||||
latin1_german2_ci latin1
|
||||
latin1_bin latin1
|
||||
latin1_general_ci latin1
|
||||
latin1_general_cs latin1
|
||||
latin1_spanish_ci latin1
|
||||
create function sub1(i int) returns int
|
||||
return i+1;
|
||||
create procedure sel2()
|
||||
begin
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
end|
|
||||
show procedure status;
|
||||
Db Name Type Definer Modified Created Security_type Comment
|
||||
test sel2 PROCEDURE root@localhost # # DEFINER
|
||||
show function status;
|
||||
Db Name Type Definer Modified Created Security_type Comment
|
||||
test sub1 FUNCTION root@localhost # # DEFINER
|
||||
select a.ROUTINE_NAME from information_schema.ROUTINES a,
|
||||
information_schema.SCHEMATA b where
|
||||
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
|
||||
ROUTINE_NAME
|
||||
sel2
|
||||
sub1
|
||||
explain select a.ROUTINE_NAME from information_schema.ROUTINES a,
|
||||
information_schema.SCHEMATA b where
|
||||
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE # ALL NULL NULL NULL NULL 2
|
||||
1 SIMPLE # ALL NULL NULL NULL NULL 2 Using where
|
||||
select a.ROUTINE_NAME, b.name from information_schema.ROUTINES a,
|
||||
mysql.proc b where a.ROUTINE_NAME = b.name;
|
||||
ROUTINE_NAME name
|
||||
sub1 sub1
|
||||
sel2 sel2
|
||||
select count(*) from information_schema.ROUTINES;
|
||||
count(*)
|
||||
2
|
||||
create view v0 (c) as select schema_name from information_schema.SCHEMATA;
|
||||
select * from v0;
|
||||
c
|
||||
mysql
|
||||
test
|
||||
explain select * from v0;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY # ALL NULL NULL NULL NULL 2
|
||||
create view v1 (c) as select table_name from information_schema.TABLES
|
||||
where table_name="v1";
|
||||
select * from v1;
|
||||
c
|
||||
v1
|
||||
create view v2 (c) as select column_name from information_schema.COLUMNS
|
||||
where table_name="v2";
|
||||
select * from v2;
|
||||
c
|
||||
c
|
||||
create view v3 (c) as select CHARACTER_SET_NAME from information_schema.CHARACTER_SETS
|
||||
where CHARACTER_SET_NAME like "latin1%";
|
||||
select * from v3;
|
||||
c
|
||||
latin1
|
||||
create view v4 (c) as select COLLATION_NAME from information_schema.COLLATIONS
|
||||
where COLLATION_NAME like "latin1%";
|
||||
select * from v4;
|
||||
c
|
||||
latin1_german1_ci
|
||||
latin1_swedish_ci
|
||||
latin1_danish_ci
|
||||
latin1_german2_ci
|
||||
latin1_bin
|
||||
latin1_general_ci
|
||||
latin1_general_cs
|
||||
latin1_spanish_ci
|
||||
show keys from v4;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
select * from information_schema.VIEWS where TABLE_NAME like "v%";
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE
|
||||
NULL test v0 select `SCHEMATA`.`SCHEMA_NAME` AS `c` from `information_schema`.`SCHEMATA` NONE NO
|
||||
NULL test v1 select `TABLES`.`TABLE_NAME` AS `c` from `information_schema`.`TABLES` where (`TABLES`.`TABLE_NAME` = _latin1'v1') NONE NO
|
||||
NULL test v2 select `COLUMNS`.`COLUMN_NAME` AS `c` from `information_schema`.`COLUMNS` where (`COLUMNS`.`TABLE_NAME` = _latin1'v2') NONE NO
|
||||
NULL test v3 select `CHARACTER_SETS`.`CHARACTER_SET_NAME` AS `c` from `information_schema`.`CHARACTER_SETS` where (`CHARACTER_SETS`.`CHARACTER_SET_NAME` like _latin1'latin1%') NONE NO
|
||||
NULL test v4 select `COLLATIONS`.`COLLATION_NAME` AS `c` from `information_schema`.`COLLATIONS` where (`COLLATIONS`.`COLLATION_NAME` like _latin1'latin1%') NONE NO
|
||||
drop view v0, v1, v2, v3, v4;
|
||||
create table t1 (a int);
|
||||
grant select,update,insert on t1 to mysqltest_1@localhost;
|
||||
grant select (a), update (a),insert(a), references(a) on t1 to mysqltest_1@localhost;
|
||||
grant all on test.* to mysqltest_1@localhost with grant option;
|
||||
select * from information_schema.USER_PRIVILEGES where grantee like '%mysqltest_1%';
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'mysqltest_1'@'localhost' NULL USAGE NO
|
||||
select * from information_schema.SCHEMA_PRIVILEGES where grantee like '%mysqltest_1%';
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'mysqltest_1'@'localhost' NULL test SELECT YES
|
||||
'mysqltest_1'@'localhost' NULL test INSERT YES
|
||||
'mysqltest_1'@'localhost' NULL test UPDATE YES
|
||||
'mysqltest_1'@'localhost' NULL test DELETE YES
|
||||
'mysqltest_1'@'localhost' NULL test CREATE YES
|
||||
'mysqltest_1'@'localhost' NULL test DROP YES
|
||||
'mysqltest_1'@'localhost' NULL test REFERENCES YES
|
||||
'mysqltest_1'@'localhost' NULL test INDEX YES
|
||||
'mysqltest_1'@'localhost' NULL test ALTER YES
|
||||
'mysqltest_1'@'localhost' NULL test CREATE TEMPORARY TABLES YES
|
||||
'mysqltest_1'@'localhost' NULL test LOCK TABLES YES
|
||||
'mysqltest_1'@'localhost' NULL test CREATE VIEW YES
|
||||
'mysqltest_1'@'localhost' NULL test SHOW VIEW YES
|
||||
select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest_1%';
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'mysqltest_1'@'localhost' NULL test t1 SELECT NO
|
||||
'mysqltest_1'@'localhost' NULL test t1 INSERT NO
|
||||
'mysqltest_1'@'localhost' NULL test t1 UPDATE NO
|
||||
select * from information_schema.COLUMN_PRIVILEGES where grantee like '%mysqltest_1%';
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'mysqltest_1'@'localhost' NULL test t1 a SELECT NO
|
||||
'mysqltest_1'@'localhost' NULL test t1 a INSERT NO
|
||||
'mysqltest_1'@'localhost' NULL test t1 a UPDATE NO
|
||||
'mysqltest_1'@'localhost' NULL test t1 a REFERENCES NO
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
delete from mysql.db where user='mysqltest_1';
|
||||
delete from mysql.tables_priv where user='mysqltest_1';
|
||||
delete from mysql.columns_priv where user='mysqltest_1';
|
||||
flush privileges;
|
||||
drop table t1;
|
||||
create table t1 (a int null, primary key(a));
|
||||
alter table t1 add constraint constraint_1 unique (a);
|
||||
alter table t1 add constraint unique key_1(a);
|
||||
alter table t1 add constraint constraint_2 unique key_2(a);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`a`),
|
||||
UNIQUE KEY `constraint_1` (`a`),
|
||||
UNIQUE KEY `key_1` (`a`),
|
||||
UNIQUE KEY `key_2` (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
select * from information_schema.TABLE_CONSTRAINTS where
|
||||
TABLE_SCHEMA= "test";
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_METHOD
|
||||
NULL test PRIMARY test t1 PRIMARY KEY NULL
|
||||
NULL test constraint_1 test t1 UNIQUE NULL
|
||||
NULL test key_1 test t1 UNIQUE NULL
|
||||
NULL test key_2 test t1 UNIQUE NULL
|
||||
select * from information_schema.KEY_COLUMN_USAGE where
|
||||
TABLE_SCHEMA= "test";
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||
NULL test PRIMARY test t1 a 1 NULL NULL NULL
|
||||
NULL test constraint_1 test t1 a 1 NULL NULL NULL
|
||||
NULL test key_1 test t1 a 1 NULL NULL NULL
|
||||
NULL test key_2 test t1 a 1 NULL NULL NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id),
|
||||
FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (t1_id) REFERENCES t1(id) ON UPDATE CASCADE) ENGINE=INNODB;
|
||||
select * from information_schema.TABLE_CONSTRAINTS where
|
||||
TABLE_SCHEMA= "test";
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_METHOD
|
||||
NULL test PRIMARY test t1 PRIMARY KEY NULL
|
||||
NULL test PRIMARY test t2 PRIMARY KEY NULL
|
||||
NULL test t2_ibfk_1 test t2 FOREIGN KEY ON DELETE CASCADE
|
||||
NULL test t2_ibfk_2 test t2 FOREIGN KEY ON UPDATE CASCADE
|
||||
select * from information_schema.KEY_COLUMN_USAGE where
|
||||
TABLE_SCHEMA= "test";
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||
NULL test PRIMARY test t1 id 1 NULL NULL NULL
|
||||
NULL test PRIMARY test t2 id 1 NULL NULL NULL
|
||||
NULL test t2_ibfk_1 test t2 t1_id 1 test t1 id
|
||||
NULL test t2_ibfk_2 test t2 t1_id 1 test t1 id
|
||||
select table_name from information_schema.TABLES where table_schema like "test%";
|
||||
table_name
|
||||
t1
|
||||
t2
|
||||
select table_name,column_name from information_schema.COLUMNS where table_schema like "test%";
|
||||
table_name column_name
|
||||
t1 id
|
||||
t2 id
|
||||
t2 t1_id
|
||||
select ROUTINE_NAME from information_schema.ROUTINES;
|
||||
ROUTINE_NAME
|
||||
sel2
|
||||
sub1
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop procedure sel2;
|
||||
drop function sub1;
|
||||
create table t1(a int);
|
||||
create view v1 (c) as select a from t1 with check option;
|
||||
create view v2 (c) as select a from t1 WITH LOCAL CHECK OPTION;
|
||||
create view v3 (c) as select a from t1 WITH CASCADED CHECK OPTION;
|
||||
select * from information_schema.views;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE
|
||||
NULL test v1 select `test`.`t1`.`a` AS `c` from `test`.`t1` WITH CASCADED CHECK OPTION YES
|
||||
NULL test v2 select `test`.`t1`.`a` AS `c` from `test`.`t1` WITH LOCAL CHECK OPTION YES
|
||||
NULL test v3 select `test`.`t1`.`a` AS `c` from `test`.`t1` WITH CASCADED CHECK OPTION YES
|
||||
grant select (a) on test.t1 to joe@localhost with grant option;
|
||||
select * from INFORMATION_SCHEMA.COLUMN_PRIVILEGES;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'joe'@'localhost' NULL test t1 a SELECT YES
|
||||
select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'joe'@'localhost' NULL test t1 USAGE YES
|
||||
drop view v1, v2, v3;
|
||||
drop table t1;
|
||||
delete from mysql.user where user='joe';
|
||||
delete from mysql.db where user='joe';
|
||||
delete from mysql.tables_priv where user='joe';
|
||||
delete from mysql.columns_priv where user='joe';
|
||||
flush privileges;
|
||||
create procedure px5 ()
|
||||
begin
|
||||
declare v int;
|
||||
declare c cursor for select version from
|
||||
information_schema.tables;
|
||||
open c;
|
||||
fetch c into v;
|
||||
select v;
|
||||
close c;
|
||||
end;//
|
||||
call px5()//
|
||||
v
|
||||
9
|
||||
call px5()//
|
||||
v
|
||||
9
|
@ -4,11 +4,11 @@ DROP DATABASE IF EXISTS `test_$1`;
|
||||
CREATE TABLE T1 (a int);
|
||||
INSERT INTO T1 VALUES (1);
|
||||
SHOW TABLES LIKE "T1";
|
||||
Tables_in_test (T1) table_type
|
||||
T1 BASE TABLE
|
||||
Tables_in_test (T1)
|
||||
T1
|
||||
SHOW TABLES LIKE "t1";
|
||||
Tables_in_test (t1) table_type
|
||||
T1 BASE TABLE
|
||||
Tables_in_test (t1)
|
||||
T1
|
||||
SHOW CREATE TABLE T1;
|
||||
Table Create Table
|
||||
T1 CREATE TABLE `T1` (
|
||||
@ -16,37 +16,37 @@ T1 CREATE TABLE `T1` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
RENAME TABLE T1 TO T2;
|
||||
SHOW TABLES LIKE "T2";
|
||||
Tables_in_test (T2) table_type
|
||||
T2 BASE TABLE
|
||||
Tables_in_test (T2)
|
||||
T2
|
||||
SELECT * FROM t2;
|
||||
a
|
||||
1
|
||||
RENAME TABLE T2 TO t3;
|
||||
SHOW TABLES LIKE "T3";
|
||||
Tables_in_test (T3) table_type
|
||||
t3 BASE TABLE
|
||||
Tables_in_test (T3)
|
||||
t3
|
||||
RENAME TABLE T3 TO T1;
|
||||
SHOW TABLES LIKE "T1";
|
||||
Tables_in_test (T1) table_type
|
||||
T1 BASE TABLE
|
||||
Tables_in_test (T1)
|
||||
T1
|
||||
ALTER TABLE T1 add b int;
|
||||
SHOW TABLES LIKE "T1";
|
||||
Tables_in_test (T1) table_type
|
||||
T1 BASE TABLE
|
||||
Tables_in_test (T1)
|
||||
T1
|
||||
ALTER TABLE T1 RENAME T2;
|
||||
SHOW TABLES LIKE "T2";
|
||||
Tables_in_test (T2) table_type
|
||||
T2 BASE TABLE
|
||||
Tables_in_test (T2)
|
||||
T2
|
||||
LOCK TABLE T2 WRITE;
|
||||
ALTER TABLE T2 drop b;
|
||||
SHOW TABLES LIKE "T2";
|
||||
Tables_in_test (T2) table_type
|
||||
T2 BASE TABLE
|
||||
Tables_in_test (T2)
|
||||
T2
|
||||
UNLOCK TABLES;
|
||||
RENAME TABLE T2 TO T1;
|
||||
SHOW TABLES LIKE "T1";
|
||||
Tables_in_test (T1) table_type
|
||||
T1 BASE TABLE
|
||||
Tables_in_test (T1)
|
||||
T1
|
||||
SELECT * from T1;
|
||||
a
|
||||
1
|
||||
@ -59,11 +59,11 @@ DROP DATABASE `test_$1`;
|
||||
CREATE TABLE T1 (a int) engine=innodb;
|
||||
INSERT INTO T1 VALUES (1);
|
||||
SHOW TABLES LIKE "T1";
|
||||
Tables_in_test (T1) table_type
|
||||
T1 BASE TABLE
|
||||
Tables_in_test (T1)
|
||||
T1
|
||||
SHOW TABLES LIKE "t1";
|
||||
Tables_in_test (t1) table_type
|
||||
T1 BASE TABLE
|
||||
Tables_in_test (t1)
|
||||
T1
|
||||
SHOW CREATE TABLE T1;
|
||||
Table Create Table
|
||||
T1 CREATE TABLE `T1` (
|
||||
@ -71,37 +71,37 @@ T1 CREATE TABLE `T1` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
RENAME TABLE T1 TO T2;
|
||||
SHOW TABLES LIKE "T2";
|
||||
Tables_in_test (T2) table_type
|
||||
t2 BASE TABLE
|
||||
Tables_in_test (T2)
|
||||
t2
|
||||
SELECT * FROM t2;
|
||||
a
|
||||
1
|
||||
RENAME TABLE T2 TO t3;
|
||||
SHOW TABLES LIKE "T3";
|
||||
Tables_in_test (T3) table_type
|
||||
t3 BASE TABLE
|
||||
Tables_in_test (T3)
|
||||
t3
|
||||
RENAME TABLE T3 TO T1;
|
||||
SHOW TABLES LIKE "T1";
|
||||
Tables_in_test (T1) table_type
|
||||
t1 BASE TABLE
|
||||
Tables_in_test (T1)
|
||||
t1
|
||||
ALTER TABLE T1 add b int;
|
||||
SHOW TABLES LIKE "T1";
|
||||
Tables_in_test (T1) table_type
|
||||
t1 BASE TABLE
|
||||
Tables_in_test (T1)
|
||||
t1
|
||||
ALTER TABLE T1 RENAME T2;
|
||||
SHOW TABLES LIKE "T2";
|
||||
Tables_in_test (T2) table_type
|
||||
t2 BASE TABLE
|
||||
Tables_in_test (T2)
|
||||
t2
|
||||
LOCK TABLE T2 WRITE;
|
||||
ALTER TABLE T2 drop b;
|
||||
SHOW TABLES LIKE "T2";
|
||||
Tables_in_test (T2) table_type
|
||||
t2 BASE TABLE
|
||||
Tables_in_test (T2)
|
||||
t2
|
||||
UNLOCK TABLES;
|
||||
RENAME TABLE T2 TO T1;
|
||||
SHOW TABLES LIKE "T1";
|
||||
Tables_in_test (T1) table_type
|
||||
t1 BASE TABLE
|
||||
Tables_in_test (T1)
|
||||
t1
|
||||
SELECT * from T1;
|
||||
a
|
||||
1
|
||||
@ -124,10 +124,10 @@ drop table T1;
|
||||
create table T1 (A int);
|
||||
alter table T1 add index (A);
|
||||
show tables like 'T1%';
|
||||
Tables_in_test (T1%) table_type
|
||||
T1 BASE TABLE
|
||||
Tables_in_test (T1%)
|
||||
T1
|
||||
alter table t1 add index (A);
|
||||
show tables like 't1%';
|
||||
Tables_in_test (t1%) table_type
|
||||
t1 BASE TABLE
|
||||
Tables_in_test (t1%)
|
||||
t1
|
||||
drop table t1;
|
||||
|
@ -5,7 +5,7 @@ def 1 8 1 1 N 32769 0 8
|
||||
def 1.0 5 3 3 N 32769 1 8
|
||||
def -1 8 1 2 N 32769 0 8
|
||||
def hello 254 5 5 N 1 31 8
|
||||
def NULL 6 0 0 Y 32768 0 8
|
||||
def NULL 6 0 0 Y 32896 0 63
|
||||
1 1.0 -1 hello NULL
|
||||
1 1.0 -1 hello NULL
|
||||
create table t1 (a tinyint, b smallint, c mediumint, d int, e bigint, f float(3,2), g double(4,3), h decimal(5,4), i year, j date, k timestamp, l datetime, m enum('a','b'), n set('a','b'), o char(10));
|
||||
|
@ -180,4 +180,25 @@ master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(16)
|
||||
master-bin.000001 239 Query 1 # use `test`; insert into t1 values(18)
|
||||
master-bin.000001 321 Query 1 # use `test`; COMMIT
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
alter table t2 type=MyISAM;
|
||||
insert into t1 values (1);
|
||||
begin;
|
||||
select * from t1 for update;
|
||||
a
|
||||
1
|
||||
select (@before:=unix_timestamp())*0;
|
||||
(@before:=unix_timestamp())*0
|
||||
0
|
||||
begin;
|
||||
select * from t1 for update;
|
||||
insert into t2 values (20);
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
select (@after:=unix_timestamp())*0;
|
||||
(@after:=unix_timestamp())*0
|
||||
0
|
||||
select (@after-@before) >= 2;
|
||||
(@after-@before) >= 2
|
||||
1
|
||||
drop table t1,t2;
|
||||
|
@ -1,4 +1,4 @@
|
||||
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,t10;
|
||||
flush status;
|
||||
create table t1(
|
||||
id int not null primary key,
|
||||
@ -363,3 +363,8 @@ a int NOT NULL PRIMARY KEY,
|
||||
b int
|
||||
) engine=ndb;
|
||||
insert t9 values(1, 2), (2,3), (3, 4), (4, 5);
|
||||
create table t10 (
|
||||
a int not null primary key,
|
||||
b blob
|
||||
) engine=ndb;
|
||||
insert into t10 values (1, 'kalle');
|
||||
|
@ -8,3 +8,6 @@ show status like 'handler_discover%';
|
||||
Variable_name Value
|
||||
Handler_discover 1
|
||||
drop table t9;
|
||||
select * from t10;
|
||||
ERROR HY000: Got error 4263 'Invalid blob attributes or invalid blob parts table' from ndbcluster
|
||||
drop table t10;
|
||||
|
@ -400,6 +400,13 @@ b attr1
|
||||
9413 9412
|
||||
drop table test.t1, t2;
|
||||
drop database mysqltest;
|
||||
drop database if exists ndbtest1;
|
||||
create database ndbtest1;
|
||||
use ndbtest1;
|
||||
create table t1(id int) engine=ndbcluster;
|
||||
drop database ndbtest1;
|
||||
drop database ndbtest1;
|
||||
ERROR HY000: Can't drop database 'ndbtest1'; database doesn't exist
|
||||
use test;
|
||||
create table t1 (a int primary key, b char(0));
|
||||
insert into t1 values (1,"");
|
||||
|
@ -1,4 +1,4 @@
|
||||
drop table if exists t1;
|
||||
drop table if exists t1, test1, test2;
|
||||
CREATE TABLE t1 (
|
||||
a int unsigned NOT NULL PRIMARY KEY,
|
||||
b int unsigned not null,
|
||||
@ -275,3 +275,38 @@ a b c
|
||||
1 1 1
|
||||
4 4 NULL
|
||||
drop table t1;
|
||||
CREATE TABLE test1 (
|
||||
SubscrID int(11) NOT NULL auto_increment,
|
||||
UsrID int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (SubscrID),
|
||||
KEY idx_usrid (UsrID)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||
INSERT INTO test1 VALUES (2,224),(3,224),(1,224);
|
||||
CREATE TABLE test2 (
|
||||
SbclID int(11) NOT NULL auto_increment,
|
||||
SbcrID int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (SbclID),
|
||||
KEY idx_sbcrid (SbcrID)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||
INSERT INTO test2 VALUES (3,2),(1,1),(2,1),(4,2);
|
||||
select * from test1 order by 1;
|
||||
SubscrID UsrID
|
||||
1 224
|
||||
2 224
|
||||
3 224
|
||||
select * from test2 order by 1;
|
||||
SbclID SbcrID
|
||||
1 1
|
||||
2 1
|
||||
3 2
|
||||
4 2
|
||||
SELECT s.SubscrID,l.SbclID FROM test1 s left JOIN test2 l ON
|
||||
l.SbcrID=s.SubscrID WHERE s.UsrID=224 order by 1, 2;
|
||||
SubscrID SbclID
|
||||
1 1
|
||||
1 2
|
||||
2 3
|
||||
2 4
|
||||
3 NULL
|
||||
drop table test1;
|
||||
drop table test2;
|
||||
|
@ -184,3 +184,97 @@ select count(*) from t1 where i=2 or i is null;
|
||||
count(*)
|
||||
9
|
||||
drop table t1;
|
||||
set names latin2;
|
||||
create table t1 select
|
||||
null as c00,
|
||||
if(1, null, 'string') as c01,
|
||||
if(0, null, 'string') as c02,
|
||||
ifnull(null, 'string') as c03,
|
||||
ifnull('string', null) as c04,
|
||||
case when 0 then null else 'string' end as c05,
|
||||
case when 1 then null else 'string' end as c06,
|
||||
coalesce(null, 'string') as c07,
|
||||
coalesce('string', null) as c08,
|
||||
least('string',null) as c09,
|
||||
least(null, 'string') as c10,
|
||||
greatest('string',null) as c11,
|
||||
greatest(null, 'string') as c12,
|
||||
nullif('string', null) as c13,
|
||||
nullif(null, 'string') as c14,
|
||||
trim('string' from null) as c15,
|
||||
trim(null from 'string') as c16,
|
||||
substring_index('string', null, 1) as c17,
|
||||
substring_index(null, 'string', 1) as c18,
|
||||
elt(1, null, 'string') as c19,
|
||||
elt(1, 'string', null) as c20,
|
||||
concat('string', null) as c21,
|
||||
concat(null, 'string') as c22,
|
||||
concat_ws('sep', 'string', null) as c23,
|
||||
concat_ws('sep', null, 'string') as c24,
|
||||
concat_ws(null, 'string', 'string') as c25,
|
||||
make_set(3, 'string', null) as c26,
|
||||
make_set(3, null, 'string') as c27,
|
||||
export_set(3, null, 'off', 'sep') as c29,
|
||||
export_set(3, 'on', null, 'sep') as c30,
|
||||
export_set(3, 'on', 'off', null) as c31,
|
||||
replace(null, 'from', 'to') as c32,
|
||||
replace('str', null, 'to') as c33,
|
||||
replace('str', 'from', null) as c34,
|
||||
insert('str', 1, 2, null) as c35,
|
||||
insert(null, 1, 2, 'str') as c36,
|
||||
lpad('str', 10, null) as c37,
|
||||
rpad(null, 10, 'str') as c38;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c00` binary(0) default NULL,
|
||||
`c01` varchar(6) character set latin2 default NULL,
|
||||
`c02` varchar(6) character set latin2 default NULL,
|
||||
`c03` varchar(6) character set latin2 NOT NULL default '',
|
||||
`c04` varchar(6) character set latin2 default NULL,
|
||||
`c05` varchar(6) character set latin2 default NULL,
|
||||
`c06` varchar(6) character set latin2 default NULL,
|
||||
`c07` varchar(6) character set latin2 default NULL,
|
||||
`c08` varchar(6) character set latin2 default NULL,
|
||||
`c09` varchar(6) character set latin2 NOT NULL default '',
|
||||
`c10` varchar(6) character set latin2 NOT NULL default '',
|
||||
`c11` varchar(6) character set latin2 NOT NULL default '',
|
||||
`c12` varchar(6) character set latin2 NOT NULL default '',
|
||||
`c13` varchar(6) character set latin2 default NULL,
|
||||
`c14` char(0) character set latin2 default NULL,
|
||||
`c15` char(0) character set latin2 default NULL,
|
||||
`c16` varchar(6) character set latin2 default NULL,
|
||||
`c17` varchar(6) character set latin2 default NULL,
|
||||
`c18` char(0) character set latin2 default NULL,
|
||||
`c19` varchar(6) character set latin2 default NULL,
|
||||
`c20` varchar(6) character set latin2 default NULL,
|
||||
`c21` varchar(6) character set latin2 default NULL,
|
||||
`c22` varchar(6) character set latin2 default NULL,
|
||||
`c23` varchar(9) character set latin2 default NULL,
|
||||
`c24` varchar(9) character set latin2 default NULL,
|
||||
`c25` varchar(12) character set latin2 default NULL,
|
||||
`c26` varchar(7) character set latin2 default NULL,
|
||||
`c27` varchar(7) character set latin2 default NULL,
|
||||
`c29` longtext character set latin2,
|
||||
`c30` longtext character set latin2,
|
||||
`c31` varchar(192) character set latin2 default NULL,
|
||||
`c32` char(0) character set latin2 default NULL,
|
||||
`c33` char(3) character set latin2 default NULL,
|
||||
`c34` char(3) character set latin2 default NULL,
|
||||
`c35` char(3) character set latin2 default NULL,
|
||||
`c36` char(3) character set latin2 default NULL,
|
||||
`c37` varchar(10) character set latin2 default NULL,
|
||||
`c38` varchar(10) character set latin2 default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
select
|
||||
case 'str' when 'STR' then 'str' when null then 'null' end as c01,
|
||||
case 'str' when null then 'null' when 'STR' then 'str' end as c02,
|
||||
field(null, 'str1', 'str2') as c03,
|
||||
field('str1','STR1', null) as c04,
|
||||
field('str1', null, 'STR1') as c05,
|
||||
'string' in ('STRING', null) as c08,
|
||||
'string' in (null, 'STRING') as c09;
|
||||
c01 c02 c03 c04 c05 c08 c09
|
||||
str str 0 1 2 1 1
|
||||
set names latin1;
|
||||
|
@ -1,4 +1,5 @@
|
||||
use test;
|
||||
drop table if exists t5, t6, t7, t8;
|
||||
drop database if exists mysqltest ;
|
||||
test_sequence
|
||||
------ basic tests ------
|
||||
drop table if exists t1, t9 ;
|
||||
@ -553,7 +554,6 @@ execute stmt3;
|
||||
ERROR 42S01: Table 'new_t2' already exists
|
||||
rename table new_t2 to t2;
|
||||
drop table t2;
|
||||
drop table if exists t5, t6, t7, t8 ;
|
||||
prepare stmt1 from ' rename table t5 to t6, t7 to t8 ' ;
|
||||
create table t5 (a int) ;
|
||||
execute stmt1 ;
|
||||
@ -805,21 +805,24 @@ test_sequence
|
||||
------ grant/revoke/drop affects a parallel session test ------
|
||||
show grants for second_user@localhost ;
|
||||
ERROR 42000: There is no such grant defined for user 'second_user' on host 'localhost'
|
||||
grant usage on test.* to second_user@localhost
|
||||
create database mysqltest;
|
||||
use mysqltest;
|
||||
use test;
|
||||
grant usage on mysqltest.* to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
grant select on test.t9 to second_user@localhost
|
||||
grant select on mysqltest.t9 to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `test`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
select current_user();
|
||||
current_user()
|
||||
second_user@localhost
|
||||
show grants for current_user();
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `test`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
prepare s_t9 from 'select c1 as my_col
|
||||
from t9 where c1= 1' ;
|
||||
execute s_t9 ;
|
||||
@ -827,24 +830,24 @@ my_col
|
||||
1
|
||||
select a as my_col from t1;
|
||||
ERROR 42000: select command denied to user 'second_user'@'localhost' for table 't1'
|
||||
grant select on test.t1 to second_user@localhost
|
||||
grant select on mysqltest.t1 to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `test`.`t1` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `test`.`t9` TO 'second_user'@'localhost'
|
||||
drop table t9 ;
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
||||
drop table mysqltest.t9 ;
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `test`.`t1` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `test`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `test`.`t1` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `test`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
||||
prepare s_t1 from 'select a as my_col from t1' ;
|
||||
execute s_t1 ;
|
||||
my_col
|
||||
@ -853,17 +856,17 @@ my_col
|
||||
3
|
||||
4
|
||||
execute s_t9 ;
|
||||
ERROR 42S02: Table 'test.t9' doesn't exist
|
||||
revoke all privileges on test.t1 from second_user@localhost
|
||||
ERROR 42S02: Table 'mysqltest.t9' doesn't exist
|
||||
revoke all privileges on mysqltest.t1 from second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `test`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `test`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
execute s_t1 ;
|
||||
ERROR 42000: select command denied to user 'second_user'@'localhost' for table 't1'
|
||||
revoke all privileges, grant option from second_user@localhost ;
|
||||
@ -874,4 +877,5 @@ drop user second_user@localhost ;
|
||||
commit ;
|
||||
show grants for second_user@localhost ;
|
||||
ERROR 42000: There is no such grant defined for user 'second_user' on host 'localhost'
|
||||
drop table t1 ;
|
||||
drop table t1,t9 ;
|
||||
drop database mysqltest;
|
||||
|
@ -1789,7 +1789,7 @@ t5 CREATE TABLE `t5` (
|
||||
`param10` bigint(20) default NULL,
|
||||
`const11` int(4) default NULL,
|
||||
`param11` bigint(20) default NULL,
|
||||
`const12` char(0) default NULL,
|
||||
`const12` binary(0) default NULL,
|
||||
`param12` bigint(20) default NULL,
|
||||
`param13` double default NULL,
|
||||
`param14` longtext,
|
||||
@ -1819,7 +1819,7 @@ def test t5 t5 const10 const10 3 10 9 N 32769 0 63
|
||||
def test t5 t5 param10 param10 8 20 9 Y 32768 0 63
|
||||
def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
|
||||
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
|
||||
def test t5 t5 const12 const12 254 0 0 Y 0 0 8
|
||||
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
|
||||
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
|
||||
def test t5 t5 param13 param13 5 20 0 Y 32768 31 63
|
||||
def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8
|
||||
|
@ -1772,7 +1772,7 @@ t5 CREATE TABLE `t5` (
|
||||
`param10` bigint(20) default NULL,
|
||||
`const11` int(4) default NULL,
|
||||
`param11` bigint(20) default NULL,
|
||||
`const12` char(0) default NULL,
|
||||
`const12` binary(0) default NULL,
|
||||
`param12` bigint(20) default NULL,
|
||||
`param13` double default NULL,
|
||||
`param14` longtext,
|
||||
@ -1802,7 +1802,7 @@ def test t5 t5 const10 const10 3 10 9 N 32769 0 63
|
||||
def test t5 t5 param10 param10 8 20 9 Y 32768 0 63
|
||||
def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
|
||||
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
|
||||
def test t5 t5 const12 const12 254 0 0 Y 0 0 8
|
||||
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
|
||||
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
|
||||
def test t5 t5 param13 param13 5 20 0 Y 32768 31 63
|
||||
def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8
|
||||
|
@ -1773,7 +1773,7 @@ t5 CREATE TABLE `t5` (
|
||||
`param10` bigint(20) default NULL,
|
||||
`const11` int(4) default NULL,
|
||||
`param11` bigint(20) default NULL,
|
||||
`const12` char(0) default NULL,
|
||||
`const12` binary(0) default NULL,
|
||||
`param12` bigint(20) default NULL,
|
||||
`param13` double default NULL,
|
||||
`param14` longtext,
|
||||
@ -1803,7 +1803,7 @@ def test t5 t5 const10 const10 3 10 9 N 32769 0 63
|
||||
def test t5 t5 param10 param10 8 20 9 Y 32768 0 63
|
||||
def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
|
||||
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
|
||||
def test t5 t5 const12 const12 254 0 0 Y 0 0 8
|
||||
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
|
||||
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
|
||||
def test t5 t5 param13 param13 5 20 0 Y 32768 31 63
|
||||
def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8
|
||||
|
@ -1712,7 +1712,7 @@ t5 CREATE TABLE `t5` (
|
||||
`param10` bigint(20) default NULL,
|
||||
`const11` int(4) default NULL,
|
||||
`param11` bigint(20) default NULL,
|
||||
`const12` char(0) default NULL,
|
||||
`const12` binary(0) default NULL,
|
||||
`param12` bigint(20) default NULL,
|
||||
`param13` double default NULL,
|
||||
`param14` longtext,
|
||||
@ -1742,7 +1742,7 @@ def test t5 t5 const10 const10 3 10 9 N 32769 0 63
|
||||
def test t5 t5 param10 param10 8 20 9 Y 32768 0 63
|
||||
def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
|
||||
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
|
||||
def test t5 t5 const12 const12 254 0 0 Y 0 0 8
|
||||
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
|
||||
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
|
||||
def test t5 t5 param13 param13 5 20 0 Y 32768 31 63
|
||||
def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8
|
||||
@ -4721,7 +4721,7 @@ t5 CREATE TABLE `t5` (
|
||||
`param10` bigint(20) default NULL,
|
||||
`const11` int(4) default NULL,
|
||||
`param11` bigint(20) default NULL,
|
||||
`const12` char(0) default NULL,
|
||||
`const12` binary(0) default NULL,
|
||||
`param12` bigint(20) default NULL,
|
||||
`param13` double default NULL,
|
||||
`param14` longtext,
|
||||
@ -4751,7 +4751,7 @@ def test t5 t5 const10 const10 3 10 9 N 32769 0 63
|
||||
def test t5 t5 param10 param10 8 20 9 Y 32768 0 63
|
||||
def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
|
||||
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
|
||||
def test t5 t5 const12 const12 254 0 0 Y 0 0 8
|
||||
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
|
||||
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
|
||||
def test t5 t5 param13 param13 5 20 0 Y 32768 31 63
|
||||
def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8
|
||||
|
@ -1772,7 +1772,7 @@ t5 CREATE TABLE `t5` (
|
||||
`param10` bigint(20) default NULL,
|
||||
`const11` int(4) default NULL,
|
||||
`param11` bigint(20) default NULL,
|
||||
`const12` char(0) default NULL,
|
||||
`const12` binary(0) default NULL,
|
||||
`param12` bigint(20) default NULL,
|
||||
`param13` double default NULL,
|
||||
`param14` longtext,
|
||||
@ -1802,7 +1802,7 @@ def test t5 t5 const10 const10 3 10 9 N 32769 0 63
|
||||
def test t5 t5 param10 param10 8 20 9 Y 32768 0 63
|
||||
def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
|
||||
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
|
||||
def test t5 t5 const12 const12 254 0 0 Y 0 0 8
|
||||
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
|
||||
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
|
||||
def test t5 t5 param13 param13 5 20 0 Y 32768 31 63
|
||||
def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8
|
||||
|
@ -1749,7 +1749,7 @@ t5 CREATE TABLE `t5` (
|
||||
`param10` bigint(20) default NULL,
|
||||
`const11` int(4) default NULL,
|
||||
`param11` bigint(20) default NULL,
|
||||
`const12` char(0) default NULL,
|
||||
`const12` binary(0) default NULL,
|
||||
`param12` bigint(20) default NULL,
|
||||
`param13` double default NULL,
|
||||
`param14` longtext,
|
||||
@ -1779,7 +1779,7 @@ def test t5 t5 const10 const10 3 10 9 N 32769 0 63
|
||||
def test t5 t5 param10 param10 8 20 9 Y 32768 0 63
|
||||
def test t5 t5 const11 const11 3 4 4 Y 32768 0 63
|
||||
def test t5 t5 param11 param11 8 20 4 Y 32768 0 63
|
||||
def test t5 t5 const12 const12 254 0 0 Y 0 0 8
|
||||
def test t5 t5 const12 const12 254 0 0 Y 128 0 63
|
||||
def test t5 t5 param12 param12 8 20 0 Y 32768 0 63
|
||||
def test t5 t5 param13 param13 5 20 0 Y 32768 31 63
|
||||
def test t5 t5 param14 param14 252 16777215 0 Y 16 0 8
|
||||
|
@ -162,9 +162,9 @@ master-bin.000001 # Query 1 # use `mysqltest2`; drop database mysqltest2
|
||||
master-bin.000001 # Query 1 # SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
||||
master-bin.000001 # Query 1 # drop database mysqltest3
|
||||
set global character_set_server=latin2;
|
||||
ERROR HY000: Binary logging and replication forbid changing the global server character set or collation
|
||||
ERROR HY000: Binary logging and replication forbid changing the global server character set, collation
|
||||
set global character_set_server=latin2;
|
||||
ERROR HY000: Binary logging and replication forbid changing the global server character set or collation
|
||||
ERROR HY000: Binary logging and replication forbid changing the global server character set, collation
|
||||
set one_shot @@character_set_server=latin5;
|
||||
set @@max_join_size=1000;
|
||||
select @@character_set_server;
|
||||
@ -181,7 +181,7 @@ select @@character_set_server;
|
||||
@@character_set_server
|
||||
latin5
|
||||
set one_shot max_join_size=10;
|
||||
ERROR HY000: The SET ONE_SHOT syntax is reserved for purposes internal to the MySQL server
|
||||
ERROR HY000: The 'SET ONE_SHOT' syntax is reserved for purposes internal to the MySQL server
|
||||
set character_set_client=9999999;
|
||||
ERROR 42000: Unknown character set: '9999999'
|
||||
set collation_server=9999998;
|
||||
|
22
mysql-test/r/rpl_rewrite_db.result
Normal file
22
mysql-test/r/rpl_rewrite_db.result
Normal file
@ -0,0 +1,22 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
drop database if exists mysqltest1;
|
||||
create database mysqltest1;
|
||||
use mysqltest1;
|
||||
create table t1 (a int);
|
||||
insert into t1 values(9);
|
||||
select * from mysqltest1.t1;
|
||||
a
|
||||
9
|
||||
show databases like 'mysqltest1';
|
||||
Database (mysqltest1)
|
||||
mysqltest1
|
||||
select * from test.t1;
|
||||
a
|
||||
9
|
||||
drop table t1;
|
||||
drop database mysqltest1;
|
@ -1,7 +1,7 @@
|
||||
drop table if exists t1, t2, t3, t4;
|
||||
drop table if exists t1, t2, t3, t4;
|
||||
start slave;
|
||||
ERROR HY000: Could not initialize master info structure; more error messages can be found in the MySQL error log
|
||||
ERROR HY000: File 'TESTDIR/var/slave-data/master.info' not found (Errcode: 13)
|
||||
start slave;
|
||||
ERROR HY000: Could not initialize master info structure; more error messages can be found in the MySQL error log
|
||||
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root';
|
||||
|
@ -73,5 +73,5 @@ t
|
||||
2001-09-09 03:46:40
|
||||
1000000000
|
||||
set global time_zone='MET';
|
||||
ERROR HY000: Binary logging and replication forbid changing of the global server time zone
|
||||
ERROR HY000: Binary logging and replication forbid changing the global server time zone
|
||||
drop table t1, t2;
|
||||
|
@ -30,7 +30,7 @@ db1_secret
|
||||
select * from db1_secret.t1;
|
||||
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
ERROR 42000: Unknown database 'db1_secret'
|
||||
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
||||
drop procedure db1_secret.dummy;
|
||||
ERROR 42000: PROCEDURE db1_secret.dummy does not exist
|
||||
call db1_secret.stamp(3);
|
||||
@ -40,7 +40,7 @@ db1_secret
|
||||
select * from db1_secret.t1;
|
||||
ERROR 42000: Access denied for user ''@'localhost' to database 'db1_secret'
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
ERROR 42000: Unknown database 'db1_secret'
|
||||
ERROR 42000: Access denied for user ''@'localhost' to database 'db1_secret'
|
||||
drop procedure db1_secret.dummy;
|
||||
ERROR 42000: PROCEDURE db1_secret.dummy does not exist
|
||||
select * from t1;
|
||||
|
@ -1746,10 +1746,20 @@ drop table if exists t3|
|
||||
create procedure bug4904()
|
||||
begin
|
||||
declare continue handler for sqlstate 'HY000' begin end;
|
||||
create table t2 as select * from t;
|
||||
create table t2 as select * from t3;
|
||||
end|
|
||||
call bug4904()|
|
||||
ERROR 42S02: Table 'test.t3' doesn't exist
|
||||
drop procedure bug4904|
|
||||
create table t3 (s1 char character set latin1, s2 char character set latin2)|
|
||||
create procedure bug4904 ()
|
||||
begin
|
||||
declare continue handler for sqlstate 'HY000' begin end;
|
||||
select s1 from t3 union select s2 from t3;
|
||||
end|
|
||||
call bug4904()|
|
||||
drop procedure bug4904|
|
||||
drop table t3|
|
||||
create procedure bug336(out y int)
|
||||
begin
|
||||
declare x int;
|
||||
|
41
mysql-test/r/timezone3.result
Normal file
41
mysql-test/r/timezone3.result
Normal file
@ -0,0 +1,41 @@
|
||||
drop table if exists t1;
|
||||
create table t1 (i int, c varchar(20));
|
||||
insert into t1 values
|
||||
(unix_timestamp("2004-01-01 00:00:00"), "2004-01-01 00:00:00");
|
||||
insert into t1 values
|
||||
(unix_timestamp("2004-03-28 01:59:59"), "2004-03-28 01:59:59"),
|
||||
(unix_timestamp("2004-03-28 02:30:00"), "2004-03-28 02:30:00"),
|
||||
(unix_timestamp("2004-03-28 03:00:00"), "2004-03-28 03:00:00");
|
||||
insert into t1 values
|
||||
(unix_timestamp('2004-05-01 00:00:00'),'2004-05-01 00:00:00');
|
||||
insert into t1 values
|
||||
(unix_timestamp('2004-10-31 01:00:00'),'2004-10-31 01:00:00'),
|
||||
(unix_timestamp('2004-10-31 02:00:00'),'2004-10-31 02:00:00'),
|
||||
(unix_timestamp('2004-10-31 02:59:59'),'2004-10-31 02:59:59'),
|
||||
(unix_timestamp('2004-10-31 04:00:00'),'2004-10-31 04:00:00'),
|
||||
(unix_timestamp('2004-10-31 02:59:59'),'2004-10-31 02:59:59');
|
||||
insert into t1 values
|
||||
(unix_timestamp('1981-07-01 03:59:59'),'1981-07-01 03:59:59'),
|
||||
(unix_timestamp('1981-07-01 04:00:00'),'1981-07-01 04:00:00');
|
||||
select i, from_unixtime(i), c from t1;
|
||||
i from_unixtime(i) c
|
||||
1072904422 2004-01-01 00:00:00 2004-01-01 00:00:00
|
||||
1080428421 2004-03-28 01:59:59 2004-03-28 01:59:59
|
||||
1080428422 2004-03-28 03:00:00 2004-03-28 02:30:00
|
||||
1080428422 2004-03-28 03:00:00 2004-03-28 03:00:00
|
||||
1083355222 2004-05-01 00:00:00 2004-05-01 00:00:00
|
||||
1099170022 2004-10-31 01:00:00 2004-10-31 01:00:00
|
||||
1099177222 2004-10-31 02:00:00 2004-10-31 02:00:00
|
||||
1099180821 2004-10-31 02:59:59 2004-10-31 02:59:59
|
||||
1099184422 2004-10-31 04:00:00 2004-10-31 04:00:00
|
||||
1099180821 2004-10-31 02:59:59 2004-10-31 02:59:59
|
||||
362793608 1981-07-01 03:59:59 1981-07-01 03:59:59
|
||||
362793610 1981-07-01 04:00:00 1981-07-01 04:00:00
|
||||
drop table t1;
|
||||
create table t1 (ts timestamp);
|
||||
insert into t1 values (19730101235900), (20040101235900);
|
||||
select * from t1;
|
||||
ts
|
||||
1973-01-01 23:59:00
|
||||
2004-01-01 23:59:00
|
||||
drop table t1;
|
@ -174,3 +174,15 @@ create trigger tx1 before insert on t1 for each row set new.x1col = 'x';
|
||||
insert into t1 values ('y');
|
||||
drop trigger t1.tx1;
|
||||
drop table t1;
|
||||
create table t1 (i int) engine=myisam;
|
||||
insert into t1 values (1), (2);
|
||||
create trigger trg1 before delete on t1 for each row set @del_before:= @del_before + old.i;
|
||||
create trigger trg2 after delete on t1 for each row set @del_after:= @del_after + old.i;
|
||||
set @del_before:=0, @del_after:= 0;
|
||||
delete from t1;
|
||||
select @del_before, @del_after;
|
||||
@del_before @del_after
|
||||
3 3
|
||||
drop trigger t1.trg1;
|
||||
drop trigger t1.trg2;
|
||||
drop table t1;
|
||||
|
@ -1221,11 +1221,11 @@ ERROR 42000: FUNCTION test.x1 does not exist
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 MyISAM 9 Fixed 0 0 0 21474836479 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
v1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
v1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL # # NULL NULL NULL NULL FUNCTION test.x1 does not exist
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 MyISAM 9 Fixed 0 0 0 21474836479 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
v1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
v1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL # # NULL NULL NULL NULL FUNCTION test.x1 does not exist
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
create view v1 as select 99999999999999999999999999999999999999999999999999999 as col1;
|
||||
|
BIN
mysql-test/std_data/Moscow_leap
Normal file
BIN
mysql-test/std_data/Moscow_leap
Normal file
Binary file not shown.
@ -324,3 +324,15 @@ alter table t1 rename to `t1\\`;
|
||||
rename table t1 to `t1\\`;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns
|
||||
#
|
||||
# The column's character set was changed but the actual data was not
|
||||
# modified. In other words, the values were reinterpreted
|
||||
# as UTF8 instead of being converted.
|
||||
create table t1 (a text) character set koi8r;
|
||||
insert into t1 values (_koi8r'<27><><EFBFBD><EFBFBD>');
|
||||
select hex(a) from t1;
|
||||
alter table t1 convert to character set cp1251;
|
||||
select hex(a) from t1;
|
||||
drop table t1;
|
||||
|
@ -1,2 +1,2 @@
|
||||
--disable_result_log
|
||||
--exec $TESTS_BINDIR/client_test --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent
|
||||
--exec $TESTS_BINDIR/client_test --no-defaults --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent
|
||||
|
@ -49,7 +49,7 @@ flush privileges;
|
||||
#show tables;
|
||||
connect (con1,localhost,test,gambling2,mysql);
|
||||
set password="";
|
||||
--error 1105
|
||||
--error 1372
|
||||
set password='gambling3';
|
||||
set password=old_password('gambling3');
|
||||
show tables;
|
||||
|
41
mysql-test/t/consistent_snapshot.test
Normal file
41
mysql-test/t/consistent_snapshot.test
Normal file
@ -0,0 +1,41 @@
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
### Test 1:
|
||||
### - While a consistent snapshot transaction is executed,
|
||||
### no external inserts should be visible to the transaction.
|
||||
|
||||
connection con1;
|
||||
create table t1 (a int) engine=innodb;
|
||||
start transaction with consistent snapshot;
|
||||
|
||||
connection con2;
|
||||
insert into t1 values(1);
|
||||
|
||||
connection con1;
|
||||
select * from t1; # if consistent snapshot was set as expected, we
|
||||
# should see nothing.
|
||||
commit;
|
||||
|
||||
### Test 2:
|
||||
### - For any non-consistent snapshot transaction, external
|
||||
### committed inserts should be visible to the transaction.
|
||||
|
||||
delete from t1;
|
||||
start transaction; # Now we omit WITH CONSISTENT SNAPSHOT
|
||||
|
||||
connection con2;
|
||||
insert into t1 values(1);
|
||||
|
||||
connection con1;
|
||||
select * from t1; # if consistent snapshot was not set, as expected, we
|
||||
# should see 1.
|
||||
commit;
|
||||
|
||||
drop table t1;
|
@ -83,3 +83,39 @@ CREATE TABLE t1 (
|
||||
SHOW CREATE TABLE t1;
|
||||
SHOW COLUMNS FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #6345 Unexpected behaviour with partial indices
|
||||
#
|
||||
--disable_warnings
|
||||
CREATE TABLE t1
|
||||
(
|
||||
a INTEGER NOT NULL,
|
||||
b VARCHAR(50) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (a),
|
||||
KEY b (b(10))
|
||||
) TYPE=InnoDB CHARACTER SET 'ujis' COLLATE 'ujis_japanese_ci';
|
||||
--enable_warnings
|
||||
INSERT INTO t1 (a, b) VALUES (0, 'aaabbbcccddd');
|
||||
INSERT INTO t1 (a, b) VALUES (1, 'eeefffggghhh');
|
||||
INSERT INTO t1 (a, b) VALUES (2, 'iiijjjkkkl');
|
||||
SELECT t1.* FROM t1 WHERE b='aaabbbcccddd' ORDER BY a;
|
||||
SELECT t1.* FROM t1 WHERE b='eeefffggghhh' ORDER BY a;
|
||||
SELECT t1.* FROM t1 WHERE b='iiijjjkkkl' ORDER BY a;
|
||||
DROP TABLE t1;
|
||||
--disable_warnings
|
||||
CREATE TABLE t1
|
||||
(
|
||||
a INTEGER NOT NULL,
|
||||
b VARCHAR(50) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (a),
|
||||
KEY b (b(10))
|
||||
) TYPE=MyISAM CHARACTER SET 'ujis' COLLATE 'ujis_japanese_ci';
|
||||
--enable_warnings
|
||||
INSERT INTO t1 (a, b) VALUES (0, 'aaabbbcccddd');
|
||||
INSERT INTO t1 (a, b) VALUES (1, 'eeefffggghhh');
|
||||
INSERT INTO t1 (a, b) VALUES (2, 'iiijjjkkkl');
|
||||
SELECT t1.* FROM t1 WHERE b='aaabbbcccddd' ORDER BY a;
|
||||
SELECT t1.* FROM t1 WHERE b='eeefffggghhh' ORDER BY a;
|
||||
SELECT t1.* FROM t1 WHERE b='iiijjjkkkl' ORDER BY a;
|
||||
DROP TABLE t1;
|
||||
|
@ -82,6 +82,12 @@ select unhex(hex("foobar")), hex(unhex("1234567890ABCDEF")), unhex("345678"), un
|
||||
select hex(unhex("1")), hex(unhex("12")), hex(unhex("123")), hex(unhex("1234")), hex(unhex("12345")), hex(unhex("123456"));
|
||||
select length(unhex(md5("abrakadabra")));
|
||||
|
||||
#
|
||||
# Bug #6564: QUOTE(NULL
|
||||
#
|
||||
|
||||
select concat('a', quote(NULL));
|
||||
|
||||
#
|
||||
# Wrong usage of functions
|
||||
#
|
||||
|
@ -97,6 +97,30 @@ drop table t1;
|
||||
GRANT FILE on mysqltest.* to mysqltest_1@localhost;
|
||||
select 1; -- To test that the previous command didn't cause problems
|
||||
|
||||
#
|
||||
# Bug #4898: User privileges depending on ORDER BY Settings of table db
|
||||
#
|
||||
insert into mysql.user (host, user) values ('localhost', 'test11');
|
||||
insert into mysql.db (host, db, user, select_priv) values
|
||||
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
||||
alter table mysql.db order by db asc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
alter table mysql.db order by db desc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
delete from mysql.user where user='test11';
|
||||
delete from mysql.db where user='test11';
|
||||
|
||||
#
|
||||
# Bug#6123: GRANT USAGE inserts useless Db row
|
||||
#
|
||||
create database mysqltest1;
|
||||
grant usage on mysqltest1.* to test6123 identified by 'magic123';
|
||||
select host,db,user,select_priv,insert_priv from mysql.db where db="mysqltest1";
|
||||
delete from mysql.user where user='test6123';
|
||||
drop database mysqltest1;
|
||||
|
||||
#
|
||||
# Test for 'drop user', 'revoke privileges, grant'
|
||||
#
|
||||
@ -174,21 +198,6 @@ REVOKE SELECT (
|
||||
DROP DATABASE <20><>;
|
||||
SET NAMES latin1;
|
||||
|
||||
#
|
||||
# Bug #4898: User privileges depending on ORDER BY Settings of table db
|
||||
#
|
||||
insert into mysql.user (host, user) values ('localhost', 'test11');
|
||||
insert into mysql.db (host, db, user, select_priv) values
|
||||
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
||||
alter table mysql.db order by db asc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
alter table mysql.db order by db desc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
delete from mysql.user where user='test11';
|
||||
delete from mysql.db where user='test11';
|
||||
|
||||
#
|
||||
# Bug #5831: REVOKE ALL PRIVILEGES, GRANT OPTION does not revoke everything
|
||||
#
|
||||
|
@ -2,7 +2,7 @@
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
drop table if exists t1,t2,t3;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a int);
|
||||
@ -122,3 +122,196 @@ from t1 a left join t3 b on a.id=b.order_id
|
||||
group by a.id, a.description
|
||||
having (a.description is not null) and (c=0);
|
||||
drop table t1,t2,t3;
|
||||
|
||||
|
||||
#
|
||||
# Tests for WL#1972 CORRECT EVALUATION OF COLUMN REFERENCES IN THE HAVING CLAUSE
|
||||
# Per the SAP VERI tests and WL#1972, MySQL must ensure that HAVING can
|
||||
# correctly evaluate column references from the GROUP BY clause, even if the
|
||||
# same references are not also found in the select list.
|
||||
#
|
||||
|
||||
# set global sql_mode='ansi';
|
||||
# set session sql_mode='ansi';
|
||||
|
||||
create table t1 (col1 int, col2 varchar(5), col_t1 int);
|
||||
create table t2 (col1 int, col2 varchar(5), col_t2 int);
|
||||
create table t3 (col1 int, col2 varchar(5), col_t3 int);
|
||||
|
||||
insert into t1 values(10,'hello',10);
|
||||
insert into t1 values(20,'hello',20);
|
||||
insert into t1 values(30,'hello',30);
|
||||
insert into t1 values(10,'bye',10);
|
||||
insert into t1 values(10,'sam',10);
|
||||
insert into t1 values(10,'bob',10);
|
||||
|
||||
insert into t2 select * from t1;
|
||||
insert into t3 select * from t1;
|
||||
|
||||
select count(*) from t1 group by col1 having col1 = 10;
|
||||
select count(*) as count_col1 from t1 group by col1 having col1 = 10;
|
||||
select count(*) as count_col1 from t1 as tmp1 group by col1 having col1 = 10;
|
||||
select count(*) from t1 group by col2 having col2 = 'hello';
|
||||
--error 1054
|
||||
select count(*) from t1 group by col2 having col1 = 10;
|
||||
select col1 as count_col1 from t1 as tmp1 group by col1 having col1 = 10;
|
||||
select col1 as count_col1 from t1 as tmp1 group by col1 having count_col1 = 10;
|
||||
select col1 as count_col1 from t1 as tmp1 group by count_col1 having col1 = 10;
|
||||
# ANSI: should return SQLSTATE 42000 Syntax error or access violation
|
||||
# MySQL: returns 10 - because of GROUP BY name resolution
|
||||
select col1 as count_col1 from t1 as tmp1 group by count_col1 having count_col1 = 10;
|
||||
# ANSI: should return SQLSTATE 42000 Syntax error or access violation
|
||||
# MySQL: returns 10 - because of GROUP BY name resolution
|
||||
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having col1 = 10;
|
||||
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having count_col1 = 10;
|
||||
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having col2 = 'hello';
|
||||
select col1 as count_col1,col2 as group_col2 from t1 as tmp1 group by col1,col2 having group_col2 = 'hello';
|
||||
--error 1064
|
||||
select sum(col1) as co12 from t1 group by col2 having col2 10;
|
||||
select sum(col1) as co2, count(col2) as cc from t1 group by col1 having col1 =10;
|
||||
--error 1054
|
||||
select t2.col2 from t2 group by t2.col1, t2.col2 having t1.col1 <= 10;
|
||||
|
||||
|
||||
#
|
||||
# queries with nested sub-queries
|
||||
#
|
||||
|
||||
# the having column is resolved in the same query
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having t2.col1 <= 10);
|
||||
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2
|
||||
having t2.col1 <=
|
||||
(select min(t3.col1) from t3));
|
||||
|
||||
# the having column is resolved in the SELECT clause of the outer query -
|
||||
# works in ANSI
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having t1.col1 <= 10);
|
||||
|
||||
# the having column is resolved in the SELECT clause of the outer query -
|
||||
# error in ANSI, works with MySQL extension
|
||||
select t1.col1 as tmp_col from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having tmp_col <= 10);
|
||||
|
||||
# the having column is resolved in the FROM clause of the outer query -
|
||||
# works in ANSI
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having col_t1 <= 10);
|
||||
|
||||
# Item_field must be resolved in the same way as Item_ref
|
||||
select sum(col1) from t1
|
||||
group by col_t1
|
||||
having (select col_t1 from t2 where col_t1 = col_t2 order by col_t2 limit 1);
|
||||
|
||||
# nested queries with HAVING, inner having column resolved in outer FROM clause
|
||||
# the outer having column is not referenced in GROUP BY which results in an error
|
||||
--error 1054
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having col_t1 <= 10)
|
||||
having col_t1 <= 20;
|
||||
|
||||
# both having columns are resolved in the GROUP clause of the outer query
|
||||
select t1.col1 from t1
|
||||
where t1.col2 in
|
||||
(select t2.col2 from t2
|
||||
group by t2.col1, t2.col2 having col_t1 <= 10)
|
||||
group by col_t1
|
||||
having col_t1 <= 20;
|
||||
|
||||
|
||||
#
|
||||
# nested HAVING clauses
|
||||
#
|
||||
|
||||
# non-correlated subqueries
|
||||
select col_t1, sum(col1) from t1
|
||||
group by col_t1
|
||||
having col_t1 > 10 and
|
||||
exists (select sum(t2.col1) from t2
|
||||
group by t2.col2 having t2.col2 > 'b');
|
||||
|
||||
# correlated subqueries - inner having column 't1.col2' resolves to
|
||||
# the outer FROM clause, which cannot be used because the outer query
|
||||
# is grouped
|
||||
--error 1054
|
||||
select sum(col1) from t1
|
||||
group by col_t1
|
||||
having col_t1 in (select sum(t2.col1) from t2
|
||||
group by t2.col2, t2.col1 having t2.col1 = t1.col1);
|
||||
|
||||
# correlated subqueries - inner having column 'col_t1' resolves to
|
||||
# the outer GROUP clause
|
||||
select sum(col1) from t1
|
||||
group by col_t1
|
||||
having col_t1 in (select sum(t2.col1) from t2
|
||||
group by t2.col2, t2.col1 having t2.col1 = col_t1);
|
||||
|
||||
#
|
||||
# queries with joins and ambiguous column names
|
||||
#
|
||||
--error 1052
|
||||
select t1.col1, t2.col1 from t1, t2 where t1.col1 = t2.col1
|
||||
group by t1.col1, t2.col1 having col1 = 2;
|
||||
|
||||
--error 1052
|
||||
select t1.col1*10+t2.col1 from t1,t2 where t1.col1=t2.col1
|
||||
group by t1.col1, t2.col1 having col1 = 2;
|
||||
|
||||
drop table t1, t2, t3;
|
||||
|
||||
# More queries to test ANSI compatibility
|
||||
create table t1 (s1 int);
|
||||
insert into t1 values (1),(2),(3);
|
||||
|
||||
select count(*) from t1 group by s1 having s1 is null;
|
||||
|
||||
select s1*0 as s1 from t1 group by s1 having s1 <> 0;
|
||||
# ANSI requires: 3 rows
|
||||
# MySQL returns: 0 rows - because of GROUP BY name resolution
|
||||
|
||||
select s1*0 from t1 group by s1 having s1 = 0;
|
||||
|
||||
select s1 from t1 group by 1 having 1 = 0;
|
||||
|
||||
select count(s1) from t1 group by s1 having count(1+1)=2;
|
||||
# ANSI requires: 3 rows
|
||||
# MySQL returns: 0 rows - because of GROUP BY name resolution
|
||||
|
||||
select count(s1) from t1 group by s1 having s1*0=0;
|
||||
|
||||
-- error 1052
|
||||
select * from t1 a, t1 b group by a.s1 having s1 is null;
|
||||
# ANSI requires: 0 rows
|
||||
# MySQL returns:
|
||||
# "ERROR 1052 (23000): Column 's1' in having clause is ambiguous"
|
||||
# I think the column is ambiguous in ANSI too.
|
||||
# It is the same as:
|
||||
# select a.s1, b.s1 from t1 a, t1 b group by a.s1 having s1 is null;
|
||||
# currently we first check SELECT, thus s1 is ambiguous.
|
||||
|
||||
drop table t1;
|
||||
|
||||
create table t1 (s1 char character set latin1 collate latin1_german1_ci);
|
||||
insert into t1 values ('ü'),('y');
|
||||
|
||||
select s1,count(s1) from t1
|
||||
group by s1 collate latin1_swedish_ci having s1 = 'y';
|
||||
# ANSI requires: 1 row, with count(s1) = 2
|
||||
# MySQL returns: 1 row, with count(s1) = 1
|
||||
|
||||
drop table t1;
|
||||
|
224
mysql-test/t/information_schema.test
Normal file
224
mysql-test/t/information_schema.test
Normal file
@ -0,0 +1,224 @@
|
||||
|
||||
# Test for information_schema.schemata &
|
||||
# show databases
|
||||
|
||||
grant all privileges on test.* to mysqltest_1@localhost;
|
||||
|
||||
select * from information_schema.SCHEMATA where schema_name > 'm';
|
||||
select schema_name from information_schema.schemata;
|
||||
show databases *;
|
||||
show databases like 't%';
|
||||
show databases;
|
||||
show databases * where schema_name like 't%';
|
||||
show databases * where schema_name = 't%';
|
||||
|
||||
# Test for information_schema.tables &
|
||||
# show tables
|
||||
|
||||
create database testtets;
|
||||
create table testtets.t1(a int, b VARCHAR(30), KEY string_data (b));
|
||||
create table test.t2(a int);
|
||||
create table t3(a int, KEY a_data (a));
|
||||
create table testtets.t4(a int);
|
||||
create view v1 (c) as select table_name from information_schema.TABLES;
|
||||
select * from v1;
|
||||
select c,table_name from v1
|
||||
left join information_schema.TABLES v2 on (v1.c=v2.table_name)
|
||||
where v1.c like "t%";
|
||||
|
||||
select c, v2.table_name from v1
|
||||
right join information_schema.TABLES v2 on (v1.c=v2.table_name)
|
||||
where v1.c like "t%";
|
||||
|
||||
select table_name from information_schema.TABLES
|
||||
where table_schema = "testtets" and table_name like "t%";
|
||||
|
||||
select * from information_schema.STATISTICS where TABLE_SCHEMA = "testtets";
|
||||
show keys * where TABLE_SCHEMA Like "test%";
|
||||
show keys where INDEX_NAME = "a_data";
|
||||
|
||||
show tables like 't%';
|
||||
--replace_column 15 # 16 #
|
||||
show tables * from test where table_name like 't%';
|
||||
--replace_column 12 # 13 #
|
||||
show table status;
|
||||
show full columns from t3 like "a%";
|
||||
show full columns from mysql.db like "Insert%";
|
||||
show full columns from v1;
|
||||
select * from information_schema.COLUMNS where table_name="t1"
|
||||
and column_name= "a";
|
||||
show columns * where table_name = "t1";
|
||||
|
||||
drop view v1;
|
||||
drop tables testtets.t4, testtets.t1, t2, t3;
|
||||
drop database testtets;
|
||||
|
||||
# Test for information_schema.CHARACTER_SETS &
|
||||
# SHOW CHARACTER SET
|
||||
|
||||
select * from information_schema.CHARACTER_SETS
|
||||
where CHARACTER_SET_NAME like 'latin1%';
|
||||
SHOW CHARACTER SET LIKE 'latin1%';
|
||||
SHOW CHARACTER SET * LIKE 'latin1%';
|
||||
SHOW CHARACTER SET WHERE CHARACTER_SET_NAME like 'latin1%';
|
||||
SHOW CHARACTER SET CHARACTER_SET_NAME WHERE CHARACTER_SET_NAME like 'latin1%';
|
||||
SHOW CHARACTER SET * WHERE CHARACTER_SET_NAME like 'latin1%';
|
||||
|
||||
# Test for information_schema.COLLATIONS &
|
||||
# SHOW COLLATION
|
||||
|
||||
select * from information_schema.COLLATIONS
|
||||
where COLLATION_NAME like 'latin1%';
|
||||
SHOW COLLATION LIKE 'latin1%';
|
||||
SHOW COLLATION * LIKE 'latin1%';
|
||||
SHOW COLLATION WHERE COLLATION_NAME like 'latin1%';
|
||||
SHOW COLLATION COLLATION_NAME WHERE COLLATION_NAME like 'latin1%';
|
||||
SHOW COLLATION * WHERE COLLATION_NAME like 'latin1%';
|
||||
|
||||
select * from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY
|
||||
where COLLATION_NAME like 'latin1%';
|
||||
|
||||
# Test for information_schema.ROUTINES &
|
||||
#
|
||||
|
||||
create function sub1(i int) returns int
|
||||
return i+1;
|
||||
delimiter |;
|
||||
create procedure sel2()
|
||||
begin
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
end|
|
||||
delimiter ;|
|
||||
|
||||
--replace_column 5 # 6 #
|
||||
show procedure status;
|
||||
--replace_column 5 # 6 #
|
||||
show function status;
|
||||
select a.ROUTINE_NAME from information_schema.ROUTINES a,
|
||||
information_schema.SCHEMATA b where
|
||||
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
|
||||
--replace_column 3 #
|
||||
explain select a.ROUTINE_NAME from information_schema.ROUTINES a,
|
||||
information_schema.SCHEMATA b where
|
||||
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
|
||||
|
||||
select a.ROUTINE_NAME, b.name from information_schema.ROUTINES a,
|
||||
mysql.proc b where a.ROUTINE_NAME = b.name;
|
||||
select count(*) from information_schema.ROUTINES;
|
||||
|
||||
#
|
||||
# Test for views
|
||||
#
|
||||
create view v0 (c) as select schema_name from information_schema.SCHEMATA;
|
||||
select * from v0;
|
||||
--replace_column 3 #
|
||||
explain select * from v0;
|
||||
create view v1 (c) as select table_name from information_schema.TABLES
|
||||
where table_name="v1";
|
||||
select * from v1;
|
||||
create view v2 (c) as select column_name from information_schema.COLUMNS
|
||||
where table_name="v2";
|
||||
select * from v2;
|
||||
create view v3 (c) as select CHARACTER_SET_NAME from information_schema.CHARACTER_SETS
|
||||
where CHARACTER_SET_NAME like "latin1%";
|
||||
select * from v3;
|
||||
create view v4 (c) as select COLLATION_NAME from information_schema.COLLATIONS
|
||||
where COLLATION_NAME like "latin1%";
|
||||
select * from v4;
|
||||
show keys from v4;
|
||||
select * from information_schema.VIEWS where TABLE_NAME like "v%";
|
||||
drop view v0, v1, v2, v3, v4;
|
||||
|
||||
#
|
||||
# Test for privileges tables
|
||||
#
|
||||
create table t1 (a int);
|
||||
grant select,update,insert on t1 to mysqltest_1@localhost;
|
||||
grant select (a), update (a),insert(a), references(a) on t1 to mysqltest_1@localhost;
|
||||
grant all on test.* to mysqltest_1@localhost with grant option;
|
||||
select * from information_schema.USER_PRIVILEGES where grantee like '%mysqltest_1%';
|
||||
select * from information_schema.SCHEMA_PRIVILEGES where grantee like '%mysqltest_1%';
|
||||
select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest_1%';
|
||||
select * from information_schema.COLUMN_PRIVILEGES where grantee like '%mysqltest_1%';
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
delete from mysql.db where user='mysqltest_1';
|
||||
delete from mysql.tables_priv where user='mysqltest_1';
|
||||
delete from mysql.columns_priv where user='mysqltest_1';
|
||||
flush privileges;
|
||||
drop table t1;
|
||||
|
||||
|
||||
#
|
||||
# Test for KEY_COLUMN_USAGE & TABLE_CONSTRAINTS tables
|
||||
#
|
||||
|
||||
create table t1 (a int null, primary key(a));
|
||||
alter table t1 add constraint constraint_1 unique (a);
|
||||
alter table t1 add constraint unique key_1(a);
|
||||
alter table t1 add constraint constraint_2 unique key_2(a);
|
||||
show create table t1;
|
||||
select * from information_schema.TABLE_CONSTRAINTS where
|
||||
TABLE_SCHEMA= "test";
|
||||
select * from information_schema.KEY_COLUMN_USAGE where
|
||||
TABLE_SCHEMA= "test";
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id),
|
||||
FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (t1_id) REFERENCES t1(id) ON UPDATE CASCADE) ENGINE=INNODB;
|
||||
select * from information_schema.TABLE_CONSTRAINTS where
|
||||
TABLE_SCHEMA= "test";
|
||||
select * from information_schema.KEY_COLUMN_USAGE where
|
||||
TABLE_SCHEMA= "test";
|
||||
|
||||
connect (user1,localhost,mysqltest_1,,);
|
||||
connection user1;
|
||||
select table_name from information_schema.TABLES where table_schema like "test%";
|
||||
select table_name,column_name from information_schema.COLUMNS where table_schema like "test%";
|
||||
select ROUTINE_NAME from information_schema.ROUTINES;
|
||||
disconnect user1;
|
||||
connection default;
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop procedure sel2;
|
||||
drop function sub1;
|
||||
|
||||
create table t1(a int);
|
||||
create view v1 (c) as select a from t1 with check option;
|
||||
create view v2 (c) as select a from t1 WITH LOCAL CHECK OPTION;
|
||||
create view v3 (c) as select a from t1 WITH CASCADED CHECK OPTION;
|
||||
select * from information_schema.views;
|
||||
grant select (a) on test.t1 to joe@localhost with grant option;
|
||||
select * from INFORMATION_SCHEMA.COLUMN_PRIVILEGES;
|
||||
select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES;
|
||||
drop view v1, v2, v3;
|
||||
drop table t1;
|
||||
delete from mysql.user where user='joe';
|
||||
delete from mysql.db where user='joe';
|
||||
delete from mysql.tables_priv where user='joe';
|
||||
delete from mysql.columns_priv where user='joe';
|
||||
flush privileges;
|
||||
|
||||
delimiter //;
|
||||
create procedure px5 ()
|
||||
begin
|
||||
declare v int;
|
||||
declare c cursor for select version from
|
||||
information_schema.tables;
|
||||
open c;
|
||||
fetch c into v;
|
||||
select v;
|
||||
close c;
|
||||
end;//
|
||||
|
||||
call px5()//
|
||||
call px5()//
|
||||
delimiter ;//
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -299,5 +299,5 @@ drop table t1;
|
||||
# create dedicated error code for this and
|
||||
# and change my_printf_error() to my_error
|
||||
|
||||
--error 1105
|
||||
--error 1391
|
||||
create table t1 (c char(10), index (c(0)));
|
||||
|
1
mysql-test/t/mix_innodb_myisam_binlog-master.opt
Normal file
1
mysql-test/t/mix_innodb_myisam_binlog-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--loose-innodb_lock_wait_timeout=2
|
@ -184,4 +184,36 @@ select a from t1 order by a; # check that savepoints work :)
|
||||
--replace_column 5 #
|
||||
show binlog events from 95;
|
||||
|
||||
# Test for BUG#5714, where a MyISAM update in the transaction used to
|
||||
# release row-level locks in InnoDB
|
||||
|
||||
connect (con3,localhost,root,,);
|
||||
|
||||
connection con3;
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
--disable_warnings
|
||||
alter table t2 type=MyISAM;
|
||||
--enable_warnings
|
||||
insert into t1 values (1);
|
||||
begin;
|
||||
select * from t1 for update;
|
||||
|
||||
connection con2;
|
||||
select (@before:=unix_timestamp())*0; # always give repeatable output
|
||||
begin;
|
||||
send select * from t1 for update;
|
||||
|
||||
connection con3;
|
||||
insert into t2 values (20);
|
||||
|
||||
connection con2;
|
||||
--error 1205
|
||||
reap;
|
||||
select (@after:=unix_timestamp())*0; # always give repeatable output
|
||||
# verify that innodb_lock_wait_timeout was exceeded. When there was
|
||||
# the bug, the reap would return immediately after the insert into t2.
|
||||
select (@after-@before) >= 2;
|
||||
|
||||
# cleanup
|
||||
drop table t1,t2;
|
||||
|
@ -1,7 +1,7 @@
|
||||
-- source include/have_ndb.inc
|
||||
|
||||
--disable_warnings
|
||||
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,t10;
|
||||
--enable_warnings
|
||||
|
||||
################################################
|
||||
@ -472,5 +472,11 @@ system rm var/master-data/test/t9.frm ;
|
||||
# MySQL Server will have been restarted because it has a
|
||||
# ndb_autodiscover2-master.opt file.
|
||||
|
||||
create table t10 (
|
||||
a int not null primary key,
|
||||
b blob
|
||||
) engine=ndb;
|
||||
|
||||
insert into t10 values (1, 'kalle');
|
||||
|
||||
--exec $NDB_TOOLS_DIR/ndb_drop_table -d test `$NDB_TOOLS_DIR/ndb_show_tables | grep BLOB` > /dev/null 2>&1 || true
|
||||
|
@ -13,4 +13,7 @@ show status like 'handler_discover%';
|
||||
|
||||
drop table t9;
|
||||
|
||||
--error 1296
|
||||
select * from t10;
|
||||
drop table t10;
|
||||
|
||||
|
@ -360,6 +360,21 @@ select b,test.t1.attr1 from test.t1, t2 where test.t1.pk1 < a;
|
||||
drop table test.t1, t2;
|
||||
drop database mysqltest;
|
||||
|
||||
#
|
||||
# BUG#6031 - DROP DATABASE doesn't drop database on first try
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists ndbtest1;
|
||||
--enable_warnings
|
||||
|
||||
create database ndbtest1;
|
||||
use ndbtest1;
|
||||
create table t1(id int) engine=ndbcluster;
|
||||
drop database ndbtest1;
|
||||
--error 1008
|
||||
drop database ndbtest1;
|
||||
|
||||
#
|
||||
# test support of char(0)
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
-- source include/have_ndb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
drop table if exists t1, test1, test2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
@ -146,3 +146,29 @@ select * from t1 use index (bc) where b IS NULL and c = 2 order by a;
|
||||
select * from t1 use index (bc) where b < 4 order by a;
|
||||
select * from t1 use index (bc) where b IS NOT NULL order by a;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6435
|
||||
CREATE TABLE test1 (
|
||||
SubscrID int(11) NOT NULL auto_increment,
|
||||
UsrID int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (SubscrID),
|
||||
KEY idx_usrid (UsrID)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||
|
||||
INSERT INTO test1 VALUES (2,224),(3,224),(1,224);
|
||||
|
||||
CREATE TABLE test2 (
|
||||
SbclID int(11) NOT NULL auto_increment,
|
||||
SbcrID int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (SbclID),
|
||||
KEY idx_sbcrid (SbcrID)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||
|
||||
INSERT INTO test2 VALUES (3,2),(1,1),(2,1),(4,2);
|
||||
select * from test1 order by 1;
|
||||
select * from test2 order by 1;
|
||||
SELECT s.SubscrID,l.SbclID FROM test1 s left JOIN test2 l ON
|
||||
l.SbcrID=s.SubscrID WHERE s.UsrID=224 order by 1, 2;
|
||||
drop table test1;
|
||||
drop table test2;
|
||||
|
@ -122,3 +122,70 @@ explain select * from t1 where i=2 or i is null;
|
||||
select count(*) from t1 where i=2 or i is null;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# NULL has its own type BINARY(0) by default.
|
||||
# But NULL should be weaker than a constant
|
||||
# when mixing charsets/collations
|
||||
#
|
||||
set names latin2;
|
||||
# Check that result type is taken from a non-null string
|
||||
create table t1 select
|
||||
null as c00,
|
||||
if(1, null, 'string') as c01,
|
||||
if(0, null, 'string') as c02,
|
||||
ifnull(null, 'string') as c03,
|
||||
ifnull('string', null) as c04,
|
||||
case when 0 then null else 'string' end as c05,
|
||||
case when 1 then null else 'string' end as c06,
|
||||
coalesce(null, 'string') as c07,
|
||||
coalesce('string', null) as c08,
|
||||
least('string',null) as c09,
|
||||
least(null, 'string') as c10,
|
||||
greatest('string',null) as c11,
|
||||
greatest(null, 'string') as c12,
|
||||
nullif('string', null) as c13,
|
||||
nullif(null, 'string') as c14,
|
||||
trim('string' from null) as c15,
|
||||
trim(null from 'string') as c16,
|
||||
substring_index('string', null, 1) as c17,
|
||||
substring_index(null, 'string', 1) as c18,
|
||||
elt(1, null, 'string') as c19,
|
||||
elt(1, 'string', null) as c20,
|
||||
concat('string', null) as c21,
|
||||
concat(null, 'string') as c22,
|
||||
concat_ws('sep', 'string', null) as c23,
|
||||
concat_ws('sep', null, 'string') as c24,
|
||||
concat_ws(null, 'string', 'string') as c25,
|
||||
make_set(3, 'string', null) as c26,
|
||||
make_set(3, null, 'string') as c27,
|
||||
export_set(3, null, 'off', 'sep') as c29,
|
||||
export_set(3, 'on', null, 'sep') as c30,
|
||||
export_set(3, 'on', 'off', null) as c31,
|
||||
replace(null, 'from', 'to') as c32,
|
||||
replace('str', null, 'to') as c33,
|
||||
replace('str', 'from', null) as c34,
|
||||
insert('str', 1, 2, null) as c35,
|
||||
insert(null, 1, 2, 'str') as c36,
|
||||
lpad('str', 10, null) as c37,
|
||||
rpad(null, 10, 'str') as c38;
|
||||
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Check that comparison is done according to
|
||||
# non-null string collation, i.e. case insensitively,
|
||||
# rather than according to NULL's collation, i.e. case sensitively
|
||||
#
|
||||
-- in field
|
||||
select
|
||||
case 'str' when 'STR' then 'str' when null then 'null' end as c01,
|
||||
case 'str' when null then 'null' when 'STR' then 'str' end as c02,
|
||||
field(null, 'str1', 'str2') as c03,
|
||||
field('str1','STR1', null) as c04,
|
||||
field('str1', null, 'STR1') as c05,
|
||||
'string' in ('STRING', null) as c08,
|
||||
'string' in (null, 'STRING') as c09;
|
||||
|
||||
# Restore charset to the default value.
|
||||
set names latin1;
|
||||
|
@ -8,7 +8,11 @@
|
||||
# NOTE: PLEASE SEE THE DETAILED DESCRIPTION AT THE BOTTOM OF THIS FILE
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
use test;
|
||||
--disable_warnings
|
||||
drop table if exists t5, t6, t7, t8;
|
||||
drop database if exists mysqltest ;
|
||||
--enable_warnings
|
||||
|
||||
--disable_query_log
|
||||
select '------ basic tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
@ -585,12 +589,9 @@ rename table new_t2 to t2;
|
||||
drop table t2;
|
||||
## RENAME more than on TABLE within one statement
|
||||
# cases derived from client_test.c: test_rename()
|
||||
--disable_warnings
|
||||
drop table if exists t5, t6, t7, t8 ;
|
||||
--enable_warnings
|
||||
prepare stmt1 from ' rename table t5 to t6, t7 to t8 ' ;
|
||||
create table t5 (a int) ;
|
||||
# rename must fail, tc does not exist
|
||||
# rename must fail, t7 does not exist
|
||||
--error 1017
|
||||
execute stmt1 ;
|
||||
create table t7 (a int) ;
|
||||
@ -859,15 +860,23 @@ select '------ grant/revoke/drop affects a parallel session test ------'
|
||||
--error 1141
|
||||
show grants for second_user@localhost ;
|
||||
## create a new user account by using GRANT statements on t9
|
||||
grant usage on test.* to second_user@localhost
|
||||
create database mysqltest;
|
||||
# create the tables (t1 and t9) used in many tests
|
||||
use mysqltest;
|
||||
--disable_query_log
|
||||
--source include/ps_create.inc
|
||||
--source include/ps_renew.inc
|
||||
--enable_query_log
|
||||
eval use $DB;
|
||||
grant usage on mysqltest.* to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
grant select on test.t9 to second_user@localhost
|
||||
grant select on mysqltest.t9 to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
|
||||
|
||||
#### establish a second session to the new user account
|
||||
connect (con3,localhost,second_user,looser,test);
|
||||
connect (con3,localhost,second_user,looser,mysqltest);
|
||||
## switch to the second session
|
||||
connection con3;
|
||||
# Who am I ?
|
||||
@ -885,10 +894,10 @@ select a as my_col from t1;
|
||||
#### give access rights to t1 and drop table t9
|
||||
## switch back to the first session
|
||||
connection default;
|
||||
grant select on test.t1 to second_user@localhost
|
||||
grant select on mysqltest.t1 to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
drop table t9 ;
|
||||
drop table mysqltest.t9 ;
|
||||
show grants for second_user@localhost ;
|
||||
|
||||
|
||||
@ -907,7 +916,7 @@ execute s_t9 ;
|
||||
#### revoke the access rights to t1
|
||||
## switch back to the first session
|
||||
connection default;
|
||||
revoke all privileges on test.t1 from second_user@localhost
|
||||
revoke all privileges on mysqltest.t1 from second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
|
||||
@ -932,8 +941,8 @@ commit ;
|
||||
--error 1141
|
||||
show grants for second_user@localhost ;
|
||||
|
||||
|
||||
drop table t1 ;
|
||||
drop table t1,t9 ;
|
||||
drop database mysqltest;
|
||||
|
||||
|
||||
##### RULES OF THUMB TO PRESERVE THE SYSTEMATICS OF THE PS TEST CASES #####
|
||||
|
@ -112,10 +112,10 @@ sync_slave_with_master;
|
||||
|
||||
# Check that we can't change global.collation_server
|
||||
|
||||
error 1105;
|
||||
error 1387;
|
||||
set global character_set_server=latin2;
|
||||
connection master;
|
||||
error 1105;
|
||||
error 1387;
|
||||
set global character_set_server=latin2;
|
||||
|
||||
# Check that SET ONE_SHOT is really one shot
|
||||
@ -129,7 +129,7 @@ select @@character_set_server;
|
||||
select @@character_set_server;
|
||||
|
||||
# ONE_SHOT on not charset/collation stuff is not allowed
|
||||
error 1105;
|
||||
error 1382;
|
||||
set one_shot max_join_size=10;
|
||||
|
||||
# Test of wrong character set numbers;
|
||||
|
1
mysql-test/t/rpl_rewrite_db-slave.opt
Normal file
1
mysql-test/t/rpl_rewrite_db-slave.opt
Normal file
@ -0,0 +1 @@
|
||||
"--replicate-rewrite-db=mysqltest1->test"
|
19
mysql-test/t/rpl_rewrite_db.test
Normal file
19
mysql-test/t/rpl_rewrite_db.test
Normal file
@ -0,0 +1,19 @@
|
||||
source include/master-slave.inc;
|
||||
--disable_warnings
|
||||
drop database if exists mysqltest1;
|
||||
--enable_warnings
|
||||
create database mysqltest1;
|
||||
|
||||
use mysqltest1;
|
||||
create table t1 (a int);
|
||||
insert into t1 values(9);
|
||||
select * from mysqltest1.t1;
|
||||
sync_slave_with_master;
|
||||
show databases like 'mysqltest1'; # should be empty
|
||||
select * from test.t1;
|
||||
# cleanup
|
||||
connection master;
|
||||
drop table t1;
|
||||
drop database mysqltest1;
|
||||
sync_slave_with_master;
|
||||
|
@ -23,7 +23,8 @@ drop table if exists t1, t2, t3, t4;
|
||||
|
||||
# START SLAVE will fail because it can't read the file (mode 000)
|
||||
# (system error 13)
|
||||
--error 1201
|
||||
--replace_result $MYSQL_TEST_DIR TESTDIR
|
||||
--error 1105
|
||||
start slave;
|
||||
system chmod 600 var/slave-data/master.info;
|
||||
# It will fail again because the file is empty so the slave cannot get valuable
|
||||
|
@ -76,7 +76,7 @@ select * from t2;
|
||||
# replication
|
||||
#
|
||||
connection master;
|
||||
--error 1105
|
||||
--error 1387
|
||||
set global time_zone='MET';
|
||||
|
||||
# Clean up
|
||||
|
@ -58,7 +58,7 @@ select db1_secret.db();
|
||||
select * from db1_secret.t1;
|
||||
|
||||
# ...and not this
|
||||
--error 1049
|
||||
--error 1044
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
--error 1305
|
||||
drop procedure db1_secret.dummy;
|
||||
@ -78,7 +78,7 @@ select db1_secret.db();
|
||||
select * from db1_secret.t1;
|
||||
|
||||
# ...and not this
|
||||
--error 1049
|
||||
--error 1044
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
--error 1305
|
||||
drop procedure db1_secret.dummy;
|
||||
|
@ -1870,12 +1870,27 @@ create procedure bug4904()
|
||||
begin
|
||||
declare continue handler for sqlstate 'HY000' begin end;
|
||||
|
||||
create table t2 as select * from t;
|
||||
create table t2 as select * from t3;
|
||||
end|
|
||||
|
||||
-- error 1146
|
||||
call bug4904()|
|
||||
|
||||
drop procedure bug4904|
|
||||
|
||||
create table t3 (s1 char character set latin1, s2 char character set latin2)|
|
||||
|
||||
create procedure bug4904 ()
|
||||
begin
|
||||
declare continue handler for sqlstate 'HY000' begin end;
|
||||
|
||||
select s1 from t3 union select s2 from t3;
|
||||
end|
|
||||
|
||||
call bug4904()|
|
||||
|
||||
drop procedure bug4904|
|
||||
drop table t3|
|
||||
|
||||
#
|
||||
# BUG#336
|
||||
|
1
mysql-test/t/timezone3-master.opt
Normal file
1
mysql-test/t/timezone3-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--timezone=:$MYSQL_TEST_DIR/std_data/Moscow_leap
|
59
mysql-test/t/timezone3.test
Normal file
59
mysql-test/t/timezone3.test
Normal file
@ -0,0 +1,59 @@
|
||||
#
|
||||
# Test of handling time zone with leap seconds.
|
||||
#
|
||||
# This test should be run with TZ=:$MYSQL_TEST_DIR/std_data/Moscow_leap
|
||||
# This implies that this test should be run only on systems that interpret
|
||||
# characters after colon in TZ variable as path to zoneinfo file.
|
||||
#
|
||||
# Check that we have successfully set time zone with leap seconds.
|
||||
--require r/have_moscow_leap_timezone.require
|
||||
disable_query_log;
|
||||
select from_unixtime(1072904422);
|
||||
enable_query_log;
|
||||
|
||||
# Initial clean-up
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Let us check behavior of conversion from broken-down representation
|
||||
# to time_t representation, for normal, non-existent and ambigious dates
|
||||
# (This check is similar to the one in timezone2.test in 4.1)
|
||||
#
|
||||
create table t1 (i int, c varchar(20));
|
||||
# Normal value without DST
|
||||
insert into t1 values
|
||||
(unix_timestamp("2004-01-01 00:00:00"), "2004-01-01 00:00:00");
|
||||
# Values around and in spring time-gap
|
||||
insert into t1 values
|
||||
(unix_timestamp("2004-03-28 01:59:59"), "2004-03-28 01:59:59"),
|
||||
(unix_timestamp("2004-03-28 02:30:00"), "2004-03-28 02:30:00"),
|
||||
(unix_timestamp("2004-03-28 03:00:00"), "2004-03-28 03:00:00");
|
||||
# Normal value with DST
|
||||
insert into t1 values
|
||||
(unix_timestamp('2004-05-01 00:00:00'),'2004-05-01 00:00:00');
|
||||
# Ambiguos values (also check for determenism)
|
||||
insert into t1 values
|
||||
(unix_timestamp('2004-10-31 01:00:00'),'2004-10-31 01:00:00'),
|
||||
(unix_timestamp('2004-10-31 02:00:00'),'2004-10-31 02:00:00'),
|
||||
(unix_timestamp('2004-10-31 02:59:59'),'2004-10-31 02:59:59'),
|
||||
(unix_timestamp('2004-10-31 04:00:00'),'2004-10-31 04:00:00'),
|
||||
(unix_timestamp('2004-10-31 02:59:59'),'2004-10-31 02:59:59');
|
||||
# Test of leap
|
||||
insert into t1 values
|
||||
(unix_timestamp('1981-07-01 03:59:59'),'1981-07-01 03:59:59'),
|
||||
(unix_timestamp('1981-07-01 04:00:00'),'1981-07-01 04:00:00');
|
||||
|
||||
select i, from_unixtime(i), c from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test for bug #6387 "Queried timestamp values do not match the
|
||||
# inserted". my_gmt_sec() function was not working properly if we
|
||||
# had time zone with leap seconds
|
||||
#
|
||||
create table t1 (ts timestamp);
|
||||
insert into t1 values (19730101235900), (20040101235900);
|
||||
select * from t1;
|
||||
drop table t1;
|
@ -207,3 +207,20 @@ create trigger tx1 before insert on t1 for each row set new.x1col = 'x';
|
||||
insert into t1 values ('y');
|
||||
drop trigger t1.tx1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test for bug #5890 "Triggers fail for DELETE without WHERE".
|
||||
# If we are going to delete all rows in table but DELETE triggers exist
|
||||
# we should perform row-by-row deletion instead of using optimized
|
||||
# delete_all_rows() method.
|
||||
#
|
||||
create table t1 (i int) engine=myisam;
|
||||
insert into t1 values (1), (2);
|
||||
create trigger trg1 before delete on t1 for each row set @del_before:= @del_before + old.i;
|
||||
create trigger trg2 after delete on t1 for each row set @del_after:= @del_after + old.i;
|
||||
set @del_before:=0, @del_after:= 0;
|
||||
delete from t1;
|
||||
select @del_before, @del_after;
|
||||
drop trigger t1.trg1;
|
||||
drop trigger t1.trg2;
|
||||
drop table t1;
|
||||
|
Reference in New Issue
Block a user