Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines BitKeeper/etc/ignore: auto-union mysql-test/r/myisam.result: Auto merged mysql-test/t/myisam.test: Auto merged sql/sql_insert.cc: Auto merged sql/sql_select.cc: Auto merged sql/share/errmsg.txt: Auto merged sql/table.cc: Auto merged
This commit is contained in:
commit
ef5fe1f2b7
@ -2,3 +2,4 @@
|
||||
44ec850ac2k4y2Omgr92GiWPBAVKGQ
|
||||
44edb86b1iE5knJ97MbliK_3lCiAXA
|
||||
44f33f3aj5KW5qweQeekY1LU0E9ZCg
|
||||
4513d8e4Af4dQWuk13sArwofRgFDQw
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
noinst_SCRIPTS = Support/generate-text-files.pl
|
||||
|
||||
EXTRA_DIST = $(noinst_SCRIPTS) mysql.info INSTALL-BINARY
|
||||
EXTRA_DIST = $(noinst_SCRIPTS) manual.chm mysql.info INSTALL-BINARY
|
||||
|
||||
TXT_FILES= ../INSTALL-SOURCE ../INSTALL-WIN-SOURCE ../EXCEPTIONS-CLIENT \
|
||||
INSTALL-BINARY ../support-files/MacOSX/ReadMe.txt
|
||||
|
14
Docs/manual.chm
Normal file
14
Docs/manual.chm
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
*********************************************************
|
||||
|
||||
This is a dummy placeholder file for "manual.chm" in the
|
||||
MySQL source trees.
|
||||
|
||||
Note, that the documentation has been moved into a separate
|
||||
BitKeeper source tree named "mysqldoc" - do not attempt to edit this
|
||||
file! All changes to it should be done in the mysqldoc tree.
|
||||
|
||||
This dummy file is being replaced with the actual file from the
|
||||
mysqldoc tree when building the official source distribution.
|
||||
|
||||
*********************************************************
|
@ -66,6 +66,9 @@ TARGET_LINK_LIBRARIES(mysqldump mysqlclient mysys dbug yassl taocrypt zlib wsock
|
||||
ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient mysys dbug yassl taocrypt zlib wsock32)
|
||||
|
||||
ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient mysys dbug yassl taocrypt zlib wsock32)
|
||||
|
||||
ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient mysys dbug yassl taocrypt zlib wsock32)
|
||||
|
||||
|
@ -658,13 +658,13 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
tty_password=1;
|
||||
break;
|
||||
case 'r':
|
||||
if (!(md_result_file = my_fopen(argument, O_WRONLY | FILE_BINARY,
|
||||
if (!(md_result_file= my_fopen(argument, O_WRONLY | FILE_BINARY,
|
||||
MYF(MY_WME))))
|
||||
exit(1);
|
||||
break;
|
||||
case 'W':
|
||||
#ifdef __WIN__
|
||||
opt_protocol = MYSQL_PROTOCOL_PIPE;
|
||||
opt_protocol= MYSQL_PROTOCOL_PIPE;
|
||||
#endif
|
||||
break;
|
||||
case 'N':
|
||||
@ -679,7 +679,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
#include <sslopt-case.h>
|
||||
case 'V': print_version(); exit(0);
|
||||
case 'X':
|
||||
opt_xml = 1;
|
||||
opt_xml= 1;
|
||||
extended_insert= opt_drop= opt_lock=
|
||||
opt_disable_keys= opt_autocommit= opt_create_db= 0;
|
||||
break;
|
||||
@ -1442,7 +1442,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
||||
const char *insert_option;
|
||||
char name_buff[NAME_LEN+3],table_buff[NAME_LEN*2+3];
|
||||
char table_buff2[NAME_LEN*2+3], query_buff[512];
|
||||
FILE *sql_file = md_result_file;
|
||||
FILE *sql_file= md_result_file;
|
||||
int len;
|
||||
MYSQL_RES *result;
|
||||
MYSQL_ROW row;
|
||||
@ -1486,7 +1486,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
||||
opt_quoted_table= quote_name(table, table_buff2, 0);
|
||||
|
||||
if (opt_order_by_primary)
|
||||
order_by = primary_key_fields(result_table);
|
||||
order_by= primary_key_fields(result_table);
|
||||
|
||||
if (!opt_xml && !mysql_query_with_error_report(mysql, 0, query_buff))
|
||||
{
|
||||
@ -1538,7 +1538,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
||||
field= mysql_fetch_field_direct(result, 0);
|
||||
if (strcmp(field->name, "View") == 0)
|
||||
{
|
||||
char *scv_buff = NULL;
|
||||
char *scv_buff= NULL;
|
||||
|
||||
verbose_msg("-- It's a view, create dummy table for view\n");
|
||||
|
||||
@ -1575,7 +1575,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
||||
my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
|
||||
|
||||
safe_exit(EX_MYSQLERR);
|
||||
DBUG_RETURN(0);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
else
|
||||
my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
|
||||
@ -1939,7 +1939,7 @@ static void dump_triggers_for_table (char *table, char *db)
|
||||
char name_buff[NAME_LEN*4+3], table_buff[NAME_LEN*2+3];
|
||||
char query_buff[512];
|
||||
uint old_opt_compatible_mode=opt_compatible_mode;
|
||||
FILE *sql_file = md_result_file;
|
||||
FILE *sql_file= md_result_file;
|
||||
MYSQL_RES *result;
|
||||
MYSQL_ROW row;
|
||||
|
||||
@ -2183,15 +2183,15 @@ static void dump_table(char *table, char *db)
|
||||
end= strmov(end,buff);
|
||||
if (where || order_by)
|
||||
{
|
||||
query = alloc_query_str((ulong) ((end - query) + 1 +
|
||||
query= alloc_query_str((ulong) ((end - query) + 1 +
|
||||
(where ? strlen(where) + 7 : 0) +
|
||||
(order_by ? strlen(order_by) + 10 : 0)));
|
||||
end = strmov(query, query_buf);
|
||||
end= strmov(query, query_buf);
|
||||
|
||||
if (where)
|
||||
end = strxmov(end, " WHERE ", where, NullS);
|
||||
end= strxmov(end, " WHERE ", where, NullS);
|
||||
if (order_by)
|
||||
end = strxmov(end, " ORDER BY ", order_by, NullS);
|
||||
end= strxmov(end, " ORDER BY ", order_by, NullS);
|
||||
}
|
||||
if (mysql_real_query(mysql, query, (uint) (end - query)))
|
||||
{
|
||||
@ -2212,10 +2212,10 @@ static void dump_table(char *table, char *db)
|
||||
result_table);
|
||||
if (where || order_by)
|
||||
{
|
||||
query = alloc_query_str((ulong) (strlen(query) + 1 +
|
||||
query= alloc_query_str((ulong) (strlen(query) + 1 +
|
||||
(where ? strlen(where) + 7 : 0) +
|
||||
(order_by ? strlen(order_by) + 10 : 0)));
|
||||
end = strmov(query, query_buf);
|
||||
end= strmov(query, query_buf);
|
||||
|
||||
if (where)
|
||||
{
|
||||
@ -2224,7 +2224,7 @@ static void dump_table(char *table, char *db)
|
||||
fprintf(md_result_file, "-- WHERE: %s\n", where);
|
||||
check_io(md_result_file);
|
||||
}
|
||||
end = strxmov(end, " WHERE ", where, NullS);
|
||||
end= strxmov(end, " WHERE ", where, NullS);
|
||||
}
|
||||
if (order_by)
|
||||
{
|
||||
@ -2233,7 +2233,7 @@ static void dump_table(char *table, char *db)
|
||||
fprintf(md_result_file, "-- ORDER BY: %s\n", order_by);
|
||||
check_io(md_result_file);
|
||||
}
|
||||
end = strxmov(end, " ORDER BY ", order_by, NullS);
|
||||
end= strxmov(end, " ORDER BY ", order_by, NullS);
|
||||
}
|
||||
}
|
||||
if (!opt_xml && !opt_compact)
|
||||
@ -2309,12 +2309,12 @@ static void dump_table(char *table, char *db)
|
||||
check_io(md_result_file);
|
||||
}
|
||||
|
||||
for (i = 0; i < mysql_num_fields(res); i++)
|
||||
for (i= 0; i < mysql_num_fields(res); i++)
|
||||
{
|
||||
int is_blob;
|
||||
ulong length= lengths[i];
|
||||
|
||||
if (!(field = mysql_fetch_field(res)))
|
||||
if (!(field= mysql_fetch_field(res)))
|
||||
{
|
||||
my_snprintf(query, QUERY_LENGTH,
|
||||
"%s: Not enough fields from table %s! Aborting.\n",
|
||||
@ -2386,7 +2386,7 @@ static void dump_table(char *table, char *db)
|
||||
else
|
||||
{
|
||||
/* change any strings ("inf", "-inf", "nan") into NULL */
|
||||
char *ptr = row[i];
|
||||
char *ptr= row[i];
|
||||
if (my_isalpha(charset_info, *ptr) || (*ptr == '-' &&
|
||||
my_isalpha(charset_info, ptr[1])))
|
||||
dynstr_append(&extended_row, "NULL");
|
||||
@ -2446,7 +2446,7 @@ static void dump_table(char *table, char *db)
|
||||
else
|
||||
{
|
||||
/* change any strings ("inf", "-inf", "nan") into NULL */
|
||||
char *ptr = row[i];
|
||||
char *ptr= row[i];
|
||||
if (opt_xml)
|
||||
{
|
||||
print_xml_tag1(md_result_file, "\t\t", "field name=",
|
||||
@ -2492,10 +2492,10 @@ static void dump_table(char *table, char *db)
|
||||
{
|
||||
ulong row_length;
|
||||
dynstr_append(&extended_row,")");
|
||||
row_length = 2 + extended_row.length;
|
||||
row_length= 2 + extended_row.length;
|
||||
if (total_length + row_length < opt_net_buffer_length)
|
||||
{
|
||||
total_length += row_length;
|
||||
total_length+= row_length;
|
||||
fputc(',',md_result_file); /* Always row break */
|
||||
fputs(extended_row.str,md_result_file);
|
||||
}
|
||||
@ -2507,7 +2507,7 @@ static void dump_table(char *table, char *db)
|
||||
|
||||
fputs(insert_pat.str,md_result_file);
|
||||
fputs(extended_row.str,md_result_file);
|
||||
total_length = row_length+init_length;
|
||||
total_length= row_length+init_length;
|
||||
}
|
||||
check_io(md_result_file);
|
||||
}
|
||||
@ -2572,15 +2572,15 @@ err:
|
||||
|
||||
static char *getTableName(int reset)
|
||||
{
|
||||
static MYSQL_RES *res = NULL;
|
||||
static MYSQL_RES *res= NULL;
|
||||
MYSQL_ROW row;
|
||||
|
||||
if (!res)
|
||||
{
|
||||
if (!(res = mysql_list_tables(mysql,NullS)))
|
||||
if (!(res= mysql_list_tables(mysql,NullS)))
|
||||
return(NULL);
|
||||
}
|
||||
if ((row = mysql_fetch_row(res)))
|
||||
if ((row= mysql_fetch_row(res)))
|
||||
return((char*) row[0]);
|
||||
|
||||
if (reset)
|
||||
@ -2588,7 +2588,7 @@ static char *getTableName(int reset)
|
||||
else
|
||||
{
|
||||
mysql_free_result(res);
|
||||
res = NULL;
|
||||
res= NULL;
|
||||
}
|
||||
return(NULL);
|
||||
} /* getTableName */
|
||||
@ -2602,7 +2602,7 @@ static int dump_all_databases()
|
||||
|
||||
if (mysql_query_with_error_report(mysql, &tableres, "SHOW DATABASES"))
|
||||
return 1;
|
||||
while ((row = mysql_fetch_row(tableres)))
|
||||
while ((row= mysql_fetch_row(tableres)))
|
||||
{
|
||||
if (dump_all_tables_in_db(row[0]))
|
||||
result=1;
|
||||
@ -2610,13 +2610,13 @@ static int dump_all_databases()
|
||||
if (seen_views)
|
||||
{
|
||||
if (mysql_query(mysql, "SHOW DATABASES") ||
|
||||
!(tableres = mysql_store_result(mysql)))
|
||||
!(tableres= mysql_store_result(mysql)))
|
||||
{
|
||||
my_printf_error(0, "Error: Couldn't execute 'SHOW DATABASES': %s",
|
||||
MYF(0), mysql_error(mysql));
|
||||
return 1;
|
||||
}
|
||||
while ((row = mysql_fetch_row(tableres)))
|
||||
while ((row= mysql_fetch_row(tableres)))
|
||||
{
|
||||
if (dump_all_views_in_db(row[0]))
|
||||
result=1;
|
||||
@ -3048,7 +3048,7 @@ static int do_show_master_status(MYSQL *mysql_con)
|
||||
}
|
||||
else
|
||||
{
|
||||
row = mysql_fetch_row(master);
|
||||
row= mysql_fetch_row(master);
|
||||
if (row && row[0] && row[1])
|
||||
{
|
||||
/* SHOW MASTER STATUS reports file and position */
|
||||
@ -3175,7 +3175,7 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
|
||||
MYSQL_FIELD *field;
|
||||
mysql_field_seek(result, 0);
|
||||
|
||||
for ( ; (field = mysql_fetch_field(result)) ; row++)
|
||||
for ( ; (field= mysql_fetch_field(result)) ; row++)
|
||||
{
|
||||
if (!strcmp(field->name,name))
|
||||
{
|
||||
@ -3303,17 +3303,19 @@ char check_if_ignore_table(const char *table_name, char *table_type)
|
||||
|
||||
static char *primary_key_fields(const char *table_name)
|
||||
{
|
||||
MYSQL_RES *res = NULL;
|
||||
MYSQL_RES *res= NULL;
|
||||
MYSQL_ROW row;
|
||||
/* SHOW KEYS FROM + table name * 2 (escaped) + 2 quotes + \0 */
|
||||
char show_keys_buff[15 + NAME_LEN * 2 + 3];
|
||||
uint result_length = 0;
|
||||
char *result = 0;
|
||||
uint result_length= 0;
|
||||
char *result= 0;
|
||||
char buff[NAME_LEN * 2 + 3];
|
||||
char *quoted_field;
|
||||
|
||||
my_snprintf(show_keys_buff, sizeof(show_keys_buff),
|
||||
"SHOW KEYS FROM %s", table_name);
|
||||
if (mysql_query(mysql, show_keys_buff) ||
|
||||
!(res = mysql_store_result(mysql)))
|
||||
!(res= mysql_store_result(mysql)))
|
||||
{
|
||||
fprintf(stderr, "Warning: Couldn't read keys from table %s;"
|
||||
" records are NOT sorted (%s)\n",
|
||||
@ -3328,12 +3330,14 @@ static char *primary_key_fields(const char *table_name)
|
||||
* row, and UNIQUE keys come before others. So we only need to check
|
||||
* the first key, not all keys.
|
||||
*/
|
||||
if ((row = mysql_fetch_row(res)) && atoi(row[1]) == 0)
|
||||
if ((row= mysql_fetch_row(res)) && atoi(row[1]) == 0)
|
||||
{
|
||||
/* Key is unique */
|
||||
do
|
||||
result_length += strlen(row[4]) + 1; /* + 1 for ',' or \0 */
|
||||
while ((row = mysql_fetch_row(res)) && atoi(row[3]) > 1);
|
||||
{
|
||||
quoted_field= quote_name(row[4], buff, 0);
|
||||
result_length+= strlen(quoted_field) + 1; /* + 1 for ',' or \0 */
|
||||
} while ((row= mysql_fetch_row(res)) && atoi(row[3]) > 1);
|
||||
}
|
||||
|
||||
/* Build the ORDER BY clause result */
|
||||
@ -3341,17 +3345,21 @@ static char *primary_key_fields(const char *table_name)
|
||||
{
|
||||
char *end;
|
||||
/* result (terminating \0 is already in result_length) */
|
||||
result = my_malloc(result_length + 10, MYF(MY_WME));
|
||||
result= my_malloc(result_length + 10, MYF(MY_WME));
|
||||
if (!result)
|
||||
{
|
||||
fprintf(stderr, "Error: Not enough memory to store ORDER BY clause\n");
|
||||
goto cleanup;
|
||||
}
|
||||
mysql_data_seek(res, 0);
|
||||
row = mysql_fetch_row(res);
|
||||
end = strmov(result, row[4]);
|
||||
while ((row = mysql_fetch_row(res)) && atoi(row[3]) > 1)
|
||||
end = strxmov(end, ",", row[4], NullS);
|
||||
row= mysql_fetch_row(res);
|
||||
quoted_field= quote_name(row[4], buff, 0);
|
||||
end= strmov(result, quoted_field);
|
||||
while ((row= mysql_fetch_row(res)) && atoi(row[3]) > 1)
|
||||
{
|
||||
quoted_field= quote_name(row[4], buff, 0);
|
||||
end= strxmov(end, ",", quoted_field, NullS);
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
@ -3419,7 +3427,7 @@ static my_bool get_view_structure(char *table, char* db)
|
||||
char table_buff[NAME_LEN*2+3];
|
||||
char table_buff2[NAME_LEN*2+3];
|
||||
char query[QUERY_LENGTH];
|
||||
FILE *sql_file = md_result_file;
|
||||
FILE *sql_file= md_result_file;
|
||||
DBUG_ENTER("get_view_structure");
|
||||
|
||||
if (opt_no_create_info) /* Don't write table creation info */
|
||||
|
@ -1216,6 +1216,7 @@ EOF
|
||||
#
|
||||
echo -n "making sure specific build files are writable... "
|
||||
for file in \
|
||||
Docs/manual.chm \
|
||||
Docs/mysql.info \
|
||||
Docs/INSTALL-BINARY \
|
||||
INSTALL-SOURCE \
|
||||
|
@ -26,9 +26,6 @@
|
||||
#define USERNAME_LENGTH 16
|
||||
#define SERVER_VERSION_LENGTH 60
|
||||
#define SQLSTATE_LENGTH 5
|
||||
#define SYSTEM_CHARSET_MBMAXLEN 3
|
||||
#define NAME_BYTE_LEN NAME_LEN*SYSTEM_CHARSET_MBMAXLEN
|
||||
#define USERNAME_BYTE_LENGTH USERNAME_LENGTH*SYSTEM_CHARSET_MBMAXLEN
|
||||
|
||||
/*
|
||||
USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain
|
||||
@ -36,7 +33,7 @@
|
||||
MySQL standard format:
|
||||
user_name_part@host_name_part\0
|
||||
*/
|
||||
#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_BYTE_LENGTH + 2
|
||||
#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2
|
||||
|
||||
#define LOCAL_HOST "localhost"
|
||||
#define LOCAL_HOST_NAMEDPIPE "."
|
||||
|
@ -1370,7 +1370,8 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info,
|
||||
param->temp_filename);
|
||||
goto err;
|
||||
}
|
||||
if (filecopy(param,new_file,info->dfile,0L,new_header_length,
|
||||
if (new_header_length &&
|
||||
filecopy(param,new_file,info->dfile,0L,new_header_length,
|
||||
"datafile-header"))
|
||||
goto err;
|
||||
info->s->state.dellink= HA_OFFSET_ERROR;
|
||||
@ -2072,7 +2073,8 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
|
||||
param->temp_filename);
|
||||
goto err;
|
||||
}
|
||||
if (filecopy(param, new_file,info->dfile,0L,new_header_length,
|
||||
if (new_header_length &&
|
||||
filecopy(param, new_file,info->dfile,0L,new_header_length,
|
||||
"datafile-header"))
|
||||
goto err;
|
||||
if (param->testflag & T_UNPACK)
|
||||
@ -2440,7 +2442,8 @@ int mi_repair_parallel(MI_CHECK *param, register MI_INFO *info,
|
||||
param->temp_filename);
|
||||
goto err;
|
||||
}
|
||||
if (filecopy(param, new_file,info->dfile,0L,new_header_length,
|
||||
if (new_header_length &&
|
||||
filecopy(param, new_file,info->dfile,0L,new_header_length,
|
||||
"datafile-header"))
|
||||
goto err;
|
||||
if (param->testflag & T_UNPACK)
|
||||
|
@ -1110,7 +1110,9 @@ sub executable_setup () {
|
||||
$path_ndb_tools_dir= mtr_path_exists("$glob_basedir/ndb/tools");
|
||||
$exe_ndb_mgm= "$glob_basedir/ndb/src/mgmclient/ndb_mgm";
|
||||
$lib_udf_example=
|
||||
mtr_file_exists("$glob_basedir/sql/.libs/udf_example.so");
|
||||
mtr_file_exists("$glob_basedir/sql/.libs/udf_example.so",
|
||||
"$glob_basedir/sql/release/udf_example.dll",
|
||||
"$glob_basedir/sql/debug/udf_example.dll");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -755,6 +755,27 @@ select export_set(5, name, upper(name), ",", 5) from bug20536;
|
||||
export_set(5, name, upper(name), ",", 5)
|
||||
test1,TEST1,test1,TEST1,TEST1
|
||||
'test\_2','TEST\_2','test\_2','TEST\_2','TEST\_2'
|
||||
CREATE TABLE t1 (
|
||||
status enum('active','passive') collate latin1_general_ci
|
||||
NOT NULL default 'passive'
|
||||
);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`status` enum('active','passive') character set latin1 collate latin1_general_ci NOT NULL default 'passive'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t1 ADD a int NOT NULL AFTER status;
|
||||
CREATE TABLE t2 (
|
||||
status enum('active','passive') collate ucs2_turkish_ci
|
||||
NOT NULL default 'passive'
|
||||
);
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`status` enum('active','passive') character set ucs2 collate ucs2_turkish_ci NOT NULL default 'passive'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t2 ADD a int NOT NULL AFTER status;
|
||||
DROP TABLE t1,t2;
|
||||
select password(name) from bug20536;
|
||||
password(name)
|
||||
????????????????????
|
||||
|
@ -1340,19 +1340,6 @@ select a from t1 group by a;
|
||||
a
|
||||
e
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
grant select on test.* to юзер_юзер@localhost;
|
||||
user()
|
||||
юзер_юзер@localhost
|
||||
revoke all on test.* from юзер_юзер@localhost;
|
||||
drop user юзер_юзер@localhost;
|
||||
create database имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
|
||||
use имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
|
||||
select database();
|
||||
database()
|
||||
имя_базы_в_кодировке_утф8_длиной_больше_чем_45
|
||||
drop database имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
|
||||
use test;
|
||||
CREATE TABLE t1(id varchar(20) NOT NULL) DEFAULT CHARSET=utf8;
|
||||
INSERT INTO t1 VALUES ('xxx'), ('aa'), ('yyy'), ('aa');
|
||||
SELECT id FROM t1;
|
||||
|
@ -654,3 +654,12 @@ CHAR_LENGTH( GROUP_CONCAT(b) )
|
||||
240001
|
||||
SET GROUP_CONCAT_MAX_LEN = 1024;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 VALUES (2,1), (1,2), (2,2), (1,3);
|
||||
SELECT GROUP_CONCAT(a), x
|
||||
FROM (SELECT a, GROUP_CONCAT(b) x FROM t1 GROUP BY a) AS s
|
||||
GROUP BY x;
|
||||
GROUP_CONCAT(a) x
|
||||
2 1,2
|
||||
1 2,3
|
||||
DROP TABLE t1;
|
||||
|
@ -860,8 +860,8 @@ CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1,1),(1,2),(2,3);
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b)) FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b))
|
||||
0
|
||||
2
|
||||
1
|
||||
SELECT (SELECT COUNT(DISTINCT 12)) FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT 12))
|
||||
1
|
||||
@ -1013,7 +1013,7 @@ SELECT SQL_NO_CACHE
|
||||
WHERE ttt.a = ccc.b AND ttt.a = t.a GROUP BY ttt.a) AS minid
|
||||
FROM t1 t, t2 c WHERE t.a = c.b;
|
||||
minid
|
||||
NULL
|
||||
1
|
||||
DROP TABLE t1,t2;
|
||||
create table t1 select variance(0);
|
||||
show create table t1;
|
||||
|
@ -821,12 +821,3 @@ a b real_b
|
||||
68 France France
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a));
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2), (3,3), (4,4);
|
||||
EXPLAIN SELECT a, SUM(b) FROM t1 GROUP BY a LIMIT 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a 5 NULL 4
|
||||
EXPLAIN SELECT a, SUM(b) FROM t1 IGNORE INDEX (a) GROUP BY a LIMIT 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using temporary; Using filesort
|
||||
DROP TABLE t1;
|
||||
|
@ -22,6 +22,9 @@ INSERT INTO t1 VALUES (1), (2);
|
||||
</database>
|
||||
</mysqldump>
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #2005
|
||||
#
|
||||
CREATE TABLE t1 (a decimal(64, 20));
|
||||
INSERT INTO t1 VALUES ("1234567890123456789012345678901234567890"),
|
||||
("0987654321098765432109876543210987654321");
|
||||
@ -30,6 +33,9 @@ CREATE TABLE `t1` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t1` VALUES ('1234567890123456789012345678901234567890.00000000000000000000'),('987654321098765432109876543210987654321.00000000000000000000');
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #2055
|
||||
#
|
||||
CREATE TABLE t1 (a double);
|
||||
INSERT INTO t1 VALUES ('-9e999999');
|
||||
Warnings:
|
||||
@ -39,6 +45,9 @@ CREATE TABLE `t1` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t1` VALUES (RES);
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #3361 mysqldump quotes DECIMAL values inconsistently
|
||||
#
|
||||
CREATE TABLE t1 (a DECIMAL(10,5), b FLOAT);
|
||||
INSERT INTO t1 VALUES (1.2345, 2.3456);
|
||||
INSERT INTO t1 VALUES ('1.2345', 2.3456);
|
||||
@ -136,6 +145,9 @@ INSERT INTO t1 VALUES (1, "test", "tes"), (2, "TEST", "TES");
|
||||
</database>
|
||||
</mysqldump>
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #1707
|
||||
#
|
||||
CREATE TABLE t1 (`a"b"` char(2));
|
||||
INSERT INTO t1 VALUES ("1\""), ("\"2");
|
||||
<?xml version="1.0"?>
|
||||
@ -155,6 +167,10 @@ INSERT INTO t1 VALUES ("1\""), ("\"2");
|
||||
</database>
|
||||
</mysqldump>
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #1994
|
||||
# Bug #4261
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(255)) DEFAULT CHARSET koi8r;
|
||||
INSERT INTO t1 VALUES (_koi8r x'C1C2C3C4C5'), (NULL);
|
||||
|
||||
@ -190,6 +206,9 @@ UNLOCK TABLES;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #2634
|
||||
#
|
||||
CREATE TABLE t1 (a int) ENGINE=MYISAM;
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
@ -239,11 +258,17 @@ UNLOCK TABLES;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #2592 'mysqldump doesn't quote "tricky" names correctly'
|
||||
#
|
||||
create table ```a` (i int);
|
||||
CREATE TABLE ```a` (
|
||||
`i` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
drop table ```a`;
|
||||
#
|
||||
# Bug #2591 "mysqldump quotes names inconsistently"
|
||||
#
|
||||
create table t1(a int);
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
@ -352,6 +377,9 @@ UNLOCK TABLES;
|
||||
|
||||
set global sql_mode='';
|
||||
drop table t1;
|
||||
#
|
||||
# Bug #2705 'mysqldump --tab extra output'
|
||||
#
|
||||
create table t1(a int);
|
||||
insert into t1 values (1),(2),(3);
|
||||
|
||||
@ -380,6 +408,9 @@ CREATE TABLE `t1` (
|
||||
2
|
||||
3
|
||||
drop table t1;
|
||||
#
|
||||
# Bug #6101: create database problem
|
||||
#
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
@ -432,6 +463,12 @@ USE `mysqldump_test_db`;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
drop database mysqldump_test_db;
|
||||
#
|
||||
# Bug #7020
|
||||
# Check that we don't dump in UTF8 in compatible mode by default,
|
||||
# but use the default compiled values, or the values given in
|
||||
# --default-character-set=xxx. However, we should dump in UTF8
|
||||
# if it is explicitely set.
|
||||
CREATE TABLE t1 (a CHAR(10));
|
||||
INSERT INTO t1 VALUES (_latin1 'ÄÖÜß');
|
||||
|
||||
@ -465,6 +502,13 @@ UNLOCK TABLES;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
#
|
||||
# Bug#8063: make test mysqldump [ fail ]
|
||||
# We cannot tes this command because its output depends
|
||||
# on --default-character-set incompiled into "mysqldump" program.
|
||||
# If the future we can move this command into a separate test with
|
||||
# checking that "mysqldump" is compiled with "latin1"
|
||||
#
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
@ -535,6 +579,9 @@ UNLOCK TABLES;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# WL #2319: Exclude Tables from dump
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t2 (a int);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
@ -572,6 +619,9 @@ UNLOCK TABLES;
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Bug #8830
|
||||
#
|
||||
CREATE TABLE t1 (`b` blob);
|
||||
INSERT INTO `t1` VALUES (0x602010000280100005E71A);
|
||||
|
||||
@ -606,6 +656,9 @@ UNLOCK TABLES;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test for --insert-ignore
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
INSERT INTO t1 VALUES (4),(5),(6);
|
||||
@ -670,6 +723,10 @@ INSERT DELAYED IGNORE INTO `t1` VALUES (1),(2),(3),(4),(5),(6);
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #10286: mysqldump -c crashes on table that has many fields with long
|
||||
# names
|
||||
#
|
||||
create table t1 (
|
||||
F_c4ca4238a0b923820dcc509a6f75849b int,
|
||||
F_c81e728d9d4c2f636f067f89cc14862c int,
|
||||
@ -1363,6 +1420,9 @@ UNLOCK TABLES;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
drop table t1;
|
||||
#
|
||||
# Test for --add-drop-database
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
|
||||
@ -1403,6 +1463,9 @@ UNLOCK TABLES;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #9558 mysqldump --no-data db t1 t2 format still dumps data
|
||||
#
|
||||
CREATE DATABASE mysqldump_test_db;
|
||||
USE mysqldump_test_db;
|
||||
CREATE TABLE t1 ( a INT );
|
||||
@ -1491,6 +1554,11 @@ CREATE TABLE `t2` (
|
||||
</mysqldump>
|
||||
DROP TABLE t1, t2;
|
||||
DROP DATABASE mysqldump_test_db;
|
||||
#
|
||||
# Testing with tables and databases that don't exists
|
||||
# or contains illegal characters
|
||||
# (Bug #9358 mysqldump crashes if tablename starts with \)
|
||||
#
|
||||
create database mysqldump_test_db;
|
||||
use mysqldump_test_db;
|
||||
create table t1(a varchar(30) primary key, b int not null);
|
||||
@ -1529,6 +1597,9 @@ mysqldump: Got error: 1102: Incorrect database name 'mysqld\ump_test_db' when se
|
||||
drop table t1, t2, t3;
|
||||
drop database mysqldump_test_db;
|
||||
use test;
|
||||
#
|
||||
# Bug #9657 mysqldump xml ( -x ) does not format NULL fields correctly
|
||||
#
|
||||
create table t1 (a int(10));
|
||||
create table t2 (pk int primary key auto_increment,
|
||||
a int(10), b varchar(30), c datetime, d blob, e text);
|
||||
@ -1585,6 +1656,9 @@ insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thir
|
||||
</database>
|
||||
</mysqldump>
|
||||
drop table t1, t2;
|
||||
#
|
||||
# BUG #12123
|
||||
#
|
||||
create table t1 (a text character set utf8, b text character set latin1);
|
||||
insert t1 values (0x4F736E616272C3BC636B, 0x4BF66C6E);
|
||||
select * from t1;
|
||||
@ -1595,7 +1669,13 @@ select * from t1;
|
||||
a b
|
||||
Osnabrück Köln
|
||||
drop table t1;
|
||||
#
|
||||
# BUG#15328 Segmentation fault occured if my.cnf is invalid for escape sequence
|
||||
#
|
||||
--fields-optionally-enclosed-by="
|
||||
#
|
||||
# BUG #19025 mysqldump doesn't correctly dump "auto_increment = [int]"
|
||||
#
|
||||
create table `t1` (
|
||||
t1_name varchar(255) default null,
|
||||
t1_id int(10) unsigned not null auto_increment,
|
||||
@ -1633,6 +1713,9 @@ t1 CREATE TABLE `t1` (
|
||||
KEY `t1_name` (`t1_name`)
|
||||
) ENGINE=MyISAM AUTO_INCREMENT=1003 DEFAULT CHARSET=latin1
|
||||
drop table `t1`;
|
||||
#
|
||||
# Bug #18536: wrong table order
|
||||
#
|
||||
create table t1(a int);
|
||||
create table t2(a int);
|
||||
create table t3(a int);
|
||||
@ -1670,6 +1753,9 @@ CREATE TABLE `t2` (
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
drop table t1, t2, t3;
|
||||
#
|
||||
# Bug #21288: mysqldump segmentation fault when using --where
|
||||
#
|
||||
create table t1 (a int);
|
||||
mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1` WHERE xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx': 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 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1 (1064)
|
||||
mysqldump: Got error: 1064: 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 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1 when retrieving data from server
|
||||
@ -1701,6 +1787,9 @@ CREATE TABLE `t1` (
|
||||
|
||||
drop table t1;
|
||||
End of 4.1 tests
|
||||
#
|
||||
# Bug #10213 mysqldump crashes when dumping VIEWs(on MacOS X)
|
||||
#
|
||||
create database db1;
|
||||
use db1;
|
||||
CREATE TABLE t2 (
|
||||
@ -1760,6 +1849,9 @@ drop table t2;
|
||||
drop view v2;
|
||||
drop database db1;
|
||||
use test;
|
||||
#
|
||||
# Bug 10713 mysqldump includes database in create view and referenced tables
|
||||
#
|
||||
create database db2;
|
||||
use db2;
|
||||
create table t1 (a int);
|
||||
@ -1833,6 +1925,9 @@ DROP TABLE IF EXISTS `v1`;
|
||||
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
#
|
||||
# Bug #10213 mysqldump crashes when dumping VIEWs(on MacOS X)
|
||||
#
|
||||
create database mysqldump_test_db;
|
||||
use mysqldump_test_db;
|
||||
CREATE TABLE t2 (
|
||||
@ -1892,6 +1987,9 @@ drop table t2;
|
||||
drop view v2;
|
||||
drop database mysqldump_test_db;
|
||||
use test;
|
||||
#
|
||||
# Bug #9756
|
||||
#
|
||||
CREATE TABLE t1 (a char(10));
|
||||
INSERT INTO t1 VALUES ('\'');
|
||||
|
||||
@ -1926,6 +2024,9 @@ UNLOCK TABLES;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #10927 mysqldump: Can't reload dump with view that consist of other view
|
||||
#
|
||||
create table t1(a int, b int, c varchar(30));
|
||||
insert into t1 values(1, 2, "one"), (2, 4, "two"), (3, 6, "three");
|
||||
create view v3 as
|
||||
@ -2003,6 +2104,9 @@ DROP TABLE IF EXISTS `v3`;
|
||||
|
||||
drop view v1, v2, v3;
|
||||
drop table t1;
|
||||
#
|
||||
# Test for dumping triggers
|
||||
#
|
||||
CREATE TABLE t1 (a int, b bigint default NULL);
|
||||
CREATE TABLE t2 (a int);
|
||||
create trigger trg1 before insert on t1 for each row
|
||||
@ -2201,8 +2305,14 @@ set @fired:= "No";
|
||||
end if;
|
||||
end BEFORE # STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER root@localhost
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# Bugs #9136, #12917: problems with --defaults-extra-file option
|
||||
#
|
||||
--port=1234
|
||||
--port=1234
|
||||
#
|
||||
# Test of fix to BUG 12597
|
||||
#
|
||||
DROP TABLE IF EXISTS `test1`;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test1'
|
||||
@ -2234,6 +2344,9 @@ a2
|
||||
DROP TRIGGER testref;
|
||||
DROP TABLE test1;
|
||||
DROP TABLE test2;
|
||||
#
|
||||
# BUG#9056 - mysqldump does not dump routines
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP FUNCTION IF EXISTS bug9056_func1;
|
||||
DROP FUNCTION IF EXISTS bug9056_func2;
|
||||
@ -2330,6 +2443,9 @@ DROP PROCEDURE bug9056_proc1;
|
||||
DROP PROCEDURE bug9056_proc2;
|
||||
DROP PROCEDURE `a'b`;
|
||||
drop table t1;
|
||||
#
|
||||
# BUG# 13052 - mysqldump timestamp reloads broken
|
||||
#
|
||||
drop table if exists t1;
|
||||
create table t1 (`d` timestamp, unique (`d`));
|
||||
set time_zone='+00:00';
|
||||
@ -2416,6 +2532,9 @@ UNLOCK TABLES;
|
||||
drop table t1;
|
||||
set global time_zone=default;
|
||||
set time_zone=default;
|
||||
#
|
||||
# Test of fix to BUG 13146 - ansi quotes break loading of triggers
|
||||
#
|
||||
DROP TABLE IF EXISTS `t1 test`;
|
||||
DROP TABLE IF EXISTS `t2 test`;
|
||||
CREATE TABLE `t1 test` (
|
||||
@ -2479,6 +2598,9 @@ UNLOCK TABLES;
|
||||
DROP TRIGGER `test trig`;
|
||||
DROP TABLE `t1 test`;
|
||||
DROP TABLE `t2 test`;
|
||||
#
|
||||
# BUG# 12838 mysqldump -x with views exits with error
|
||||
#
|
||||
drop table if exists t1;
|
||||
create table t1 (a int, b varchar(32), c varchar(32));
|
||||
insert into t1 values (1, 'first value', 'xxxx');
|
||||
@ -2571,6 +2693,10 @@ drop view v2;
|
||||
drop view v0;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
#
|
||||
# BUG#14554 - mysqldump does not separate words "ROW" and "BEGIN"
|
||||
# for tables with trigger created in the IGNORE_SPACE sql mode.
|
||||
#
|
||||
SET @old_sql_mode = @@SQL_MODE;
|
||||
SET SQL_MODE = IGNORE_SPACE;
|
||||
CREATE TABLE t1 (a INT);
|
||||
@ -2626,6 +2752,9 @@ DELIMITER ;
|
||||
|
||||
DROP TRIGGER tr1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #13318: Bad result with empty field and --hex-blob
|
||||
#
|
||||
create table t1 (a binary(1), b blob);
|
||||
insert into t1 values ('','');
|
||||
|
||||
@ -2693,6 +2822,9 @@ UNLOCK TABLES;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
drop table t1;
|
||||
#
|
||||
# Bug 14871 Invalid view dump output
|
||||
#
|
||||
create table t1 (a int);
|
||||
insert into t1 values (289), (298), (234), (456), (789);
|
||||
create definer = CURRENT_USER view v1 as select * from t1;
|
||||
@ -2719,6 +2851,9 @@ a
|
||||
789
|
||||
drop table t1;
|
||||
drop view v1, v2, v3, v4, v5;
|
||||
#
|
||||
# Bug #16878 dump of trigger
|
||||
#
|
||||
create table t1 (a int, created datetime);
|
||||
create table t2 (b int, created datetime);
|
||||
create trigger tr1 before insert on t1 for each row set
|
||||
@ -2741,6 +2876,9 @@ end AFTER # root@localhost
|
||||
drop trigger tr1;
|
||||
drop trigger tr2;
|
||||
drop table t1, t2;
|
||||
#
|
||||
# Bug#18462 mysqldump does not dump view structures correctly
|
||||
#
|
||||
create table t (qty int, price int);
|
||||
insert into t values(3, 50);
|
||||
insert into t values(5, 51);
|
||||
@ -2760,6 +2898,10 @@ mysqldump {
|
||||
drop view v1;
|
||||
drop view v2;
|
||||
drop table t;
|
||||
#
|
||||
# Bug#14857 Reading dump files with single statement stored routines fails.
|
||||
# fixed by patch for bug#16878
|
||||
#
|
||||
/*!50003 CREATE FUNCTION `f`() RETURNS bigint(20)
|
||||
return 42 */|
|
||||
/*!50003 CREATE PROCEDURE `p`()
|
||||
@ -2774,6 +2916,9 @@ p CREATE DEFINER=`root`@`localhost` PROCEDURE `p`()
|
||||
select 42
|
||||
drop function f;
|
||||
drop procedure p;
|
||||
#
|
||||
# Bug #17371 Unable to dump a schema with invalid views
|
||||
#
|
||||
create table t1 ( id serial );
|
||||
create view v1 as select * from t1;
|
||||
drop table t1;
|
||||
@ -2783,6 +2928,9 @@ mysqldump {
|
||||
|
||||
} mysqldump
|
||||
drop view v1;
|
||||
# BUG#17201 Spurious 'DROP DATABASE' in output,
|
||||
# also confusion between tables and views.
|
||||
# Example code from Markus Popp
|
||||
create database mysqldump_test_db;
|
||||
use mysqldump_test_db;
|
||||
create table t1 (id int);
|
||||
@ -2843,6 +2991,9 @@ USE `mysqldump_test_db`;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
drop database mysqldump_test_db;
|
||||
#
|
||||
# Bug21014 Segmentation fault of mysqldump on view
|
||||
#
|
||||
create database mysqldump_tables;
|
||||
use mysqldump_tables;
|
||||
create table basetable ( id serial, tag varchar(64) );
|
||||
@ -2876,6 +3027,9 @@ drop view nasishnasifu;
|
||||
drop database mysqldump_views;
|
||||
drop table mysqldump_tables.basetable;
|
||||
drop database mysqldump_tables;
|
||||
#
|
||||
# Bug20221 Dumping of multiple databases containing view(s) yields maleformed dumps
|
||||
#
|
||||
create database mysqldump_dba;
|
||||
use mysqldump_dba;
|
||||
create table t1 (f1 int, f2 int);
|
||||
@ -2908,6 +3062,9 @@ drop view v1;
|
||||
drop table t1;
|
||||
drop database mysqldump_dbb;
|
||||
use test;
|
||||
#
|
||||
# Bug#21215 mysqldump creating incomplete backups without warning
|
||||
#
|
||||
create user mysqltest_1@localhost;
|
||||
create table t1(a int, b varchar(34));
|
||||
reset master;
|
||||
@ -2924,6 +3081,12 @@ CREATE TABLE `t1` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
drop table t1;
|
||||
drop user mysqltest_1@localhost;
|
||||
#
|
||||
# Bug #21527 mysqldump incorrectly tries to LOCK TABLES on the
|
||||
# information_schema database.
|
||||
#
|
||||
# Bug #21424 mysqldump failing to export/import views
|
||||
#
|
||||
create database mysqldump_myDB;
|
||||
use mysqldump_myDB;
|
||||
create user myDB_User;
|
||||
@ -2942,6 +3105,9 @@ revoke all privileges on mysqldump_myDB.* from myDB_User@localhost;
|
||||
drop user myDB_User;
|
||||
drop database mysqldump_myDB;
|
||||
flush privileges;
|
||||
# Bug #21424 continues from here.
|
||||
# Restore. Flush Privileges test ends.
|
||||
#
|
||||
use mysqldump_myDB;
|
||||
select * from mysqldump_myDB.v1;
|
||||
c1
|
||||
@ -2957,4 +3123,78 @@ revoke all privileges on mysqldump_myDB.* from myDB_User@localhost;
|
||||
drop user myDB_User;
|
||||
drop database mysqldump_myDB;
|
||||
use test;
|
||||
End of 5.0 tests
|
||||
#
|
||||
# BUG#13926: --order-by-primary fails if PKEY contains quote character
|
||||
#
|
||||
DROP TABLE IF EXISTS `t1`;
|
||||
CREATE TABLE `t1` (
|
||||
`a b` INT,
|
||||
`c"d` INT,
|
||||
`e``f` INT,
|
||||
PRIMARY KEY (`a b`, `c"d`, `e``f`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
insert into t1 values (0815, 4711, 2006);
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO,ANSI' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
DROP TABLE IF EXISTS "t1";
|
||||
CREATE TABLE "t1" (
|
||||
"a b" int(11) NOT NULL default '0',
|
||||
"c""d" int(11) NOT NULL default '0',
|
||||
"e`f" int(11) NOT NULL default '0',
|
||||
PRIMARY KEY ("a b","c""d","e`f")
|
||||
);
|
||||
|
||||
LOCK TABLES "t1" WRITE;
|
||||
/*!40000 ALTER TABLE "t1" DISABLE KEYS */;
|
||||
INSERT INTO "t1" VALUES (815,4711,2006);
|
||||
/*!40000 ALTER TABLE "t1" ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
DROP TABLE IF EXISTS `t1`;
|
||||
CREATE TABLE `t1` (
|
||||
`a b` int(11) NOT NULL default '0',
|
||||
`c"d` int(11) NOT NULL default '0',
|
||||
`e``f` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`a b`,`c"d`,`e``f`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
LOCK TABLES `t1` WRITE;
|
||||
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
|
||||
INSERT INTO `t1` VALUES (815,4711,2006);
|
||||
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE `t1`;
|
||||
#
|
||||
# End of 5.0 tests
|
||||
#
|
||||
|
@ -909,6 +909,53 @@ create temporary table if not exists t1 (a1 int);
|
||||
execute stmt;
|
||||
drop temporary table t1;
|
||||
deallocate prepare stmt;
|
||||
CREATE TABLE t1(
|
||||
ID int(10) unsigned NOT NULL auto_increment,
|
||||
Member_ID varchar(15) NOT NULL default '',
|
||||
Action varchar(12) NOT NULL,
|
||||
Action_Date datetime NOT NULL,
|
||||
Track varchar(15) default NULL,
|
||||
User varchar(12) default NULL,
|
||||
Date_Updated timestamp NOT NULL default CURRENT_TIMESTAMP on update
|
||||
CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (ID),
|
||||
KEY Action (Action),
|
||||
KEY Action_Date (Action_Date)
|
||||
);
|
||||
INSERT INTO t1(Member_ID, Action, Action_Date, Track) VALUES
|
||||
('111111', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||||
('111111', 'Enrolled', '2006-03-01', 'CAD' ),
|
||||
('111111', 'Disenrolled', '2006-07-03', 'CAD' ),
|
||||
('222222', 'Enrolled', '2006-03-07', 'CAD' ),
|
||||
('222222', 'Enrolled', '2006-03-07', 'CHF' ),
|
||||
('222222', 'Disenrolled', '2006-08-02', 'CHF' ),
|
||||
('333333', 'Enrolled', '2006-03-01', 'CAD' ),
|
||||
('333333', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||||
('444444', 'Enrolled', '2006-03-01', 'CAD' ),
|
||||
('555555', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||||
('555555', 'Enrolled', '2006-07-21', 'CAD' ),
|
||||
('555555', 'Disenrolled', '2006-03-01', 'CHF' ),
|
||||
('666666', 'Enrolled', '2006-02-09', 'CAD' ),
|
||||
('666666', 'Enrolled', '2006-05-12', 'CHF' ),
|
||||
('666666', 'Disenrolled', '2006-06-01', 'CAD' );
|
||||
PREPARE STMT FROM
|
||||
"SELECT GROUP_CONCAT(Track SEPARATOR ', ') FROM t1
|
||||
WHERE Member_ID=? AND Action='Enrolled' AND
|
||||
(Track,Action_Date) IN (SELECT Track, MAX(Action_Date) FROM t1
|
||||
WHERE Member_ID=?
|
||||
GROUP BY Track
|
||||
HAVING Track>='CAD' AND
|
||||
MAX(Action_Date)>'2006-03-01')";
|
||||
SET @id='111111';
|
||||
EXECUTE STMT USING @id,@id;
|
||||
GROUP_CONCAT(Track SEPARATOR ', ')
|
||||
NULL
|
||||
SET @id='222222';
|
||||
EXECUTE STMT USING @id,@id;
|
||||
GROUP_CONCAT(Track SEPARATOR ', ')
|
||||
CAD
|
||||
DEALLOCATE PREPARE STMT;
|
||||
DROP TABLE t1;
|
||||
End of 4.1 tests
|
||||
create table t1 (a varchar(20));
|
||||
insert into t1 values ('foo');
|
||||
|
@ -1,9 +1,20 @@
|
||||
#
|
||||
# Setup
|
||||
#
|
||||
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;
|
||||
use test;
|
||||
drop table if exists t1, t2, t3;
|
||||
#
|
||||
# See if queries that use both auto_increment and LAST_INSERT_ID()
|
||||
# are replicated well
|
||||
#
|
||||
# We also check how the foreign_key_check variable is replicated
|
||||
#
|
||||
create table t1(a int auto_increment, key(a));
|
||||
create table t2(b int auto_increment, c int, key(b));
|
||||
insert into t1 values (1),(2),(3);
|
||||
@ -38,6 +49,9 @@ select * from t2;
|
||||
b c
|
||||
5 0
|
||||
6 11
|
||||
#
|
||||
# check if INSERT SELECT in auto_increment is well replicated (bug #490)
|
||||
#
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
create table t1(a int auto_increment, key(a));
|
||||
@ -68,12 +82,19 @@ b c
|
||||
9 13
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
#
|
||||
# Bug#8412: Error codes reported in binary log for CHARACTER SET,
|
||||
# FOREIGN_KEY_CHECKS
|
||||
#
|
||||
SET TIMESTAMP=1000000000;
|
||||
CREATE TABLE t1 ( a INT UNIQUE );
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
INSERT INTO t1 VALUES (1),(1);
|
||||
ERROR 23000: Duplicate entry '1' for key 1
|
||||
drop table t1;
|
||||
#
|
||||
# Bug#14553: NULL in WHERE resets LAST_INSERT_ID
|
||||
#
|
||||
create table t1(a int auto_increment, key(a));
|
||||
create table t2(a int);
|
||||
insert into t1 (a) values (null);
|
||||
@ -87,6 +108,9 @@ a
|
||||
1
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
#
|
||||
# End of 4.1 tests
|
||||
#
|
||||
drop function if exists bug15728;
|
||||
drop function if exists bug15728_insert;
|
||||
drop table if exists t1, t2;
|
||||
@ -210,3 +234,6 @@ n b
|
||||
2 100
|
||||
3 350
|
||||
drop table t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
|
@ -5,9 +5,15 @@ reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
stop slave;
|
||||
#
|
||||
# Generate a big enough master's binlog to cause relay log rotations
|
||||
#
|
||||
create table t1 (a int);
|
||||
drop table t1;
|
||||
reset slave;
|
||||
#
|
||||
# Test 1
|
||||
#
|
||||
set global max_binlog_size=8192;
|
||||
set global max_relay_log_size=8192-1;
|
||||
select @@global.max_relay_log_size;
|
||||
@ -15,47 +21,251 @@ select @@global.max_relay_log_size;
|
||||
4096
|
||||
start slave;
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 72952 # # master-bin.000001 Yes Yes 0 0 72952 # None 0 No #
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 72952
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running Yes
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 72952
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
#
|
||||
# Test 2
|
||||
#
|
||||
stop slave;
|
||||
reset slave;
|
||||
set global max_relay_log_size=(5*4096);
|
||||
select @@global.max_relay_log_size;
|
||||
@@global.max_relay_log_size
|
||||
20480
|
||||
@@global.max_relay_log_size 20480
|
||||
start slave;
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 72952 # # master-bin.000001 Yes Yes 0 0 72952 # None 0 No #
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 72952
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running Yes
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 72952
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
#
|
||||
# Test 3: max_relay_log_size = 0
|
||||
#
|
||||
stop slave;
|
||||
reset slave;
|
||||
set global max_relay_log_size=0;
|
||||
select @@global.max_relay_log_size;
|
||||
@@global.max_relay_log_size
|
||||
0
|
||||
@@global.max_relay_log_size 0
|
||||
start slave;
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 72952 # # master-bin.000001 Yes Yes 0 0 72952 # None 0 No #
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 72952
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running Yes
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 72952
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
#
|
||||
# Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
|
||||
#
|
||||
stop slave;
|
||||
reset slave;
|
||||
flush logs;
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_PORT 1 4 # # No No 0 0 0 # None 0 No #
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File
|
||||
Read_Master_Log_Pos 4
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File
|
||||
Slave_IO_Running No
|
||||
Slave_SQL_Running No
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 0
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
#
|
||||
# Test 5
|
||||
#
|
||||
reset slave;
|
||||
start slave;
|
||||
flush logs;
|
||||
create table t1 (a int);
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73038 # # master-bin.000001 Yes Yes 0 0 73038 # None 0 No #
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 73038
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running Yes
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 73038
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
#
|
||||
# Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
|
||||
#
|
||||
flush logs;
|
||||
drop table t1;
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73114 # # master-bin.000001 Yes Yes 0 0 73114 # None 0 No #
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 73114
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running Yes
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 73114
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
flush logs;
|
||||
show master status;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000002 98
|
||||
File master-bin.000002
|
||||
Position 98
|
||||
Binlog_Do_DB
|
||||
Binlog_Ignore_DB
|
||||
#
|
||||
# End of 4.1 tests
|
||||
#
|
||||
|
@ -91,3 +91,19 @@ c
|
||||
---> Cleaning up...
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
create table t1(a int, b int);
|
||||
insert into t1 values (1, 1), (1, 2), (1, 3);
|
||||
create view v1(a, b) as select a, sum(b) from t1 group by a;
|
||||
explain v1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) YES NULL
|
||||
b decimal(32,0) YES NULL
|
||||
show create table v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,sum(`t1`.`b`) AS `b` from `t1` group by `t1`.`a`
|
||||
select * from v1;
|
||||
a b
|
||||
1 6
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
End of 5.0 tests
|
||||
|
@ -1160,7 +1160,7 @@ Code2 char(2) NOT NULL default '',
|
||||
PRIMARY KEY (Code)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES ('AUS','Australia','Oceania','Australia and New Zealand',7741220.00,1901,18886000,79.8,351182.00,392911.00,'Australia','Constitutional Monarchy, Federation','Elisabeth II',135,'AU');
|
||||
INSERT INTO t2 VALUES ('AZE','Azerbaijan','Asia','Middle East',86600.00,1991,7734000,62.9,4127.00,4100.00,'Azärbaycan','Federal Republic','Heydär Äliyev',144,'AZ');
|
||||
INSERT INTO t2 VALUES ('AZE','Azerbaijan','Asia','Middle East',86600.00,1991,7734000,62.9,4127.00,4100.00,'Azärbaycan','Federal Republic','Heydär Äliyev',144,'AZ');
|
||||
select t2.Continent, t1.Name, t1.Population from t2 LEFT JOIN t1 ON t2.Code = t1.t2 where t1.Population IN (select max(t1.Population) AS Population from t1, t2 where t1.t2 = t2.Code group by Continent);
|
||||
Continent Name Population
|
||||
Oceania Sydney 3276207
|
||||
@ -2512,7 +2512,7 @@ Code2 char(2) NOT NULL default ''
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('XXX','Xxxxx','Oceania','Xxxxxx',26.00,0,0,0,0,0,'Xxxxx','Xxxxx','Xxxxx',NULL,'XX');
|
||||
INSERT INTO t1 VALUES ('ASM','American Samoa','Oceania','Polynesia',199.00,0,68000,75.1,334.00,NULL,'Amerika Samoa','US Territory','George W. Bush',54,'AS');
|
||||
INSERT INTO t1 VALUES ('ATF','French Southern territories','Antarctica','Antarctica',7780.00,0,0,NULL,0.00,NULL,'Terres australes françaises','Nonmetropolitan Territory of France','Jacques Chirac',NULL,'TF');
|
||||
INSERT INTO t1 VALUES ('ATF','French Southern territories','Antarctica','Antarctica',7780.00,0,0,NULL,0.00,NULL,'Terres australes françaises','Nonmetropolitan Territory of France','Jacques Chirac',NULL,'TF');
|
||||
INSERT INTO t1 VALUES ('UMI','United States Minor Outlying Islands','Oceania','Micronesia/Caribbean',16.00,0,0,NULL,0.00,NULL,'United States Minor Outlying Islands','Dependent Territory of the US','George W. Bush',NULL,'UM');
|
||||
/*!40000 ALTER TABLE t1 ENABLE KEYS */;
|
||||
SELECT DISTINCT Continent AS c FROM t1 WHERE Code <> SOME ( SELECT Code FROM t1 WHERE Continent = c AND Population < 200);
|
||||
@ -2966,6 +2966,42 @@ ORDER BY t2.c, t2.b LIMIT 1) WHERE t1.a = 10;
|
||||
a a b
|
||||
10 1 359
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1 (
|
||||
field1 int NOT NULL,
|
||||
field2 int NOT NULL,
|
||||
field3 int NOT NULL,
|
||||
PRIMARY KEY (field1,field2,field3)
|
||||
);
|
||||
CREATE TABLE t2 (
|
||||
fieldA int NOT NULL,
|
||||
fieldB int NOT NULL,
|
||||
PRIMARY KEY (fieldA,fieldB)
|
||||
);
|
||||
INSERT INTO t1 VALUES
|
||||
(1,1,1), (1,1,2), (1,2,1), (1,2,2), (1,2,3), (1,3,1);
|
||||
INSERT INTO t2 VALUES (1,1), (1,2), (1,3);
|
||||
SELECT field1, field2, COUNT(*)
|
||||
FROM t1 GROUP BY field1, field2;
|
||||
field1 field2 COUNT(*)
|
||||
1 1 2
|
||||
1 2 3
|
||||
1 3 1
|
||||
SELECT field1, field2
|
||||
FROM t1
|
||||
GROUP BY field1, field2
|
||||
HAVING COUNT(*) >= ALL (SELECT fieldB
|
||||
FROM t2 WHERE fieldA = field1);
|
||||
field1 field2
|
||||
1 2
|
||||
SELECT field1, field2
|
||||
FROM t1
|
||||
GROUP BY field1, field2
|
||||
HAVING COUNT(*) < ANY (SELECT fieldB
|
||||
FROM t2 WHERE fieldA = field1);
|
||||
field1 field2
|
||||
1 1
|
||||
1 3
|
||||
DROP TABLE t1, t2;
|
||||
create table t1 (df decimal(5,1));
|
||||
insert into t1 values(1.1);
|
||||
insert into t1 values(2.2);
|
||||
@ -3422,3 +3458,64 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
4 UNION t12 system NULL NULL NULL NULL 0 const row not found
|
||||
NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t2 values (1);
|
||||
INSERT INTO t1 VALUES (1,1),(1,2),(2,3),(3,4);
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2)
|
||||
2
|
||||
1
|
||||
1
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
2
|
||||
1
|
||||
1
|
||||
SELECT COUNT(DISTINCT t1.b), (SELECT COUNT(DISTINCT t1.b)) FROM t1 GROUP BY t1.a;
|
||||
COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b))
|
||||
2 2
|
||||
1 1
|
||||
1 1
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
FROM t1 GROUP BY t1.a;
|
||||
COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
2 2
|
||||
1 1
|
||||
1 1
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a;
|
||||
(
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
2
|
||||
1
|
||||
1
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
(
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
2
|
||||
2
|
||||
2
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -472,11 +472,11 @@ create view v3 (x,y,z) as select b, a, b from t1;
|
||||
create view v4 (x,y,z) as select c+1, b, a from t1;
|
||||
create algorithm=temptable view v5 (x,y,z) as select c, b, a from t1;
|
||||
insert into v3 values (-60,4,30);
|
||||
ERROR HY000: The target table v3 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v3 of the INSERT is not insertable-into
|
||||
insert into v4 values (-60,4,30);
|
||||
ERROR HY000: The target table v4 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v4 of the INSERT is not insertable-into
|
||||
insert into v5 values (-60,4,30);
|
||||
ERROR HY000: The target table v5 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v5 of the INSERT is not insertable-into
|
||||
insert into v1 values (-60,4,30);
|
||||
insert into v1 (z,y,x) values (50,6,-100);
|
||||
insert into v2 values (5,40);
|
||||
@ -499,11 +499,11 @@ create view v3 (x,y,z) as select b, a, b from t1;
|
||||
create view v4 (x,y,z) as select c+1, b, a from t1;
|
||||
create algorithm=temptable view v5 (x,y,z) as select c, b, a from t1;
|
||||
insert into v3 select c, b, a from t2;
|
||||
ERROR HY000: The target table v3 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v3 of the INSERT is not insertable-into
|
||||
insert into v4 select c, b, a from t2;
|
||||
ERROR HY000: The target table v4 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v4 of the INSERT is not insertable-into
|
||||
insert into v5 select c, b, a from t2;
|
||||
ERROR HY000: The target table v5 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v5 of the INSERT is not insertable-into
|
||||
insert into v1 select c, b, a from t2;
|
||||
insert into v1 (z,y,x) select a+20,b+2,-100 from t2;
|
||||
insert into v2 select b+1, a+10 from t2;
|
||||
@ -1352,14 +1352,14 @@ drop table t1;
|
||||
create table t1 (s1 smallint);
|
||||
create view v1 as select * from t1 where 20 < (select (s1) from t1);
|
||||
insert into v1 values (30);
|
||||
ERROR HY000: The target table v1 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v1 of the INSERT is not insertable-into
|
||||
create view v2 as select * from t1;
|
||||
create view v3 as select * from t1 where 20 < (select (s1) from v2);
|
||||
insert into v3 values (30);
|
||||
ERROR HY000: The target table v3 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v3 of the INSERT is not insertable-into
|
||||
create view v4 as select * from v2 where 20 < (select (s1) from t1);
|
||||
insert into v4 values (30);
|
||||
ERROR HY000: The target table v4 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v4 of the INSERT is not insertable-into
|
||||
drop view v4, v3, v2, v1;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
@ -2911,7 +2911,7 @@ INSERT INTO v2 VALUES (0);
|
||||
RETURN 0;
|
||||
END |
|
||||
SELECT f2();
|
||||
ERROR HY000: The target table v2 of the INSERT is not updatable
|
||||
ERROR HY000: The target table v2 of the INSERT is not insertable-into
|
||||
DROP FUNCTION f1;
|
||||
DROP FUNCTION f2;
|
||||
DROP VIEW v1, v2;
|
||||
@ -2935,4 +2935,25 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 3
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
create table t1 (s1 int);
|
||||
create view v1 as select s1 as a, s1 as b from t1;
|
||||
insert into v1 values (1,1);
|
||||
ERROR HY000: The target table v1 of the INSERT is not insertable-into
|
||||
update v1 set a = 5;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
CREATE TABLE t1(pk int PRIMARY KEY);
|
||||
CREATE TABLE t2(pk int PRIMARY KEY, fk int, ver int, org int);
|
||||
CREATE ALGORITHM=MERGE VIEW v1 AS
|
||||
SELECT t1.*
|
||||
FROM t1 JOIN t2
|
||||
ON t2.fk = t1.pk AND
|
||||
t2.ver = (SELECT MAX(t.ver) FROM t2 t WHERE t.org = t2.org);
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=MERGE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`pk` AS `pk` from (`t1` join `t2` on(((`t2`.`fk` = `t1`.`pk`) and (`t2`.`ver` = (select max(`t`.`ver`) AS `MAX(t.ver)` from `t2` `t` where (`t`.`org` = `t2`.`org`))))))
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.0 tests.
|
||||
|
@ -484,6 +484,27 @@ select make_set(3, name, upper(name)) from bug20536;
|
||||
select export_set(5, name, upper(name)) from bug20536;
|
||||
select export_set(5, name, upper(name), ",", 5) from bug20536;
|
||||
|
||||
#
|
||||
# Bug #20108: corrupted default enum value for a ucs2 field
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
status enum('active','passive') collate latin1_general_ci
|
||||
NOT NULL default 'passive'
|
||||
);
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 ADD a int NOT NULL AFTER status;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
status enum('active','passive') collate ucs2_turkish_ci
|
||||
NOT NULL default 'passive'
|
||||
);
|
||||
SHOW CREATE TABLE t2;
|
||||
ALTER TABLE t2 ADD a int NOT NULL AFTER status;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
||||
# Some broken functions: add these tests just to document current behavior.
|
||||
|
||||
# PASSWORD and OLD_PASSWORD don't work with UCS2 strings, but to fix it would
|
||||
|
@ -1069,23 +1069,6 @@ explain select a from t1 group by a;
|
||||
select a from t1 group by a;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#20393: User name truncation in mysql client
|
||||
# Bug#21432: Database/Table name limited to 64 bytes, not chars, problems with multi-byte
|
||||
#
|
||||
set names utf8;
|
||||
#create user юзер_юзер@localhost;
|
||||
grant select on test.* to юзер_юзер@localhost;
|
||||
--exec $MYSQL --default-character-set=utf8 --user=юзер_юзер -e "select user()"
|
||||
revoke all on test.* from юзер_юзер@localhost;
|
||||
drop user юзер_юзер@localhost;
|
||||
|
||||
create database имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
|
||||
use имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
|
||||
select database();
|
||||
drop database имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
|
||||
use test;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
|
@ -447,3 +447,18 @@ SELECT a, CHAR_LENGTH(b) FROM t1;
|
||||
SELECT CHAR_LENGTH( GROUP_CONCAT(b) ) FROM t1;
|
||||
SET GROUP_CONCAT_MAX_LEN = 1024;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #22015: crash with GROUP_CONCAT over a derived table that
|
||||
# returns the results of aggregation by GROUP_CONCAT
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
|
||||
INSERT INTO t1 VALUES (2,1), (1,2), (2,2), (1,3);
|
||||
|
||||
SELECT GROUP_CONCAT(a), x
|
||||
FROM (SELECT a, GROUP_CONCAT(b) x FROM t1 GROUP BY a) AS s
|
||||
GROUP BY x;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
@ -655,15 +655,3 @@ where t2.b=v1.a GROUP BY t2.b;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# Bug #21174: Index degrades sort performance and
|
||||
# optimizer does not honor IGNORE INDEX
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a));
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2), (3,3), (4,4);
|
||||
|
||||
EXPLAIN SELECT a, SUM(b) FROM t1 GROUP BY a LIMIT 2;
|
||||
EXPLAIN SELECT a, SUM(b) FROM t1 IGNORE INDEX (a) GROUP BY a LIMIT 2;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
@ -16,9 +16,9 @@ INSERT INTO t1 VALUES (1), (2);
|
||||
--exec $MYSQL_DUMP --skip-create --skip-comments -X test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #2005
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #2005
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a decimal(64, 20));
|
||||
INSERT INTO t1 VALUES ("1234567890123456789012345678901234567890"),
|
||||
@ -26,9 +26,9 @@ INSERT INTO t1 VALUES ("1234567890123456789012345678901234567890"),
|
||||
--exec $MYSQL_DUMP --compact test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #2055
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #2055
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a double);
|
||||
INSERT INTO t1 VALUES ('-9e999999');
|
||||
@ -38,9 +38,9 @@ INSERT INTO t1 VALUES ('-9e999999');
|
||||
--exec $MYSQL_DUMP --compact test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #3361 mysqldump quotes DECIMAL values inconsistently
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #3361 mysqldump quotes DECIMAL values inconsistently
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a DECIMAL(10,5), b FLOAT);
|
||||
|
||||
@ -69,28 +69,28 @@ INSERT INTO t1 VALUES (1, "test", "tes"), (2, "TEST", "TES");
|
||||
--exec $MYSQL_DUMP --skip-create --compact -X test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #1707
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #1707
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (`a"b"` char(2));
|
||||
INSERT INTO t1 VALUES ("1\""), ("\"2");
|
||||
--exec $MYSQL_DUMP --compact --skip-create -X test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #1994
|
||||
# Bug #4261
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #1994
|
||||
--echo # Bug #4261
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(255)) DEFAULT CHARSET koi8r;
|
||||
INSERT INTO t1 VALUES (_koi8r x'C1C2C3C4C5'), (NULL);
|
||||
--exec $MYSQL_DUMP --skip-comments --skip-extended-insert test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #2634
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #2634
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int) ENGINE=MYISAM;
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
@ -98,17 +98,17 @@ INSERT INTO t1 VALUES (1), (2);
|
||||
--exec $MYSQL_DUMP --skip-comments --compatible=mysql323 test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #2592 'mysqldump doesn't quote "tricky" names correctly'
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #2592 'mysqldump doesn't quote "tricky" names correctly'
|
||||
--echo #
|
||||
|
||||
create table ```a` (i int);
|
||||
--exec $MYSQL_DUMP --compact test
|
||||
drop table ```a`;
|
||||
|
||||
#
|
||||
# Bug #2591 "mysqldump quotes names inconsistently"
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #2591 "mysqldump quotes names inconsistently"
|
||||
--echo #
|
||||
|
||||
create table t1(a int);
|
||||
--exec $MYSQL_DUMP --comments=0 test
|
||||
@ -119,9 +119,9 @@ set global sql_mode='ANSI_QUOTES';
|
||||
set global sql_mode='';
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #2705 'mysqldump --tab extra output'
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #2705 'mysqldump --tab extra output'
|
||||
--echo #
|
||||
|
||||
create table t1(a int);
|
||||
insert into t1 values (1),(2),(3);
|
||||
@ -135,9 +135,9 @@ insert into t1 values (1),(2),(3);
|
||||
--exec rm $MYSQLTEST_VARDIR/tmp/t1.txt
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6101: create database problem
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #6101: create database problem
|
||||
--echo #
|
||||
|
||||
--exec $MYSQL_DUMP --skip-comments --databases test
|
||||
|
||||
@ -145,32 +145,34 @@ create database mysqldump_test_db character set latin2 collate latin2_bin;
|
||||
--exec $MYSQL_DUMP --skip-comments --databases mysqldump_test_db
|
||||
drop database mysqldump_test_db;
|
||||
|
||||
#
|
||||
# Bug #7020
|
||||
# Check that we don't dump in UTF8 in compatible mode by default,
|
||||
# but use the default compiled values, or the values given in
|
||||
# --default-character-set=xxx. However, we should dump in UTF8
|
||||
# if it is explicitely set.
|
||||
--echo #
|
||||
--echo # Bug #7020
|
||||
--echo # Check that we don't dump in UTF8 in compatible mode by default,
|
||||
--echo # but use the default compiled values, or the values given in
|
||||
--echo # --default-character-set=xxx. However, we should dump in UTF8
|
||||
--echo # if it is explicitely set.
|
||||
|
||||
CREATE TABLE t1 (a CHAR(10));
|
||||
INSERT INTO t1 VALUES (_latin1 'ÄÖÜß');
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments test t1
|
||||
#
|
||||
# Bug#8063: make test mysqldump [ fail ]
|
||||
# We cannot tes this command because its output depends
|
||||
# on --default-character-set incompiled into "mysqldump" program.
|
||||
# If the future we can move this command into a separate test with
|
||||
# checking that "mysqldump" is compiled with "latin1"
|
||||
#
|
||||
|
||||
--echo #
|
||||
--echo # Bug#8063: make test mysqldump [ fail ]
|
||||
--echo # We cannot tes this command because its output depends
|
||||
--echo # on --default-character-set incompiled into "mysqldump" program.
|
||||
--echo # If the future we can move this command into a separate test with
|
||||
--echo # checking that "mysqldump" is compiled with "latin1"
|
||||
--echo #
|
||||
|
||||
#--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --compatible=mysql323 test t1
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --compatible=mysql323 --default-character-set=cp850 test t1
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=cp850 --compatible=mysql323 test t1
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=utf8 --compatible=mysql323 test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# WL #2319: Exclude Tables from dump
|
||||
#
|
||||
--echo #
|
||||
--echo # WL #2319: Exclude Tables from dump
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t2 (a int);
|
||||
@ -180,18 +182,18 @@ INSERT INTO t2 VALUES (4),(5),(6);
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
#
|
||||
# Bug #8830
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #8830
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (`b` blob);
|
||||
INSERT INTO `t1` VALUES (0x602010000280100005E71A);
|
||||
--exec $MYSQL_DUMP --skip-extended-insert --hex-blob test --skip-comments t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Test for --insert-ignore
|
||||
#
|
||||
--echo #
|
||||
--echo # Test for --insert-ignore
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
@ -200,10 +202,10 @@ INSERT INTO t1 VALUES (4),(5),(6);
|
||||
--exec $MYSQL_DUMP --skip-comments --insert-ignore --delayed-insert test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #10286: mysqldump -c crashes on table that has many fields with long
|
||||
# names
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #10286: mysqldump -c crashes on table that has many fields with long
|
||||
--echo # names
|
||||
--echo #
|
||||
create table t1 (
|
||||
F_c4ca4238a0b923820dcc509a6f75849b int,
|
||||
F_c81e728d9d4c2f636f067f89cc14862c int,
|
||||
@ -539,18 +541,18 @@ insert into t1 (F_8d3bba7425e7c98c50f52ca1b52d3735) values (1);
|
||||
--exec $MYSQL_DUMP --skip-comments -c test
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test for --add-drop-database
|
||||
#
|
||||
--echo #
|
||||
--echo # Test for --add-drop-database
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
--exec $MYSQL_DUMP --add-drop-database --skip-comments --databases test
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #9558 mysqldump --no-data db t1 t2 format still dumps data
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #9558 mysqldump --no-data db t1 t2 format still dumps data
|
||||
--echo #
|
||||
|
||||
CREATE DATABASE mysqldump_test_db;
|
||||
USE mysqldump_test_db;
|
||||
@ -565,11 +567,11 @@ INSERT INTO t2 VALUES (1), (2);
|
||||
DROP TABLE t1, t2;
|
||||
DROP DATABASE mysqldump_test_db;
|
||||
|
||||
#
|
||||
# Testing with tables and databases that don't exists
|
||||
# or contains illegal characters
|
||||
# (Bug #9358 mysqldump crashes if tablename starts with \)
|
||||
#
|
||||
--echo #
|
||||
--echo # Testing with tables and databases that don't exists
|
||||
--echo # or contains illegal characters
|
||||
--echo # (Bug #9358 mysqldump crashes if tablename starts with \)
|
||||
--echo #
|
||||
create database mysqldump_test_db;
|
||||
use mysqldump_test_db;
|
||||
create table t1(a varchar(30) primary key, b int not null);
|
||||
@ -629,9 +631,9 @@ drop database mysqldump_test_db;
|
||||
use test;
|
||||
|
||||
|
||||
#
|
||||
# Bug #9657 mysqldump xml ( -x ) does not format NULL fields correctly
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #9657 mysqldump xml ( -x ) does not format NULL fields correctly
|
||||
--echo #
|
||||
|
||||
create table t1 (a int(10));
|
||||
create table t2 (pk int primary key auto_increment,
|
||||
@ -641,9 +643,10 @@ insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thir
|
||||
--exec $MYSQL_DUMP --skip-comments --xml --no-create-info test
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# BUG #12123
|
||||
#
|
||||
--echo #
|
||||
--echo # BUG #12123
|
||||
--echo #
|
||||
|
||||
create table t1 (a text character set utf8, b text character set latin1);
|
||||
insert t1 values (0x4F736E616272C3BC636B, 0x4BF66C6E);
|
||||
select * from t1;
|
||||
@ -654,15 +657,16 @@ select * from t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#15328 Segmentation fault occured if my.cnf is invalid for escape sequence
|
||||
#
|
||||
--echo #
|
||||
--echo # BUG#15328 Segmentation fault occured if my.cnf is invalid for escape sequence
|
||||
--echo #
|
||||
|
||||
--exec $MYSQL_MY_PRINT_DEFAULTS --config-file=$MYSQL_TEST_DIR/std_data/bug15328.cnf mysqldump
|
||||
|
||||
#
|
||||
# BUG #19025 mysqldump doesn't correctly dump "auto_increment = [int]"
|
||||
#
|
||||
--echo #
|
||||
--echo # BUG #19025 mysqldump doesn't correctly dump "auto_increment = [int]"
|
||||
--echo #
|
||||
|
||||
create table `t1` (
|
||||
t1_name varchar(255) default null,
|
||||
t1_id int(10) unsigned not null auto_increment,
|
||||
@ -689,9 +693,9 @@ show create table `t1`;
|
||||
|
||||
drop table `t1`;
|
||||
|
||||
#
|
||||
# Bug #18536: wrong table order
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #18536: wrong table order
|
||||
--echo #
|
||||
|
||||
create table t1(a int);
|
||||
create table t2(a int);
|
||||
@ -700,9 +704,10 @@ create table t3(a int);
|
||||
--exec $MYSQL_DUMP --skip-comments --force --no-data test t3 t1 non_existing t2
|
||||
drop table t1, t2, t3;
|
||||
|
||||
#
|
||||
# Bug #21288: mysqldump segmentation fault when using --where
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #21288: mysqldump segmentation fault when using --where
|
||||
--echo #
|
||||
|
||||
create table t1 (a int);
|
||||
--error 2
|
||||
--exec $MYSQL_DUMP --skip-comments --force test t1 --where='xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 2>&1
|
||||
@ -710,9 +715,9 @@ drop table t1;
|
||||
|
||||
--echo End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug #10213 mysqldump crashes when dumping VIEWs(on MacOS X)
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #10213 mysqldump crashes when dumping VIEWs(on MacOS X)
|
||||
--echo #
|
||||
|
||||
create database db1;
|
||||
use db1;
|
||||
@ -734,9 +739,9 @@ drop view v2;
|
||||
drop database db1;
|
||||
use test;
|
||||
|
||||
#
|
||||
# Bug 10713 mysqldump includes database in create view and referenced tables
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug 10713 mysqldump includes database in create view and referenced tables
|
||||
--echo #
|
||||
|
||||
# create table and views in db2
|
||||
create database db2;
|
||||
@ -779,9 +784,9 @@ create view v1 as select * from t1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #10213 mysqldump crashes when dumping VIEWs(on MacOS X)
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #10213 mysqldump crashes when dumping VIEWs(on MacOS X)
|
||||
--echo #
|
||||
|
||||
create database mysqldump_test_db;
|
||||
use mysqldump_test_db;
|
||||
@ -803,18 +808,18 @@ drop view v2;
|
||||
drop database mysqldump_test_db;
|
||||
use test;
|
||||
|
||||
#
|
||||
# Bug #9756
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #9756
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a char(10));
|
||||
INSERT INTO t1 VALUES ('\'');
|
||||
--exec $MYSQL_DUMP --skip-comments test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #10927 mysqldump: Can't reload dump with view that consist of other view
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #10927 mysqldump: Can't reload dump with view that consist of other view
|
||||
--echo #
|
||||
|
||||
create table t1(a int, b int, c varchar(30));
|
||||
|
||||
@ -834,9 +839,9 @@ select v3.a from v3, v1 where v1.a=v3.a and v3.b=3 limit 1;
|
||||
drop view v1, v2, v3;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test for dumping triggers
|
||||
#
|
||||
--echo #
|
||||
--echo # Test for dumping triggers
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int, b bigint default NULL);
|
||||
CREATE TABLE t2 (a int);
|
||||
@ -884,9 +889,9 @@ show tables;
|
||||
show triggers;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
#
|
||||
# Bugs #9136, #12917: problems with --defaults-extra-file option
|
||||
#
|
||||
--echo #
|
||||
--echo # Bugs #9136, #12917: problems with --defaults-extra-file option
|
||||
--echo #
|
||||
|
||||
--system echo '[mysqltest1]' > $MYSQLTEST_VARDIR/tmp/tmp.cnf
|
||||
--system echo 'port=1234' >> $MYSQLTEST_VARDIR/tmp/tmp.cnf
|
||||
@ -894,9 +899,9 @@ DROP TABLE t1, t2;
|
||||
--exec $MYSQL_MY_PRINT_DEFAULTS -e $MYSQLTEST_VARDIR/tmp/tmp.cnf mysqltest1 mysqltest1
|
||||
--system rm $MYSQLTEST_VARDIR/tmp/tmp.cnf
|
||||
|
||||
#
|
||||
# Test of fix to BUG 12597
|
||||
#
|
||||
--echo #
|
||||
--echo # Test of fix to BUG 12597
|
||||
--echo #
|
||||
|
||||
DROP TABLE IF EXISTS `test1`;
|
||||
CREATE TABLE `test1` (
|
||||
@ -932,9 +937,9 @@ DROP TRIGGER testref;
|
||||
DROP TABLE test1;
|
||||
DROP TABLE test2;
|
||||
|
||||
#
|
||||
# BUG#9056 - mysqldump does not dump routines
|
||||
#
|
||||
--echo #
|
||||
--echo # BUG#9056 - mysqldump does not dump routines
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
@ -981,9 +986,10 @@ DROP PROCEDURE bug9056_proc2;
|
||||
DROP PROCEDURE `a'b`;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG# 13052 - mysqldump timestamp reloads broken
|
||||
#
|
||||
--echo #
|
||||
--echo # BUG# 13052 - mysqldump timestamp reloads broken
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
@ -1003,9 +1009,10 @@ drop table t1;
|
||||
set global time_zone=default;
|
||||
set time_zone=default;
|
||||
|
||||
#
|
||||
# Test of fix to BUG 13146 - ansi quotes break loading of triggers
|
||||
#
|
||||
--echo #
|
||||
--echo # Test of fix to BUG 13146 - ansi quotes break loading of triggers
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS `t1 test`;
|
||||
DROP TABLE IF EXISTS `t2 test`;
|
||||
@ -1036,9 +1043,9 @@ DROP TRIGGER `test trig`;
|
||||
DROP TABLE `t1 test`;
|
||||
DROP TABLE `t2 test`;
|
||||
|
||||
#
|
||||
# BUG# 12838 mysqldump -x with views exits with error
|
||||
#
|
||||
--echo #
|
||||
--echo # BUG# 12838 mysqldump -x with views exits with error
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
@ -1060,10 +1067,10 @@ drop view v0;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#14554 - mysqldump does not separate words "ROW" and "BEGIN"
|
||||
# for tables with trigger created in the IGNORE_SPACE sql mode.
|
||||
#
|
||||
--echo #
|
||||
--echo # BUG#14554 - mysqldump does not separate words "ROW" and "BEGIN"
|
||||
--echo # for tables with trigger created in the IGNORE_SPACE sql mode.
|
||||
--echo #
|
||||
|
||||
SET @old_sql_mode = @@SQL_MODE;
|
||||
SET SQL_MODE = IGNORE_SPACE;
|
||||
@ -1084,18 +1091,19 @@ SET SQL_MODE = @old_sql_mode;
|
||||
DROP TRIGGER tr1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #13318: Bad result with empty field and --hex-blob
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #13318: Bad result with empty field and --hex-blob
|
||||
--echo #
|
||||
|
||||
create table t1 (a binary(1), b blob);
|
||||
insert into t1 values ('','');
|
||||
--exec $MYSQL_DUMP --skip-comments --skip-extended-insert --hex-blob test t1
|
||||
--exec $MYSQL_DUMP --skip-comments --hex-blob test t1
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug 14871 Invalid view dump output
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug 14871 Invalid view dump output
|
||||
--echo #
|
||||
|
||||
create table t1 (a int);
|
||||
insert into t1 values (289), (298), (234), (456), (789);
|
||||
@ -1122,9 +1130,9 @@ select * from v3 order by a;
|
||||
drop table t1;
|
||||
drop view v1, v2, v3, v4, v5;
|
||||
|
||||
#
|
||||
# Bug #16878 dump of trigger
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #16878 dump of trigger
|
||||
--echo #
|
||||
|
||||
create table t1 (a int, created datetime);
|
||||
create table t2 (b int, created datetime);
|
||||
@ -1152,11 +1160,10 @@ drop trigger tr1;
|
||||
drop trigger tr2;
|
||||
drop table t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#18462 mysqldump does not dump view structures correctly
|
||||
--echo #
|
||||
|
||||
#
|
||||
# Bug#18462 mysqldump does not dump view structures correctly
|
||||
#
|
||||
#
|
||||
create table t (qty int, price int);
|
||||
insert into t values(3, 50);
|
||||
insert into t values(5, 51);
|
||||
@ -1173,11 +1180,11 @@ drop view v2;
|
||||
drop table t;
|
||||
|
||||
|
||||
#
|
||||
# Bug#14857 Reading dump files with single statement stored routines fails.
|
||||
# fixed by patch for bug#16878
|
||||
#
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug#14857 Reading dump files with single statement stored routines fails.
|
||||
--echo # fixed by patch for bug#16878
|
||||
--echo #
|
||||
|
||||
DELIMITER |;
|
||||
/*!50003 CREATE FUNCTION `f`() RETURNS bigint(20)
|
||||
return 42 */|
|
||||
@ -1189,10 +1196,10 @@ show create procedure p;
|
||||
drop function f;
|
||||
drop procedure p;
|
||||
|
||||
#
|
||||
# Bug #17371 Unable to dump a schema with invalid views
|
||||
#
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #17371 Unable to dump a schema with invalid views
|
||||
--echo #
|
||||
|
||||
create table t1 ( id serial );
|
||||
create view v1 as select * from t1;
|
||||
drop table t1;
|
||||
@ -1203,9 +1210,9 @@ drop table t1;
|
||||
--echo } mysqldump
|
||||
drop view v1;
|
||||
|
||||
# BUG#17201 Spurious 'DROP DATABASE' in output,
|
||||
# also confusion between tables and views.
|
||||
# Example code from Markus Popp
|
||||
--echo # BUG#17201 Spurious 'DROP DATABASE' in output,
|
||||
--echo # also confusion between tables and views.
|
||||
--echo # Example code from Markus Popp
|
||||
|
||||
create database mysqldump_test_db;
|
||||
use mysqldump_test_db;
|
||||
@ -1220,7 +1227,9 @@ drop view v1;
|
||||
drop table t1;
|
||||
drop database mysqldump_test_db;
|
||||
|
||||
# Bug21014 Segmentation fault of mysqldump on view
|
||||
--echo #
|
||||
--echo # Bug21014 Segmentation fault of mysqldump on view
|
||||
--echo #
|
||||
|
||||
create database mysqldump_tables;
|
||||
use mysqldump_tables;
|
||||
@ -1237,7 +1246,9 @@ drop database mysqldump_views;
|
||||
drop table mysqldump_tables.basetable;
|
||||
drop database mysqldump_tables;
|
||||
|
||||
# Bug20221 Dumping of multiple databases containing view(s) yields maleformed dumps
|
||||
--echo #
|
||||
--echo # Bug20221 Dumping of multiple databases containing view(s) yields maleformed dumps
|
||||
--echo #
|
||||
|
||||
create database mysqldump_dba;
|
||||
use mysqldump_dba;
|
||||
@ -1276,9 +1287,9 @@ drop table t1;
|
||||
drop database mysqldump_dbb;
|
||||
use test;
|
||||
|
||||
#
|
||||
# Bug#21215 mysqldump creating incomplete backups without warning
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug#21215 mysqldump creating incomplete backups without warning
|
||||
--echo #
|
||||
|
||||
# Create user without sufficient privs to perform the requested operation
|
||||
create user mysqltest_1@localhost;
|
||||
@ -1318,12 +1329,12 @@ grant REPLICATION CLIENT on *.* to mysqltest_1@localhost;
|
||||
drop table t1;
|
||||
drop user mysqltest_1@localhost;
|
||||
|
||||
#
|
||||
# Bug #21527 mysqldump incorrectly tries to LOCK TABLES on the
|
||||
# information_schema database.
|
||||
#
|
||||
# Bug #21424 mysqldump failing to export/import views
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug #21527 mysqldump incorrectly tries to LOCK TABLES on the
|
||||
--echo # information_schema database.
|
||||
--echo #
|
||||
--echo # Bug #21424 mysqldump failing to export/import views
|
||||
--echo #
|
||||
|
||||
# Do as root
|
||||
connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||
@ -1357,8 +1368,10 @@ drop user myDB_User;
|
||||
drop database mysqldump_myDB;
|
||||
flush privileges;
|
||||
|
||||
# Bug #21424 continues from here.
|
||||
# Restore. Flush Privileges test ends.
|
||||
--echo # Bug #21424 continues from here.
|
||||
--echo # Restore. Flush Privileges test ends.
|
||||
--echo #
|
||||
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21527.sql;
|
||||
|
||||
# Do as a user
|
||||
@ -1380,4 +1393,25 @@ drop user myDB_User;
|
||||
drop database mysqldump_myDB;
|
||||
use test;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
--echo #
|
||||
--echo # BUG#13926: --order-by-primary fails if PKEY contains quote character
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS `t1`;
|
||||
CREATE TABLE `t1` (
|
||||
`a b` INT,
|
||||
`c"d` INT,
|
||||
`e``f` INT,
|
||||
PRIMARY KEY (`a b`, `c"d`, `e``f`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
insert into t1 values (0815, 4711, 2006);
|
||||
|
||||
--exec $MYSQL_DUMP --skip-comments --compatible=ansi --order-by-primary test t1
|
||||
--exec $MYSQL_DUMP --skip-comments --order-by-primary test t1
|
||||
DROP TABLE `t1`;
|
||||
--enable_warnings
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.0 tests
|
||||
--echo #
|
||||
|
@ -988,6 +988,58 @@ execute stmt;
|
||||
drop temporary table t1;
|
||||
deallocate prepare stmt;
|
||||
|
||||
#
|
||||
# BUG#22085: Crash on the execution of a prepared statement that
|
||||
# uses an IN subquery with aggregate functions in HAVING
|
||||
#
|
||||
|
||||
CREATE TABLE t1(
|
||||
ID int(10) unsigned NOT NULL auto_increment,
|
||||
Member_ID varchar(15) NOT NULL default '',
|
||||
Action varchar(12) NOT NULL,
|
||||
Action_Date datetime NOT NULL,
|
||||
Track varchar(15) default NULL,
|
||||
User varchar(12) default NULL,
|
||||
Date_Updated timestamp NOT NULL default CURRENT_TIMESTAMP on update
|
||||
CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (ID),
|
||||
KEY Action (Action),
|
||||
KEY Action_Date (Action_Date)
|
||||
);
|
||||
|
||||
INSERT INTO t1(Member_ID, Action, Action_Date, Track) VALUES
|
||||
('111111', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||||
('111111', 'Enrolled', '2006-03-01', 'CAD' ),
|
||||
('111111', 'Disenrolled', '2006-07-03', 'CAD' ),
|
||||
('222222', 'Enrolled', '2006-03-07', 'CAD' ),
|
||||
('222222', 'Enrolled', '2006-03-07', 'CHF' ),
|
||||
('222222', 'Disenrolled', '2006-08-02', 'CHF' ),
|
||||
('333333', 'Enrolled', '2006-03-01', 'CAD' ),
|
||||
('333333', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||||
('444444', 'Enrolled', '2006-03-01', 'CAD' ),
|
||||
('555555', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||||
('555555', 'Enrolled', '2006-07-21', 'CAD' ),
|
||||
('555555', 'Disenrolled', '2006-03-01', 'CHF' ),
|
||||
('666666', 'Enrolled', '2006-02-09', 'CAD' ),
|
||||
('666666', 'Enrolled', '2006-05-12', 'CHF' ),
|
||||
('666666', 'Disenrolled', '2006-06-01', 'CAD' );
|
||||
|
||||
PREPARE STMT FROM
|
||||
"SELECT GROUP_CONCAT(Track SEPARATOR ', ') FROM t1
|
||||
WHERE Member_ID=? AND Action='Enrolled' AND
|
||||
(Track,Action_Date) IN (SELECT Track, MAX(Action_Date) FROM t1
|
||||
WHERE Member_ID=?
|
||||
GROUP BY Track
|
||||
HAVING Track>='CAD' AND
|
||||
MAX(Action_Date)>'2006-03-01')";
|
||||
SET @id='111111';
|
||||
EXECUTE STMT USING @id,@id;
|
||||
SET @id='222222';
|
||||
EXECUTE STMT USING @id,@id;
|
||||
|
||||
DEALLOCATE PREPARE STMT;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 4.1 tests
|
||||
############################# 5.0 tests start ################################
|
||||
#
|
||||
|
@ -1,10 +1,21 @@
|
||||
# See if queries that use both auto_increment and LAST_INSERT_ID()
|
||||
# are replicated well
|
||||
|
||||
# We also check how the foreign_key_check variable is replicated
|
||||
--echo #
|
||||
--echo # Setup
|
||||
--echo #
|
||||
|
||||
source include/master-slave.inc;
|
||||
source include/have_innodb.inc;
|
||||
use test;
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2, t3;
|
||||
--enable_warnings
|
||||
|
||||
--echo #
|
||||
--echo # See if queries that use both auto_increment and LAST_INSERT_ID()
|
||||
--echo # are replicated well
|
||||
--echo #
|
||||
--echo # We also check how the foreign_key_check variable is replicated
|
||||
--echo #
|
||||
|
||||
connection master;
|
||||
create table t1(a int auto_increment, key(a));
|
||||
create table t2(b int auto_increment, c int, key(b));
|
||||
@ -39,7 +50,9 @@ select * from t1;
|
||||
select * from t2;
|
||||
connection master;
|
||||
|
||||
# check if INSERT SELECT in auto_increment is well replicated (bug #490)
|
||||
--echo #
|
||||
--echo # check if INSERT SELECT in auto_increment is well replicated (bug #490)
|
||||
--echo #
|
||||
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
@ -62,10 +75,11 @@ save_master_pos;
|
||||
connection slave;
|
||||
sync_with_master;
|
||||
|
||||
#
|
||||
# Bug#8412: Error codes reported in binary log for CHARACTER SET,
|
||||
# FOREIGN_KEY_CHECKS
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug#8412: Error codes reported in binary log for CHARACTER SET,
|
||||
--echo # FOREIGN_KEY_CHECKS
|
||||
--echo #
|
||||
|
||||
connection master;
|
||||
SET TIMESTAMP=1000000000;
|
||||
CREATE TABLE t1 ( a INT UNIQUE );
|
||||
@ -78,9 +92,10 @@ connection master;
|
||||
drop table t1;
|
||||
sync_slave_with_master;
|
||||
|
||||
#
|
||||
# Bug#14553: NULL in WHERE resets LAST_INSERT_ID
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug#14553: NULL in WHERE resets LAST_INSERT_ID
|
||||
--echo #
|
||||
|
||||
connection master;
|
||||
create table t1(a int auto_increment, key(a));
|
||||
create table t2(a int);
|
||||
@ -95,8 +110,10 @@ connection master;
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
sync_slave_with_master;
|
||||
# End of 4.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # End of 4.1 tests
|
||||
--echo #
|
||||
|
||||
#
|
||||
# BUG#15728: LAST_INSERT_ID function inside a stored function returns 0
|
||||
@ -227,7 +244,10 @@ select * from t1 order by n;
|
||||
|
||||
connection master;
|
||||
drop table t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
sync_slave_with_master;
|
||||
|
||||
--echo
|
||||
--echo # End of 5.0 tests
|
||||
--echo
|
||||
|
||||
|
||||
|
@ -7,7 +7,11 @@ source include/master-slave.inc;
|
||||
connection slave;
|
||||
stop slave;
|
||||
connection master;
|
||||
# Generate a big enough master's binlog to cause relay log rotations
|
||||
|
||||
--echo #
|
||||
--echo # Generate a big enough master's binlog to cause relay log rotations
|
||||
--echo #
|
||||
|
||||
create table t1 (a int);
|
||||
let $1=800;
|
||||
disable_query_log;
|
||||
@ -23,6 +27,11 @@ drop table t1;
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
reset slave;
|
||||
|
||||
--echo #
|
||||
--echo # Test 1
|
||||
--echo #
|
||||
|
||||
set global max_binlog_size=8192;
|
||||
set global max_relay_log_size=8192-1; # mapped to 4096
|
||||
select @@global.max_relay_log_size;
|
||||
@ -30,7 +39,13 @@ start slave;
|
||||
sync_with_master;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
--vertical_results
|
||||
show slave status;
|
||||
|
||||
--echo #
|
||||
--echo # Test 2
|
||||
--echo #
|
||||
|
||||
stop slave;
|
||||
reset slave;
|
||||
set global max_relay_log_size=(5*4096);
|
||||
@ -39,7 +54,13 @@ start slave;
|
||||
sync_with_master;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
--vertical_results
|
||||
show slave status;
|
||||
|
||||
--echo #
|
||||
--echo # Test 3: max_relay_log_size = 0
|
||||
--echo #
|
||||
|
||||
stop slave;
|
||||
reset slave;
|
||||
set global max_relay_log_size=0;
|
||||
@ -48,9 +69,12 @@ start slave;
|
||||
sync_with_master;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
--vertical_results
|
||||
show slave status;
|
||||
|
||||
# Tests below are mainly to ensure that we have not coded with wrong assumptions
|
||||
--echo #
|
||||
--echo # Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
|
||||
--echo #
|
||||
|
||||
stop slave;
|
||||
reset slave;
|
||||
@ -59,8 +83,13 @@ reset slave;
|
||||
flush logs;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
--vertical_results
|
||||
show slave status;
|
||||
|
||||
--echo #
|
||||
--echo # Test 5
|
||||
--echo #
|
||||
|
||||
reset slave;
|
||||
start slave;
|
||||
sync_with_master;
|
||||
@ -75,8 +104,13 @@ connection slave;
|
||||
sync_with_master;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
--vertical_results
|
||||
show slave status;
|
||||
# one more rotation, to be sure Relay_Log_Space is correctly updated
|
||||
|
||||
--echo #
|
||||
--echo # Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
|
||||
--echo #
|
||||
|
||||
flush logs;
|
||||
connection master;
|
||||
drop table t1;
|
||||
@ -85,6 +119,7 @@ connection slave;
|
||||
sync_with_master;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
--vertical_results
|
||||
show slave status;
|
||||
|
||||
connection master;
|
||||
@ -92,5 +127,6 @@ connection master;
|
||||
flush logs;
|
||||
show master status;
|
||||
|
||||
# End of 4.1 tests
|
||||
#
|
||||
--echo #
|
||||
--echo # End of 4.1 tests
|
||||
--echo #
|
||||
|
@ -129,3 +129,24 @@ DROP TABLE t1;
|
||||
--sync_with_master
|
||||
--connection master
|
||||
|
||||
#
|
||||
# BUG#19419: "VIEW: View that the column name is different
|
||||
# by master and slave is made".
|
||||
#
|
||||
connection master;
|
||||
create table t1(a int, b int);
|
||||
insert into t1 values (1, 1), (1, 2), (1, 3);
|
||||
create view v1(a, b) as select a, sum(b) from t1 group by a;
|
||||
|
||||
sync_slave_with_master;
|
||||
explain v1;
|
||||
show create table v1;
|
||||
select * from v1;
|
||||
|
||||
connection master;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
||||
sync_slave_with_master;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -665,7 +665,7 @@ CREATE TABLE t2 (
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
INSERT INTO t2 VALUES ('AUS','Australia','Oceania','Australia and New Zealand',7741220.00,1901,18886000,79.8,351182.00,392911.00,'Australia','Constitutional Monarchy, Federation','Elisabeth II',135,'AU');
|
||||
INSERT INTO t2 VALUES ('AZE','Azerbaijan','Asia','Middle East',86600.00,1991,7734000,62.9,4127.00,4100.00,'Azärbaycan','Federal Republic','Heydär Äliyev',144,'AZ');
|
||||
INSERT INTO t2 VALUES ('AZE','Azerbaijan','Asia','Middle East',86600.00,1991,7734000,62.9,4127.00,4100.00,'Azärbaycan','Federal Republic','Heydär Äliyev',144,'AZ');
|
||||
|
||||
select t2.Continent, t1.Name, t1.Population from t2 LEFT JOIN t1 ON t2.Code = t1.t2 where t1.Population IN (select max(t1.Population) AS Population from t1, t2 where t1.t2 = t2.Code group by Continent);
|
||||
|
||||
@ -1526,7 +1526,7 @@ CREATE TABLE t1 (
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('XXX','Xxxxx','Oceania','Xxxxxx',26.00,0,0,0,0,0,'Xxxxx','Xxxxx','Xxxxx',NULL,'XX');
|
||||
INSERT INTO t1 VALUES ('ASM','American Samoa','Oceania','Polynesia',199.00,0,68000,75.1,334.00,NULL,'Amerika Samoa','US Territory','George W. Bush',54,'AS');
|
||||
INSERT INTO t1 VALUES ('ATF','French Southern territories','Antarctica','Antarctica',7780.00,0,0,NULL,0.00,NULL,'Terres australes françaises','Nonmetropolitan Territory of France','Jacques Chirac',NULL,'TF');
|
||||
INSERT INTO t1 VALUES ('ATF','French Southern territories','Antarctica','Antarctica',7780.00,0,0,NULL,0.00,NULL,'Terres australes françaises','Nonmetropolitan Territory of France','Jacques Chirac',NULL,'TF');
|
||||
INSERT INTO t1 VALUES ('UMI','United States Minor Outlying Islands','Oceania','Micronesia/Caribbean',16.00,0,0,NULL,0.00,NULL,'United States Minor Outlying Islands','Dependent Territory of the US','George W. Bush',NULL,'UM');
|
||||
/*!40000 ALTER TABLE t1 ENABLE KEYS */;
|
||||
SELECT DISTINCT Continent AS c FROM t1 WHERE Code <> SOME ( SELECT Code FROM t1 WHERE Continent = c AND Population < 200);
|
||||
@ -1918,6 +1918,43 @@ SELECT sql_no_cache t1.a, r.a, r.b FROM t1 LEFT JOIN t2 r
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Bug #21853: assert failure for a grouping query with
|
||||
# an ALL/ANY quantified subquery in HAVING
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
field1 int NOT NULL,
|
||||
field2 int NOT NULL,
|
||||
field3 int NOT NULL,
|
||||
PRIMARY KEY (field1,field2,field3)
|
||||
);
|
||||
CREATE TABLE t2 (
|
||||
fieldA int NOT NULL,
|
||||
fieldB int NOT NULL,
|
||||
PRIMARY KEY (fieldA,fieldB)
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
(1,1,1), (1,1,2), (1,2,1), (1,2,2), (1,2,3), (1,3,1);
|
||||
INSERT INTO t2 VALUES (1,1), (1,2), (1,3);
|
||||
|
||||
SELECT field1, field2, COUNT(*)
|
||||
FROM t1 GROUP BY field1, field2;
|
||||
|
||||
SELECT field1, field2
|
||||
FROM t1
|
||||
GROUP BY field1, field2
|
||||
HAVING COUNT(*) >= ALL (SELECT fieldB
|
||||
FROM t2 WHERE fieldA = field1);
|
||||
SELECT field1, field2
|
||||
FROM t1
|
||||
GROUP BY field1, field2
|
||||
HAVING COUNT(*) < ANY (SELECT fieldB
|
||||
FROM t2 WHERE fieldA = field1);
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
@ -2332,3 +2369,34 @@ explain select * from t1 where not exists
|
||||
((select t11.i from t1 t11) union (select t12.i from t1 t12));
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #21540: Subqueries with no from and aggregate functions return
|
||||
# wrong results
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t2 values (1);
|
||||
INSERT INTO t1 VALUES (1,1),(1,2),(2,3),(3,4);
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
FROM t1 GROUP BY t1.a;
|
||||
SELECT COUNT(DISTINCT t1.b), (SELECT COUNT(DISTINCT t1.b)) FROM t1 GROUP BY t1.a;
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
FROM t1 GROUP BY t1.a;
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a;
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -347,13 +347,13 @@ create view v3 (x,y,z) as select b, a, b from t1;
|
||||
create view v4 (x,y,z) as select c+1, b, a from t1;
|
||||
create algorithm=temptable view v5 (x,y,z) as select c, b, a from t1;
|
||||
# try insert to VIEW with fields duplicate
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v3 values (-60,4,30);
|
||||
# try insert to VIEW with expression in SELECT list
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v4 values (-60,4,30);
|
||||
# try insert to VIEW using temporary table algorithm
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v5 values (-60,4,30);
|
||||
insert into v1 values (-60,4,30);
|
||||
insert into v1 (z,y,x) values (50,6,-100);
|
||||
@ -375,13 +375,13 @@ create view v3 (x,y,z) as select b, a, b from t1;
|
||||
create view v4 (x,y,z) as select c+1, b, a from t1;
|
||||
create algorithm=temptable view v5 (x,y,z) as select c, b, a from t1;
|
||||
# try insert to VIEW with fields duplicate
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v3 select c, b, a from t2;
|
||||
# try insert to VIEW with expression in SELECT list
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v4 select c, b, a from t2;
|
||||
# try insert to VIEW using temporary table algorithm
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v5 select c, b, a from t2;
|
||||
insert into v1 select c, b, a from t2;
|
||||
insert into v1 (z,y,x) select a+20,b+2,-100 from t2;
|
||||
@ -1249,14 +1249,14 @@ drop table t1;
|
||||
#
|
||||
create table t1 (s1 smallint);
|
||||
create view v1 as select * from t1 where 20 < (select (s1) from t1);
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v1 values (30);
|
||||
create view v2 as select * from t1;
|
||||
create view v3 as select * from t1 where 20 < (select (s1) from v2);
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v3 values (30);
|
||||
create view v4 as select * from v2 where 20 < (select (s1) from t1);
|
||||
-- error 1288
|
||||
-- error 1471
|
||||
insert into v4 values (30);
|
||||
drop view v4, v3, v2, v1;
|
||||
drop table t1;
|
||||
@ -2825,7 +2825,7 @@ BEGIN
|
||||
END |
|
||||
delimiter ;|
|
||||
|
||||
--error ER_NON_UPDATABLE_TABLE
|
||||
--error ER_NON_INSERTABLE_TABLE
|
||||
SELECT f2();
|
||||
|
||||
DROP FUNCTION f1;
|
||||
@ -2850,4 +2850,33 @@ EXPLAIN SELECT * FROM v1 t WHERE t.s1+1 < (SELECT MAX(t1.s1) FROM t1);
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #5505: Wrong error message on INSERT into a view
|
||||
#
|
||||
create table t1 (s1 int);
|
||||
create view v1 as select s1 as a, s1 as b from t1;
|
||||
--error 1471
|
||||
insert into v1 values (1,1);
|
||||
update v1 set a = 5;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #21646: view qith a subquery in ON expression
|
||||
#
|
||||
|
||||
CREATE TABLE t1(pk int PRIMARY KEY);
|
||||
CREATE TABLE t2(pk int PRIMARY KEY, fk int, ver int, org int);
|
||||
|
||||
CREATE ALGORITHM=MERGE VIEW v1 AS
|
||||
SELECT t1.*
|
||||
FROM t1 JOIN t2
|
||||
ON t2.fk = t1.pk AND
|
||||
t2.ver = (SELECT MAX(t.ver) FROM t2 t WHERE t.org = t2.org);
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE VIEW v1;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1, t2;
|
||||
--echo End of 5.0 tests.
|
||||
|
@ -46,7 +46,9 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
|
||||
DBUG_PRINT("my",("fd: %d length: %lu MyFlags: %d",fd,(ulong) newlength,
|
||||
MyFlags));
|
||||
|
||||
oldsize = my_seek(fd, 0L, MY_SEEK_END, MYF(MY_WME+MY_FAE));
|
||||
if ((oldsize = my_seek(fd, 0L, MY_SEEK_END, MYF(MY_WME+MY_FAE))) == newlength)
|
||||
DBUG_RETURN(0);
|
||||
|
||||
DBUG_PRINT("info",("old_size: %ld", (ulong) oldsize));
|
||||
|
||||
if (oldsize > newlength)
|
||||
|
@ -97,11 +97,11 @@ port='@MYSQL_TCP_PORT@'
|
||||
ldflags='@LDFLAGS@'
|
||||
|
||||
# Create options
|
||||
# We intentionally add a space to the beginning of lib strings, simplifies replace later
|
||||
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later
|
||||
libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
||||
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@"
|
||||
libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@"
|
||||
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@"
|
||||
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
|
||||
libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ "
|
||||
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
|
||||
|
||||
cflags="-I$pkgincludedir @CFLAGS@ " #note: end space!
|
||||
include="-I$pkgincludedir"
|
||||
@ -111,8 +111,9 @@ include="-I$pkgincludedir"
|
||||
# and -xstrconst to make --cflags usable for Sun Forte C++
|
||||
for remove in DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX \
|
||||
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \
|
||||
DEXTRA_DEBUG DHAVE_purify 'O[0-9]' 'W[-A-Za-z]*' \
|
||||
Xa xstrconst "xc99=none"
|
||||
DEXTRA_DEBUG DHAVE_purify O 'O[0-9]' 'xO[0-9]' 'W[-A-Za-z]*' \
|
||||
Xa xstrconst "xc99=none" \
|
||||
unroll2 ip mp restrict
|
||||
do
|
||||
# The first option we might strip will always have a space before it because
|
||||
# we set -I$pkgincludedir as the first option
|
||||
@ -121,7 +122,7 @@ done
|
||||
cflags=`echo "$cflags"|sed -e 's/ *\$//'`
|
||||
|
||||
# Same for --libs(_r)
|
||||
for remove in lmtmalloc
|
||||
for remove in lmtmalloc static-libcxa i-static
|
||||
do
|
||||
# We know the strings starts with a space
|
||||
libs=`echo "$libs"|sed -e "s/ -$remove */ /g"`
|
||||
|
@ -1758,7 +1758,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
const char *passwd, const char *db,
|
||||
uint port, const char *unix_socket,ulong client_flag)
|
||||
{
|
||||
char buff[NAME_BYTE_LEN+USERNAME_BYTE_LENGTH+100];
|
||||
char buff[NAME_LEN+USERNAME_LENGTH+100];
|
||||
char *end,*host_info;
|
||||
my_socket sock;
|
||||
in_addr_t ip_addr;
|
||||
@ -2217,7 +2217,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
mysql->server_status, client_flag));
|
||||
/* This needs to be changed as it's not useful with big packets */
|
||||
if (user && user[0])
|
||||
strmake(end,user,USERNAME_BYTE_LENGTH); /* Max user name */
|
||||
strmake(end,user,USERNAME_LENGTH); /* Max user name */
|
||||
else
|
||||
read_user_name((char*) end);
|
||||
|
||||
@ -2247,7 +2247,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
/* Add database if needed */
|
||||
if (db && (mysql->server_capabilities & CLIENT_CONNECT_WITH_DB))
|
||||
{
|
||||
end= strmake(end, db, NAME_BYTE_LEN) + 1;
|
||||
end= strmake(end, db, NAME_LEN) + 1;
|
||||
mysql->db= my_strdup(db,MYF(MY_WME));
|
||||
db= 0;
|
||||
}
|
||||
|
@ -110,5 +110,8 @@ ADD_CUSTOM_COMMAND(
|
||||
COMMAND ${GEN_LEX_HASH_EXE} ARGS > lex_hash.h
|
||||
DEPENDS ${GEN_LEX_HASH_EXE}
|
||||
)
|
||||
|
||||
ADD_DEPENDENCIES(mysqld gen_lex_hash)
|
||||
|
||||
ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def)
|
||||
ADD_DEPENDENCIES(udf_example strings)
|
||||
TARGET_LINK_LIBRARIES(udf_example wsock32)
|
||||
|
@ -117,7 +117,8 @@ DEFS = -DMYSQL_SERVER \
|
||||
|
||||
BUILT_SOURCES = sql_yacc.cc sql_yacc.h lex_hash.h
|
||||
EXTRA_DIST = $(BUILT_SOURCES) nt_servc.cc nt_servc.h \
|
||||
message.mc examples/CMakeLists.txt CMakeLists.txt
|
||||
message.mc examples/CMakeLists.txt CMakeLists.txt \
|
||||
udf_example.c udf_example.def
|
||||
DISTCLEANFILES = lex_hash.h sql_yacc.output
|
||||
|
||||
AM_YFLAGS = -d --debug --verbose
|
||||
|
@ -1432,6 +1432,8 @@ public:
|
||||
uint decimals, flags, pack_length, key_length;
|
||||
Field::utype unireg_check;
|
||||
TYPELIB *interval; // Which interval to use
|
||||
TYPELIB *save_interval; // Temporary copy for the above
|
||||
// Used only for UCS2 intervals
|
||||
List<String> interval_list;
|
||||
CHARSET_INFO *charset;
|
||||
Field::geometry_type geom_type;
|
||||
|
@ -1268,6 +1268,7 @@ sortlength(THD *thd, SORT_FIELD *sortorder, uint s_length,
|
||||
switch ((sortorder->result_type=sortorder->item->result_type())) {
|
||||
case STRING_RESULT:
|
||||
sortorder->length=sortorder->item->max_length;
|
||||
set_if_smaller(sortorder->length, thd->variables.max_sort_length);
|
||||
if (use_strnxfrm((cs=sortorder->item->collation.collation)))
|
||||
{
|
||||
sortorder->length= cs->coll->strnxfrmlen(cs, sortorder->length);
|
||||
|
@ -1182,6 +1182,7 @@ void Item::split_sum_func2(THD *thd, Item **ref_pointer_array,
|
||||
split_sum_func(thd, ref_pointer_array, fields);
|
||||
}
|
||||
else if ((type() == SUM_FUNC_ITEM || (used_tables() & ~PARAM_TABLE_BIT)) &&
|
||||
type() != SUBSELECT_ITEM &&
|
||||
(type() != REF_ITEM ||
|
||||
((Item_ref*)this)->ref_type() == Item_ref::VIEW_REF))
|
||||
{
|
||||
|
@ -246,7 +246,27 @@ bool Item_sum::register_sum_func(THD *thd, Item **ref)
|
||||
aggr_sl->inner_sum_func_list->next= this;
|
||||
}
|
||||
aggr_sl->inner_sum_func_list= this;
|
||||
|
||||
aggr_sl->with_sum_func= 1;
|
||||
|
||||
/*
|
||||
Mark Item_subselect(s) as containing aggregate function all the way up
|
||||
to aggregate function's calculation context.
|
||||
Note that we must not mark the Item of calculation context itself
|
||||
because with_sum_func on the calculation context st_select_lex is
|
||||
already set above.
|
||||
|
||||
with_sum_func being set for an Item means that this Item refers
|
||||
(somewhere in it, e.g. one of its arguments if it's a function) directly
|
||||
or through intermediate items to an aggregate function that is calculated
|
||||
in a context "outside" of the Item (e.g. in the current or outer select).
|
||||
|
||||
with_sum_func being set for an st_select_lex means that this st_select_lex
|
||||
has aggregate functions directly referenced (i.e. not through a sub-select).
|
||||
*/
|
||||
for (sl= thd->lex->current_select;
|
||||
sl && sl != aggr_sl && sl->master_unit()->item;
|
||||
sl= sl->master_unit()->outer_select() )
|
||||
sl->master_unit()->item->with_sum_func= 1;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -446,7 +446,8 @@ enum enum_parsing_place
|
||||
NO_MATTER,
|
||||
IN_HAVING,
|
||||
SELECT_LIST,
|
||||
IN_WHERE
|
||||
IN_WHERE,
|
||||
IN_ON
|
||||
};
|
||||
|
||||
struct st_table;
|
||||
@ -567,7 +568,7 @@ void get_default_definer(THD *thd, LEX_USER *definer);
|
||||
LEX_USER *create_default_definer(THD *thd);
|
||||
LEX_USER *create_definer(THD *thd, LEX_STRING *user_name, LEX_STRING *host_name);
|
||||
LEX_USER *get_current_user(THD *thd, LEX_USER *user);
|
||||
bool check_string_length(CHARSET_INFO *cs, LEX_STRING *str,
|
||||
bool check_string_length(LEX_STRING *str,
|
||||
const char *err_msg, uint max_length);
|
||||
|
||||
enum enum_mysql_completiontype {
|
||||
|
@ -5631,3 +5631,6 @@ ER_HOSTNAME
|
||||
eng "host name"
|
||||
ER_WRONG_STRING_LENGTH
|
||||
eng "String '%-.70s' is too long for %s (should be no longer than %d)"
|
||||
ER_NON_INSERTABLE_TABLE
|
||||
eng "The target table %-.100s of the %s is not insertable-into"
|
||||
|
||||
|
@ -406,7 +406,7 @@ typedef struct st_master_info
|
||||
/* the variables below are needed because we can change masters on the fly */
|
||||
char master_log_name[FN_REFLEN];
|
||||
char host[HOSTNAME_LENGTH+1];
|
||||
char user[USERNAME_BYTE_LENGTH+1];
|
||||
char user[USERNAME_LENGTH+1];
|
||||
char password[MAX_PASSWORD_LENGTH+1];
|
||||
my_bool ssl; // enables use of SSL connection if true
|
||||
char ssl_ca[FN_REFLEN], ssl_capath[FN_REFLEN], ssl_cert[FN_REFLEN];
|
||||
|
@ -404,16 +404,16 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
|
||||
{
|
||||
LEX *old_lex= thd->lex, newlex;
|
||||
String defstr;
|
||||
char old_db_buf[NAME_BYTE_LEN+1];
|
||||
char old_db_buf[NAME_LEN+1];
|
||||
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
||||
bool dbchanged;
|
||||
ulong old_sql_mode= thd->variables.sql_mode;
|
||||
ha_rows old_select_limit= thd->variables.select_limit;
|
||||
sp_rcontext *old_spcont= thd->spcont;
|
||||
|
||||
char definer_user_name_holder[USERNAME_BYTE_LENGTH + 1];
|
||||
char definer_user_name_holder[USERNAME_LENGTH + 1];
|
||||
LEX_STRING_WITH_INIT definer_user_name(definer_user_name_holder,
|
||||
USERNAME_BYTE_LENGTH);
|
||||
USERNAME_LENGTH);
|
||||
|
||||
char definer_host_name_holder[HOSTNAME_LENGTH + 1];
|
||||
LEX_STRING_WITH_INIT definer_host_name(definer_host_name_holder,
|
||||
@ -511,7 +511,7 @@ db_create_routine(THD *thd, int type, sp_head *sp)
|
||||
int ret;
|
||||
TABLE *table;
|
||||
char definer[USER_HOST_BUFF_SIZE];
|
||||
char old_db_buf[NAME_BYTE_LEN+1];
|
||||
char old_db_buf[NAME_LEN+1];
|
||||
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
||||
bool dbchanged;
|
||||
DBUG_ENTER("db_create_routine");
|
||||
|
@ -924,7 +924,7 @@ bool
|
||||
sp_head::execute(THD *thd)
|
||||
{
|
||||
DBUG_ENTER("sp_head::execute");
|
||||
char old_db_buf[NAME_BYTE_LEN+1];
|
||||
char old_db_buf[NAME_LEN+1];
|
||||
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
||||
bool dbchanged;
|
||||
sp_rcontext *ctx;
|
||||
@ -1957,8 +1957,8 @@ sp_head::set_info(longlong created, longlong modified,
|
||||
void
|
||||
sp_head::set_definer(const char *definer, uint definerlen)
|
||||
{
|
||||
char user_name_holder[USERNAME_BYTE_LENGTH + 1];
|
||||
LEX_STRING_WITH_INIT user_name(user_name_holder, USERNAME_BYTE_LENGTH);
|
||||
char user_name_holder[USERNAME_LENGTH + 1];
|
||||
LEX_STRING_WITH_INIT user_name(user_name_holder, USERNAME_LENGTH);
|
||||
|
||||
char host_name_holder[HOSTNAME_LENGTH + 1];
|
||||
LEX_STRING_WITH_INIT host_name(host_name_holder, HOSTNAME_LENGTH);
|
||||
|
@ -54,7 +54,7 @@ static byte* acl_entry_get_key(acl_entry *entry,uint *length,
|
||||
}
|
||||
|
||||
#define IP_ADDR_STRLEN (3+1+3+1+3+1+3)
|
||||
#define ACL_KEY_LENGTH (IP_ADDR_STRLEN+1+NAME_BYTE_LEN+1+USERNAME_BYTE_LENGTH+1)
|
||||
#define ACL_KEY_LENGTH (IP_ADDR_STRLEN+1+NAME_LEN+1+USERNAME_LENGTH+1)
|
||||
|
||||
static DYNAMIC_ARRAY acl_hosts,acl_users,acl_dbs;
|
||||
static MEM_ROOT mem, memex;
|
||||
@ -197,7 +197,7 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
|
||||
READ_RECORD read_record_info;
|
||||
my_bool return_val= 1;
|
||||
bool check_no_resolve= specialflag & SPECIAL_NO_RESOLVE;
|
||||
char tmp_name[NAME_BYTE_LEN+1];
|
||||
char tmp_name[NAME_LEN+1];
|
||||
int password_length;
|
||||
DBUG_ENTER("acl_load");
|
||||
|
||||
@ -2264,7 +2264,7 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
|
||||
const char *user, const char *tname,
|
||||
bool exact)
|
||||
{
|
||||
char helping [NAME_BYTE_LEN*2+USERNAME_BYTE_LENGTH+3];
|
||||
char helping [NAME_LEN*2+USERNAME_LENGTH+3];
|
||||
uint len;
|
||||
GRANT_NAME *grant_name,*found=0;
|
||||
HASH_SEARCH_STATE state;
|
||||
@ -3167,7 +3167,7 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
|
||||
{
|
||||
List_iterator <LEX_USER> str_list (list);
|
||||
LEX_USER *Str, *tmp_Str;
|
||||
char tmp_db[NAME_BYTE_LEN+1];
|
||||
char tmp_db[NAME_LEN+1];
|
||||
bool create_new_users=0;
|
||||
TABLE_LIST tables[2];
|
||||
DBUG_ENTER("mysql_grant");
|
||||
@ -3231,7 +3231,7 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
|
||||
{
|
||||
result= TRUE;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (replace_user_table(thd, tables[0].table, *Str,
|
||||
(!db ? rights : 0), revoke_grant, create_new_users,
|
||||
test(thd->variables.sql_mode &
|
||||
@ -3867,7 +3867,7 @@ err2:
|
||||
bool check_grant_db(THD *thd,const char *db)
|
||||
{
|
||||
Security_context *sctx= thd->security_ctx;
|
||||
char helping [NAME_BYTE_LEN+USERNAME_BYTE_LENGTH+2];
|
||||
char helping [NAME_LEN+USERNAME_LENGTH+2];
|
||||
uint len;
|
||||
bool error= 1;
|
||||
|
||||
|
@ -902,8 +902,11 @@ void update_non_unique_table_error(TABLE_LIST *update,
|
||||
*/
|
||||
if (update->view)
|
||||
{
|
||||
/* Issue the ER_NON_INSERTABLE_TABLE error for an INSERT */
|
||||
if (update->view == duplicate->view)
|
||||
my_error(ER_NON_UPDATABLE_TABLE, MYF(0), update->alias, operation);
|
||||
my_error(!strncmp(operation, "INSERT", 6) ?
|
||||
ER_NON_INSERTABLE_TABLE : ER_NON_UPDATABLE_TABLE, MYF(0),
|
||||
update->alias, operation);
|
||||
else
|
||||
my_error(ER_VIEW_PREVENT_UPDATE, MYF(0),
|
||||
(duplicate->view ? duplicate->alias : update->alias),
|
||||
|
@ -200,7 +200,7 @@ class MYSQL_LOG: public TC_LOG
|
||||
IO_CACHE log_file;
|
||||
IO_CACHE index_file;
|
||||
char *name;
|
||||
char time_buff[20],db[NAME_BYTE_LEN+1];
|
||||
char time_buff[20],db[NAME_LEN+1];
|
||||
char log_file_name[FN_REFLEN],index_file_name[FN_REFLEN];
|
||||
/*
|
||||
The max size before rotation (usable only if log_type == LOG_BIN: binary
|
||||
|
@ -111,7 +111,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list,
|
||||
|
||||
if (!table_list->updatable)
|
||||
{
|
||||
my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias, "INSERT");
|
||||
my_error(ER_NON_INSERTABLE_TABLE, MYF(0), table_list->alias, "INSERT");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -214,7 +214,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list,
|
||||
(table_list->view &&
|
||||
check_view_insertability(thd, table_list)))
|
||||
{
|
||||
my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias, "INSERT");
|
||||
my_error(ER_NON_INSERTABLE_TABLE, MYF(0), table_list->alias, "INSERT");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1710,7 +1710,8 @@ bool st_lex::can_be_merged()
|
||||
unit= unit->next_unit())
|
||||
{
|
||||
if (unit->first_select()->parent_lex == this &&
|
||||
(unit->item == 0 || unit->item->place() != IN_WHERE))
|
||||
(unit->item == 0 ||
|
||||
(unit->item->place() != IN_WHERE && unit->item->place() != IN_ON)))
|
||||
{
|
||||
selects_allow_merge= 0;
|
||||
break;
|
||||
|
@ -1001,8 +1001,8 @@ static int check_connection(THD *thd)
|
||||
char *passwd= strend(user)+1;
|
||||
uint user_len= passwd - user - 1;
|
||||
char *db= passwd;
|
||||
char db_buff[NAME_BYTE_LEN + 1]; // buffer to store db in utf8
|
||||
char user_buff[USERNAME_BYTE_LENGTH + 1]; // buffer to store user in utf8
|
||||
char db_buff[NAME_LEN + 1]; // buffer to store db in utf8
|
||||
char user_buff[USERNAME_LENGTH + 1]; // buffer to store user in utf8
|
||||
uint dummy_errors;
|
||||
|
||||
/*
|
||||
@ -1662,7 +1662,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
||||
password. New clients send the size (1 byte) + string (not null
|
||||
terminated, so also '\0' for empty string).
|
||||
*/
|
||||
char db_buff[NAME_BYTE_LEN+1]; // buffer to store db in utf8
|
||||
char db_buff[NAME_LEN+1]; // buffer to store db in utf8
|
||||
char *db= passwd;
|
||||
uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
|
||||
*passwd++ : strlen(passwd);
|
||||
@ -4765,6 +4765,19 @@ end_with_restore_list:
|
||||
}
|
||||
append_identifier(thd, &buff, first_table->table_name,
|
||||
first_table->table_name_length);
|
||||
if (lex->view_list.elements)
|
||||
{
|
||||
List_iterator_fast<LEX_STRING> names(lex->view_list);
|
||||
LEX_STRING *name;
|
||||
int i;
|
||||
|
||||
for (i= 0; name= names++; i++)
|
||||
{
|
||||
buff.append(i ? ", " : "(");
|
||||
append_identifier(thd, &buff, name->str, name->length);
|
||||
}
|
||||
buff.append(')');
|
||||
}
|
||||
buff.append(STRING_WITH_LEN(" AS "));
|
||||
buff.append(first_table->source.str, first_table->source.length);
|
||||
|
||||
@ -7552,7 +7565,6 @@ LEX_USER *get_current_user(THD *thd, LEX_USER *user)
|
||||
|
||||
SYNOPSIS
|
||||
check_string_length()
|
||||
cs string charset
|
||||
str string to be checked
|
||||
err_msg error message to be displayed if the string is too long
|
||||
max_length max length
|
||||
@ -7562,13 +7574,13 @@ LEX_USER *get_current_user(THD *thd, LEX_USER *user)
|
||||
TRUE the passed string is longer than max_length
|
||||
*/
|
||||
|
||||
bool check_string_length(CHARSET_INFO *cs, LEX_STRING *str,
|
||||
const char *err_msg, uint max_length)
|
||||
bool check_string_length(LEX_STRING *str, const char *err_msg,
|
||||
uint max_length)
|
||||
{
|
||||
if (cs->cset->charpos(cs, str->str, str->str + str->length,
|
||||
max_length) >= str->length)
|
||||
return FALSE;
|
||||
if (str->length <= max_length)
|
||||
return FALSE;
|
||||
|
||||
my_error(ER_WRONG_STRING_LENGTH, MYF(0), str->str, err_msg, max_length);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ typedef struct st_slave_info
|
||||
uint32 server_id;
|
||||
uint32 rpl_recovery_rank, master_id;
|
||||
char host[HOSTNAME_LENGTH+1];
|
||||
char user[USERNAME_BYTE_LENGTH+1];
|
||||
char user[USERNAME_LENGTH+1];
|
||||
char password[MAX_PASSWORD_LENGTH+1];
|
||||
uint16 port;
|
||||
THD* thd;
|
||||
|
@ -11735,8 +11735,6 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
|
||||
We must not try to use disabled keys.
|
||||
*/
|
||||
usable_keys= table->s->keys_in_use;
|
||||
/* we must not consider keys that are disabled by IGNORE INDEX */
|
||||
usable_keys.intersect(table->keys_in_use_for_query);
|
||||
|
||||
for (ORDER *tmp_order=order; tmp_order ; tmp_order=tmp_order->next)
|
||||
{
|
||||
|
@ -1574,7 +1574,7 @@ bool insert_view_fields(THD *thd, List<Item> *list, TABLE_LIST *view)
|
||||
list->push_back(fld);
|
||||
else
|
||||
{
|
||||
my_error(ER_NON_UPDATABLE_TABLE, MYF(0), view->alias, "INSERT");
|
||||
my_error(ER_NON_INSERTABLE_TABLE, MYF(0), view->alias, "INSERT");
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
}
|
||||
|
@ -5212,11 +5212,13 @@ join_table:
|
||||
/* Change the current name resolution context to a local context. */
|
||||
if (push_new_name_resolution_context(YYTHD, $1, $3))
|
||||
YYABORT;
|
||||
Select->parsing_place= IN_ON;
|
||||
}
|
||||
expr
|
||||
{
|
||||
add_join_on($3,$6);
|
||||
Lex->pop_context();
|
||||
Select->parsing_place= NO_MATTER;
|
||||
}
|
||||
| table_ref STRAIGHT_JOIN table_factor
|
||||
ON
|
||||
@ -5225,12 +5227,14 @@ join_table:
|
||||
/* Change the current name resolution context to a local context. */
|
||||
if (push_new_name_resolution_context(YYTHD, $1, $3))
|
||||
YYABORT;
|
||||
Select->parsing_place= IN_ON;
|
||||
}
|
||||
expr
|
||||
{
|
||||
$3->straight=1;
|
||||
add_join_on($3,$6);
|
||||
Lex->pop_context();
|
||||
Select->parsing_place= NO_MATTER;
|
||||
}
|
||||
| table_ref normal_join table_ref
|
||||
USING
|
||||
@ -5254,6 +5258,7 @@ join_table:
|
||||
/* Change the current name resolution context to a local context. */
|
||||
if (push_new_name_resolution_context(YYTHD, $1, $5))
|
||||
YYABORT;
|
||||
Select->parsing_place= IN_ON;
|
||||
}
|
||||
expr
|
||||
{
|
||||
@ -5261,6 +5266,7 @@ join_table:
|
||||
Lex->pop_context();
|
||||
$5->outer_join|=JOIN_TYPE_LEFT;
|
||||
$$=$5;
|
||||
Select->parsing_place= NO_MATTER;
|
||||
}
|
||||
| table_ref LEFT opt_outer JOIN_SYM table_factor
|
||||
{
|
||||
@ -5285,6 +5291,7 @@ join_table:
|
||||
/* Change the current name resolution context to a local context. */
|
||||
if (push_new_name_resolution_context(YYTHD, $1, $5))
|
||||
YYABORT;
|
||||
Select->parsing_place= IN_ON;
|
||||
}
|
||||
expr
|
||||
{
|
||||
@ -5293,6 +5300,7 @@ join_table:
|
||||
YYABORT;
|
||||
add_join_on($$, $8);
|
||||
Lex->pop_context();
|
||||
Select->parsing_place= NO_MATTER;
|
||||
}
|
||||
| table_ref RIGHT opt_outer JOIN_SYM table_factor
|
||||
{
|
||||
@ -6921,6 +6929,9 @@ load: LOAD DATA_SYM
|
||||
YYABORT;
|
||||
}
|
||||
lex->sql_command = SQLCOM_LOAD_MASTER_TABLE;
|
||||
WARN_DEPRECATED("LOAD TABLE FROM MASTER",
|
||||
"mysqldump or future "
|
||||
"BACKUP/RESTORE DATABASE facility");
|
||||
if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING))
|
||||
YYABORT;
|
||||
};
|
||||
@ -6959,6 +6970,9 @@ load_data:
|
||||
FROM MASTER_SYM
|
||||
{
|
||||
Lex->sql_command = SQLCOM_LOAD_MASTER_DATA;
|
||||
WARN_DEPRECATED("LOAD DATA FROM MASTER",
|
||||
"mysqldump or future "
|
||||
"BACKUP/RESTORE DATABASE facility");
|
||||
};
|
||||
|
||||
opt_local:
|
||||
@ -7517,7 +7531,7 @@ user:
|
||||
$$->host.str= (char *) "%";
|
||||
$$->host.length= 1;
|
||||
|
||||
if (check_string_length(system_charset_info, &$$->user,
|
||||
if (check_string_length(&$$->user,
|
||||
ER(ER_USERNAME), USERNAME_LENGTH))
|
||||
YYABORT;
|
||||
}
|
||||
@ -7528,9 +7542,9 @@ user:
|
||||
YYABORT;
|
||||
$$->user = $1; $$->host=$3;
|
||||
|
||||
if (check_string_length(system_charset_info, &$$->user,
|
||||
if (check_string_length(&$$->user,
|
||||
ER(ER_USERNAME), USERNAME_LENGTH) ||
|
||||
check_string_length(&my_charset_latin1, &$$->host,
|
||||
check_string_length(&$$->host,
|
||||
ER(ER_HOSTNAME), HOSTNAME_LENGTH))
|
||||
YYABORT;
|
||||
}
|
||||
|
@ -1592,7 +1592,7 @@ char *get_field(MEM_ROOT *mem, Field *field)
|
||||
|
||||
bool check_db_name(char *name)
|
||||
{
|
||||
uint name_length= 0; // name length in symbols
|
||||
char *start= name;
|
||||
/* Used to catch empty names and names with end space */
|
||||
bool last_char_is_space= TRUE;
|
||||
|
||||
@ -1609,7 +1609,6 @@ bool check_db_name(char *name)
|
||||
name+system_charset_info->mbmaxlen);
|
||||
if (len)
|
||||
{
|
||||
name_length++;
|
||||
name += len;
|
||||
continue;
|
||||
}
|
||||
@ -1617,13 +1616,12 @@ bool check_db_name(char *name)
|
||||
#else
|
||||
last_char_is_space= *name==' ';
|
||||
#endif
|
||||
name_length++;
|
||||
if (*name == '/' || *name == '\\' || *name == FN_LIBCHAR ||
|
||||
*name == FN_EXTCHAR)
|
||||
return 1;
|
||||
name++;
|
||||
}
|
||||
return (last_char_is_space || name_length > NAME_LEN);
|
||||
return last_char_is_space || (uint) (name - start) > NAME_LEN;
|
||||
}
|
||||
|
||||
|
||||
|
@ -127,7 +127,14 @@ typedef long long longlong;
|
||||
#else
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
#if defined(MYSQL_SERVER)
|
||||
#include <m_string.h> /* To get strmov() */
|
||||
#else
|
||||
/* when compiled as standalone */
|
||||
#define strmov(a,b) strcpy(a,b)
|
||||
#define bzero(a,b) memset(a,0,b)
|
||||
#define memcpy_fixed(a,b,c) memcpy(a,b,c)
|
||||
#endif
|
||||
#endif
|
||||
#include <mysql.h>
|
||||
#include <ctype.h>
|
||||
@ -674,10 +681,14 @@ longlong sequence(UDF_INIT *initid __attribute__((unused)), UDF_ARGS *args,
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef __WIN__
|
||||
#include <winsock.h>
|
||||
#else
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#endif
|
||||
|
||||
my_bool lookup_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
|
||||
void lookup_deinit(UDF_INIT *initid);
|
||||
|
24
sql/udf_example.def
Normal file
24
sql/udf_example.def
Normal file
@ -0,0 +1,24 @@
|
||||
LIBRARY udf_example
|
||||
DESCRIPTION 'MySQL Sample for UDF'
|
||||
VERSION 1.0
|
||||
EXPORTS
|
||||
lookup
|
||||
lookup_init
|
||||
reverse_lookup
|
||||
reverse_lookup_init
|
||||
metaphon_init
|
||||
metaphon_deinit
|
||||
metaphon
|
||||
myfunc_double_init
|
||||
myfunc_double
|
||||
myfunc_int_init
|
||||
myfunc_int
|
||||
sequence_init
|
||||
sequence_deinit
|
||||
sequence
|
||||
avgcost_init
|
||||
avgcost_deinit
|
||||
avgcost_reset
|
||||
avgcost_add
|
||||
avgcost_clear
|
||||
avgcost
|
@ -228,13 +228,19 @@ bool mysql_create_frm(THD *thd, my_string file_name,
|
||||
goto err3;
|
||||
|
||||
{
|
||||
/* Unescape all UCS2 intervals: were escaped in pack_headers */
|
||||
/*
|
||||
Restore all UCS2 intervals.
|
||||
HEX representation of them is not needed anymore.
|
||||
*/
|
||||
List_iterator<create_field> it(create_fields);
|
||||
create_field *field;
|
||||
while ((field=it++))
|
||||
{
|
||||
if (field->interval && field->charset->mbminlen > 1)
|
||||
unhex_type2(field->interval);
|
||||
if (field->save_interval)
|
||||
{
|
||||
field->interval= field->save_interval;
|
||||
field->save_interval= 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
@ -514,18 +520,36 @@ static bool pack_header(uchar *forminfo, enum db_type table_type,
|
||||
reclength=(uint) (field->offset+ data_offset + length);
|
||||
n_length+= (ulong) strlen(field->field_name)+1;
|
||||
field->interval_id=0;
|
||||
field->save_interval= 0;
|
||||
if (field->interval)
|
||||
{
|
||||
uint old_int_count=int_count;
|
||||
|
||||
if (field->charset->mbminlen > 1)
|
||||
{
|
||||
/* Escape UCS2 intervals using HEX notation */
|
||||
/*
|
||||
Escape UCS2 intervals using HEX notation to avoid
|
||||
problems with delimiters between enum elements.
|
||||
As the original representation is still needed in
|
||||
the function make_empty_rec to create a record of
|
||||
filled with default values it is saved in save_interval
|
||||
The HEX representation is created from this copy.
|
||||
*/
|
||||
field->save_interval= field->interval;
|
||||
field->interval= (TYPELIB*) sql_alloc(sizeof(TYPELIB));
|
||||
*field->interval= *field->save_interval;
|
||||
field->interval->type_names=
|
||||
(const char **) sql_alloc(sizeof(char*) *
|
||||
(field->interval->count+1));
|
||||
field->interval->type_names[field->interval->count]= 0;
|
||||
field->interval->type_lengths=
|
||||
(uint *) sql_alloc(sizeof(uint) * field->interval->count);
|
||||
|
||||
for (uint pos= 0; pos < field->interval->count; pos++)
|
||||
{
|
||||
char *dst;
|
||||
uint length= field->interval->type_lengths[pos], hex_length;
|
||||
const char *src= field->interval->type_names[pos];
|
||||
uint length= field->save_interval->type_lengths[pos], hex_length;
|
||||
const char *src= field->save_interval->type_names[pos];
|
||||
hex_length= length * 2;
|
||||
field->interval->type_lengths[pos]= hex_length;
|
||||
field->interval->type_names[pos]= dst= sql_alloc(hex_length + 1);
|
||||
@ -777,7 +801,8 @@ static bool make_empty_rec(THD *thd, File file,enum db_type table_type,
|
||||
field->charset,
|
||||
field->geom_type,
|
||||
field->unireg_check,
|
||||
field->interval,
|
||||
field->save_interval ? field->save_interval :
|
||||
field->interval,
|
||||
field->field_name,
|
||||
&table);
|
||||
if (!regfield)
|
||||
|
Loading…
x
Reference in New Issue
Block a user