diff --git a/BitKeeper/etc/gone b/BitKeeper/etc/gone index 63a759cf131..2d5522899d2 100644 --- a/BitKeeper/etc/gone +++ b/BitKeeper/etc/gone @@ -750,6 +750,7 @@ mwagner@work.mysql.com|mysql-test/r/3.23/sel000001.result|20001010091454|28284|3 mwagner@work.mysql.com|mysql-test/r/3.23/sel000002.result|20001010091454|29230|d1787e6fd5dbc1cc nick@nick.leippe.com|mysql-test/r/rpl_empty_master_crash.result|20020531235552|47718|615f521be2132141 nick@nick.leippe.com|mysql-test/t/rpl_empty_master_crash.test|20020531235552|52328|99464e737639ccc6 +reggie@mdk10.(none)|mysql-test/t/reserved_win_names-master.opt|20050520210356|14878|e56da049a7ce9a5b sasha@mysql.sashanet.com|BitKeeper/etc/logging_ok|20000801000905|12967|5b7d847a2158554 sasha@mysql.sashanet.com|build-tags|20011125054855|05181|7afb7e785b80f97 sasha@mysql.sashanet.com|build-tags|20011201050944|25384|b6f6fff142121618 diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 246de2fffa2..aad4399302e 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -29,6 +29,7 @@ bar@gw.udmsearch.izhnet.ru bar@mysql.com bar@noter.intranet.mysql.r18.ru bell@51.0.168.192.in-addr.arpa +bell@book.sanja.is.com.ua bell@laptop.sanja.is.com.ua bell@sanja.is.com.ua bk@admin.bk @@ -48,6 +49,7 @@ dlenev@mysql.com ejonore@mc03.ndb.mysql.com evgen@moonbone.(none) evgen@moonbone.local +gbichot@bk-internal.mysql.com gbichot@production.mysql.com gbichot@quadita2.mysql.com gbichot@quadxeon.mysql.com @@ -249,6 +251,7 @@ tonu@x3.internalnet tsmith@build.mysql.com tulin@build.mysql.com tulin@dl145b.mysql.com +tulin@dl145c.mysql.com tulin@mysql.com ulli@morbus.(none) venu@hundin.mysql.fi diff --git a/VC++Files/mysys/mysys.dsp b/VC++Files/mysys/mysys.dsp index ad6caf1986e..f47203d37bf 100644 --- a/VC++Files/mysys/mysys.dsp +++ b/VC++Files/mysys/mysys.dsp @@ -186,6 +186,11 @@ SOURCE=.\array.c !ENDIF # End Source File + +# Begin Source File +SOURCE=".\my_access.c" +# End Source File + # Begin Source File SOURCE=".\charset-def.c" diff --git a/VC++Files/mysys/mysys_ia64.dsp b/VC++Files/mysys/mysys_ia64.dsp index ed2dac53579..a0877457286 100644 --- a/VC++Files/mysys/mysys_ia64.dsp +++ b/VC++Files/mysys/mysys_ia64.dsp @@ -163,6 +163,13 @@ LIB32=link.exe -lib # Name "mysys - WinIA64 Max" # Name "mysys - WinIA64 TLS_DEBUG" # Name "mysys - WinIA64 TLS" + +# Begin Source File + +SOURCE=.\my_access.c + +# End Source File + # Begin Source File SOURCE=.\array.c diff --git a/client/mysql.cc b/client/mysql.cc index 6a76a1fbd1b..a3262c818f3 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -2051,7 +2051,8 @@ print_table_data(MYSQL_RES *result) separator.fill(separator.length()+length+2,'-'); separator.append('+'); } - tee_puts(separator.c_ptr_safe(), PAGER); + separator.append('\0'); // End marker for \0 + tee_puts((char*) separator.ptr(), PAGER); if (column_names) { mysql_field_seek(result,0); @@ -2064,7 +2065,7 @@ print_table_data(MYSQL_RES *result) num_flag[off]= IS_NUM(field->type); } (void) tee_fputs("\n", PAGER); - tee_puts(separator.c_ptr(), PAGER); + tee_puts((char*) separator.ptr(), PAGER); } while ((cur= mysql_fetch_row(result))) @@ -2093,7 +2094,7 @@ print_table_data(MYSQL_RES *result) } (void) tee_fputs("\n", PAGER); } - tee_puts(separator.c_ptr(), PAGER); + tee_puts((char*) separator.ptr(), PAGER); my_afree((gptr) num_flag); } diff --git a/client/mysqldump.c b/client/mysqldump.c index 67b89ea4bc2..493ef57a73b 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -75,18 +75,22 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length, char **err_pos, uint *err_len); static char *field_escape(char *to,const char *from,uint length); -static my_bool verbose=0,tFlag=0,cFlag=0,dFlag=0,quick= 1, extended_insert= 1, +static my_bool verbose=0,tFlag=0,dFlag=0,quick= 1, extended_insert= 1, lock_tables=1,ignore_errors=0,flush_logs=0, opt_drop=1,opt_keywords=0,opt_lock=1,opt_compress=0, opt_delayed=0,create_options=1,opt_quoted=0,opt_databases=0, - opt_alldbs=0,opt_create_db=0,opt_lock_all_tables=0,opt_set_charset, + opt_alldbs=0,opt_create_db=0,opt_lock_all_tables=0, + opt_set_charset=0, opt_autocommit=0,opt_disable_keys=1,opt_xml=0, opt_delete_master_logs=0, tty_password=0, opt_single_transaction=0, opt_comments= 0, opt_compact= 0, - opt_hex_blob=0, opt_order_by_primary=0, opt_ignore=0; + opt_hex_blob=0, opt_order_by_primary=0, opt_ignore=0, + opt_complete_insert= 0; static ulong opt_max_allowed_packet, opt_net_buffer_length; static MYSQL mysql_connection,*sock=0; -static char insert_pat[12 * 1024],*opt_password=0,*current_user=0, +static my_bool insert_pat_inited=0; +static DYNAMIC_STRING insert_pat; +static char *opt_password=0,*current_user=0, *current_host=0,*path=0,*fields_terminated=0, *lines_terminated=0, *enclosed=0, *opt_enclosed=0, *escaped=0, *where=0, *order_by=0, @@ -178,8 +182,9 @@ static struct my_option my_long_options[] = "Give less verbose output (useful for debugging). Disables structure comments and header/footer constructs. Enables options --skip-add-drop-table --no-set-names --skip-disable-keys --skip-add-locks", (gptr*) &opt_compact, (gptr*) &opt_compact, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"complete-insert", 'c', "Use complete insert statements.", (gptr*) &cFlag, - (gptr*) &cFlag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"complete-insert", 'c', "Use complete insert statements.", + (gptr*) &opt_complete_insert, (gptr*) &opt_complete_insert, 0, GET_BOOL, + NO_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use compression in server/client protocol.", (gptr*) &opt_compress, (gptr*) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -1085,7 +1090,7 @@ static void print_xml_row(FILE *xml_file, const char *row_name, /* - getStructure -- retrievs database structure, prints out corresponding + getTableStructure -- retrievs database structure, prints out corresponding CREATE statement and fills out insert_pat. RETURN @@ -1098,13 +1103,22 @@ static uint getTableStructure(char *table, char* db) MYSQL_ROW row; my_bool init=0; uint numFields; - char *strpos, *result_table, *opt_quoted_table; + char *result_table, *opt_quoted_table; const char *insert_option; char name_buff[NAME_LEN+3],table_buff[NAME_LEN*2+3]; char table_buff2[NAME_LEN*2+3]; + char query_buff[512]; FILE *sql_file = md_result_file; + int len; DBUG_ENTER("getTableStructure"); + if (!insert_pat_inited) + { + insert_pat_inited= init_dynamic_string(&insert_pat, "", 1024, 1024); + } + else + dynstr_set(&insert_pat, ""); + insert_option= (opt_delayed && opt_ignore) ? " DELAYED IGNORE " : opt_delayed ? " DELAYED " : opt_ignore ? " IGNORE " : ""; @@ -1112,11 +1126,11 @@ static uint getTableStructure(char *table, char* db) if (verbose) fprintf(stderr, "-- Retrieving table structure for table %s...\n", table); - my_snprintf(insert_pat, sizeof(insert_pat), - "SET OPTION SQL_QUOTE_SHOW_CREATE=%d", - (opt_quoted || opt_keywords)); + len= my_snprintf(query_buff, sizeof(query_buff), + "SET OPTION SQL_QUOTE_SHOW_CREATE=%d", + (opt_quoted || opt_keywords)); if (!create_options) - strmov(strend(insert_pat), "/*!40102 ,SQL_MODE=concat(@@sql_mode, _utf8 ',NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS') */"); + strmov(query_buff+len, "/*!40102 ,SQL_MODE=concat(@@sql_mode, _utf8 ',NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS') */"); result_table= quote_name(table, table_buff, 1); opt_quoted_table= quote_name(table, table_buff2, 0); @@ -1124,7 +1138,7 @@ static uint getTableStructure(char *table, char* db) if (opt_order_by_primary) order_by = primary_key_fields(opt_quoted_table); - if (!opt_xml && !mysql_query_with_error_report(sock, 0, insert_pat)) + if (!opt_xml && !mysql_query_with_error_report(sock, 0, query_buff)) { /* using SHOW CREATE statement */ if (!tFlag) @@ -1170,9 +1184,9 @@ static uint getTableStructure(char *table, char* db) check_io(sql_file); mysql_free_result(tableRes); } - my_snprintf(insert_pat, sizeof(insert_pat), "show fields from %s", + my_snprintf(query_buff, sizeof(query_buff), "show fields from %s", result_table); - if (mysql_query_with_error_report(sock, &tableRes, insert_pat)) + if (mysql_query_with_error_report(sock, &tableRes, query_buff)) { if (path) my_fclose(sql_file, MYF(MY_WME)); @@ -1180,28 +1194,32 @@ static uint getTableStructure(char *table, char* db) DBUG_RETURN(0); } - if (cFlag) - my_snprintf(insert_pat, sizeof(insert_pat), "INSERT %sINTO %s (", - insert_option, opt_quoted_table); + dynstr_append_mem(&insert_pat, "INSERT ", 7); + dynstr_append(&insert_pat, insert_option); + dynstr_append_mem(&insert_pat, "INTO ", 5); + dynstr_append(&insert_pat, opt_quoted_table); + if (opt_complete_insert) + { + dynstr_append_mem(&insert_pat, " (", 2); + } else { - my_snprintf(insert_pat, sizeof(insert_pat), "INSERT %sINTO %s VALUES ", - insert_option, opt_quoted_table); + dynstr_append_mem(&insert_pat, " VALUES ", 8); if (!extended_insert) - strcat(insert_pat,"("); + dynstr_append_mem(&insert_pat, "(", 1); } - strpos=strend(insert_pat); while ((row=mysql_fetch_row(tableRes))) { if (init) { - if (cFlag) - strpos=strmov(strpos,", "); + if (opt_complete_insert) + dynstr_append_mem(&insert_pat, ", ", 2); } init=1; - if (cFlag) - strpos=strmov(strpos,quote_name(row[SHOW_FIELDNAME], name_buff, 0)); + if (opt_complete_insert) + dynstr_append(&insert_pat, + quote_name(row[SHOW_FIELDNAME], name_buff, 0)); } numFields = (uint) mysql_num_rows(tableRes); mysql_free_result(tableRes); @@ -1213,9 +1231,9 @@ static uint getTableStructure(char *table, char* db) "%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n", my_progname, mysql_error(sock)); - my_snprintf(insert_pat, sizeof(insert_pat), "show fields from %s", + my_snprintf(query_buff, sizeof(query_buff), "show fields from %s", result_table); - if (mysql_query_with_error_report(sock, &tableRes, insert_pat)) + if (mysql_query_with_error_report(sock, &tableRes, query_buff)) { safe_exit(EX_MYSQLERR); DBUG_RETURN(0); @@ -1248,18 +1266,22 @@ static uint getTableStructure(char *table, char* db) print_xml_tag1(sql_file, "\t", "table_structure name=", table, "\n"); check_io(sql_file); } - if (cFlag) - my_snprintf(insert_pat, sizeof(insert_pat), "INSERT %sINTO %s (", - insert_option, result_table); + + dynstr_append_mem(&insert_pat, "INSERT ", 7); + dynstr_append(&insert_pat, insert_option); + dynstr_append_mem(&insert_pat, "INTO ", 5); + dynstr_append(&insert_pat, result_table); + if (opt_complete_insert) + { + dynstr_append_mem(&insert_pat, " (", 2); + } else { - my_snprintf(insert_pat, sizeof(insert_pat), "INSERT %sINTO %s VALUES ", - insert_option, result_table); + dynstr_append_mem(&insert_pat, " VALUES ", 8); if (!extended_insert) - strcat(insert_pat,"("); + dynstr_append_mem(&insert_pat, "(", 1); } - strpos=strend(insert_pat); while ((row=mysql_fetch_row(tableRes))) { ulong *lengths=mysql_fetch_lengths(tableRes); @@ -1270,12 +1292,13 @@ static uint getTableStructure(char *table, char* db) fputs(",\n",sql_file); check_io(sql_file); } - if (cFlag) - strpos=strmov(strpos,", "); + if (opt_complete_insert) + dynstr_append_mem(&insert_pat, ", ", 2); } init=1; - if (cFlag) - strpos=strmov(strpos,quote_name(row[SHOW_FIELDNAME], name_buff, 0)); + if (opt_complete_insert) + dynstr_append(&insert_pat, + quote_name(row[SHOW_FIELDNAME], name_buff, 0)); if (!tFlag) { if (opt_xml) @@ -1283,7 +1306,7 @@ static uint getTableStructure(char *table, char* db) print_xml_row(sql_file, "field", tableRes, &row); continue; } - + if (opt_keywords) fprintf(sql_file, " %s.%s %s", result_table, quote_name(row[SHOW_FIELDNAME],name_buff, 0), @@ -1428,11 +1451,11 @@ static uint getTableStructure(char *table, char* db) check_io(sql_file); } } - if (cFlag) + if (opt_complete_insert) { - strpos=strmov(strpos,") VALUES "); + dynstr_append_mem(&insert_pat, ") VALUES ", 9); if (!extended_insert) - strpos=strmov(strpos,"("); + dynstr_append_mem(&insert_pat, "(", 1); } if (sql_file != md_result_file) { @@ -1655,7 +1678,7 @@ static void dumpTable(uint numFields, char *table) total_length= opt_net_buffer_length; /* Force row break */ row_break=0; rownr=0; - init_length=(uint) strlen(insert_pat)+4; + init_length=(uint) insert_pat.length+4; if (opt_xml) print_xml_tag1(md_result_file, "\t", "table_data name=", table, "\n"); @@ -1672,7 +1695,7 @@ static void dumpTable(uint numFields, char *table) rownr++; if (!extended_insert && !opt_xml) { - fputs(insert_pat,md_result_file); + fputs(insert_pat.str,md_result_file); check_io(md_result_file); } mysql_field_seek(res,0); @@ -1869,7 +1892,7 @@ static void dumpTable(uint numFields, char *table) fputs(";\n", md_result_file); row_break=1; /* This is first row */ - fputs(insert_pat,md_result_file); + fputs(insert_pat.str,md_result_file); fputs(extended_row.str,md_result_file); total_length = row_length+init_length; } @@ -2562,6 +2585,8 @@ err: my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR)); if (extended_insert) dynstr_free(&extended_row); + if (insert_pat_inited) + dynstr_free(&insert_pat); my_end(0); return(first_error); } /* main */ diff --git a/client/mysqltest.c b/client/mysqltest.c index 3eab182a74d..e60d9ecd1c5 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -572,7 +572,7 @@ static void abort_not_supported_test() printf("skipped\n"); free_used_memory(); my_end(MY_CHECK_ERROR); - exit(2); + exit(62); } static void verbose_msg(const char* fmt, ...) @@ -2597,6 +2597,8 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) if (!disable_result_log) { + ulong affected_rows; /* Ok to be undef if 'disable_info' is set */ + if (res) { MYSQL_FIELD *field= mysql_fetch_fields(res); @@ -2619,6 +2621,13 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) append_result(ds, res); } + /* + Need to call mysql_affected_rows() before the new + query to find the warnings + */ + if (!disable_info) + affected_rows= (ulong)mysql_affected_rows(mysql); + /* Add all warnings to the result */ if (!disable_warnings && mysql_warning_count(mysql)) { @@ -2641,7 +2650,7 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags) if (!disable_info) { char buf[40]; - sprintf(buf,"affected rows: %lu\n",(ulong) mysql_affected_rows(mysql)); + sprintf(buf,"affected rows: %lu\n", affected_rows); dynstr_append(ds, buf); if (mysql_info(mysql)) { @@ -3522,6 +3531,12 @@ int main(int argc, char **argv) if (q->query == q->query_buf) q->query += q->first_word_len + 1; display_result_vertically= (q->type==Q_QUERY_VERTICAL); + if (save_file[0]) + { + strmov(q->record_file,save_file); + q->require_file=require_file; + save_file[0]=0; + } error|= run_query(&cur_con->mysql, q, QUERY_REAP|QUERY_SEND); display_result_vertically= old_display_result_vertically; break; diff --git a/cmd-line-utils/libedit/makelist.sh b/cmd-line-utils/libedit/makelist.sh index 502604791f5..f15b3d1eb9f 100644 --- a/cmd-line-utils/libedit/makelist.sh +++ b/cmd-line-utils/libedit/makelist.sh @@ -87,7 +87,7 @@ case $FLAG in cat $FILES | $AWK ' BEGIN { printf("/* Automatically generated file, do not edit */\n"); - printf("#include \"sys.h\"\n#include \"el.h\"\n"); + printf("#include \"config.h\"\n#include \"el.h\"\n"); printf("private const struct el_bindings_t el_func_help[] = {\n"); low = "abcdefghijklmnopqrstuvwxyz_"; high = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_"; @@ -170,7 +170,7 @@ case $FLAG in cat $FILES | $AWK '/el_action_t/ { print $3 }' | sort | $AWK ' BEGIN { printf("/* Automatically generated file, do not edit */\n"); - printf("#include \"sys.h\"\n#include \"el.h\"\n"); + printf("#include \"config.h\"\n#include \"el.h\"\n"); printf("private const el_func_t el_func[] = {"); maxlen = 80; needn = 1; diff --git a/cmd-line-utils/libedit/readline.c b/cmd-line-utils/libedit/readline.c index 3a38e8a99ab..616b55a877e 100644 --- a/cmd-line-utils/libedit/readline.c +++ b/cmd-line-utils/libedit/readline.c @@ -70,10 +70,10 @@ extern char *alloca (); #include #include +#include "readline/readline.h" #include "el.h" #include "fcns.h" /* for EL_NUM_FCNS */ #include "histedit.h" -#include "readline/readline.h" /* for rl_complete() */ #define TAB '\r' diff --git a/cmd-line-utils/libedit/readline/readline.h b/cmd-line-utils/libedit/readline/readline.h index 902179c208a..c43f71fb51d 100644 --- a/cmd-line-utils/libedit/readline/readline.h +++ b/cmd-line-utils/libedit/readline/readline.h @@ -73,7 +73,7 @@ typedef KEYMAP_ENTRY *Keymap; #ifndef CTRL #include -#ifdef __GLIBC__ +#if defined(__GLIBC__) || defined(__MWERKS__) #include #endif #ifndef CTRL diff --git a/cmd-line-utils/libedit/search.c b/cmd-line-utils/libedit/search.c index 848429e091b..850c5f27140 100644 --- a/cmd-line-utils/libedit/search.c +++ b/cmd-line-utils/libedit/search.c @@ -37,6 +37,7 @@ /* * search.c: History and character search functions */ +#include #include #if defined(REGEX) #include diff --git a/cmd-line-utils/libedit/vi.c b/cmd-line-utils/libedit/vi.c index 4a0352859dd..b977ce716c6 100644 --- a/cmd-line-utils/libedit/vi.c +++ b/cmd-line-utils/libedit/vi.c @@ -1014,7 +1014,7 @@ vi_histedit(EditLine *el, int c) return CC_ERROR; case 0: close(fd); - execlp("vi", "vi", tempfile, 0); + execlp("vi", "vi", tempfile, (char *) NULL); exit(0); /*NOTREACHED*/ default: diff --git a/configure.in b/configure.in index a5872a79ae3..7dd49ca8dea 100644 --- a/configure.in +++ b/configure.in @@ -1884,6 +1884,7 @@ fi fi AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include ]) AC_CHECK_TYPES([size_t], [], [], [#include ]) +AC_CHECK_TYPES([u_int32_t]) MYSQL_PTHREAD_YIELD diff --git a/include/my_global.h b/include/my_global.h index 62c6a5d1e4a..f059d603976 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -44,7 +44,7 @@ #endif /* __CYGWIN__ */ /* Determine when to use "#pragma interface" */ -#if !defined(__CYGWIN__) && !defined(__ICC) && defined(__GNUC__) && (__GNUC__ < 3) +#if !defined(__CYGWIN__) && !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ < 3) #define USE_PRAGMA_INTERFACE #endif diff --git a/include/my_sys.h b/include/my_sys.h index c9552f8558b..a0a008056ae 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -573,6 +573,11 @@ extern char *_my_strdup_with_length(const byte *from, uint length, const char *sFile, uint uLine, myf MyFlag); +#ifdef __WIN__ +extern int my_access(const char *path, int amode); +#else +#define my_access access +#endif #ifndef TERMINATE extern void TERMINATE(FILE *file); diff --git a/include/mysql.h b/include/mysql.h index d8a56126756..ab61fe694d9 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -381,6 +381,7 @@ unsigned int STDCALL mysql_warning_count(MYSQL *mysql); const char * STDCALL mysql_info(MYSQL *mysql); unsigned long STDCALL mysql_thread_id(MYSQL *mysql); const char * STDCALL mysql_character_set_name(MYSQL *mysql); +int STDCALL mysql_set_character_set(MYSQL *mysql, char *csname); MYSQL * STDCALL mysql_init(MYSQL *mysql); my_bool STDCALL mysql_ssl_set(MYSQL *mysql, const char *key, diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 9410f2ce7cc..280c306cce4 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -1606,10 +1606,18 @@ row_create_table_for_mysql( trx_general_rollback_for_mysql(trx, FALSE, NULL); if (err == DB_OUT_OF_FILE_SPACE) { - fputs("InnoDB: Warning: cannot create table ", stderr); + ut_print_timestamp(stderr); + + fputs(" InnoDB: Warning: cannot create table ", + stderr); ut_print_name(stderr, trx, table->name); fputs(" because tablespace full\n", stderr); - row_drop_table_for_mysql(table->name, trx, FALSE); + + if (dict_table_get_low(table->name)) { + + row_drop_table_for_mysql(table->name, trx, + FALSE); + } } else if (err == DB_DUPLICATE_KEY) { ut_print_timestamp(stderr); diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index c663dab7476..4d92db26406 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -1510,6 +1510,39 @@ const char * STDCALL mysql_character_set_name(MYSQL *mysql) } +int STDCALL mysql_set_character_set(MYSQL *mysql, char *cs_name) +{ + struct charset_info_st *cs; + const char *save_csdir= charsets_dir; + + if (mysql->options.charset_dir) + charsets_dir= mysql->options.charset_dir; + + if ((cs= get_charset_by_csname(cs_name, MY_CS_PRIMARY, MYF(0)))) + { + char buff[MY_CS_NAME_SIZE + 10]; + charsets_dir= save_csdir; + sprintf(buff, "SET NAMES %s", cs_name); + if (!mysql_query(mysql, buff)) + { + mysql->charset= cs; + } + } + else + { + char cs_dir_name[FN_REFLEN]; + get_charsets_dir(cs_dir_name); + mysql->net.last_errno= CR_CANT_READ_CHARSET; + strmov(mysql->net.sqlstate, unknown_sqlstate); + my_snprintf(mysql->net.last_error, sizeof(mysql->net.last_error) - 1, + ER(mysql->net.last_errno), cs_name, cs_dir_name); + + } + charsets_dir= save_csdir; + return mysql->net.last_errno; +} + + uint STDCALL mysql_thread_safe(void) { #ifdef THREAD @@ -3914,9 +3947,12 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind) /* We only need to check that stmt->field_count - if it is not null stmt->bind was initialized in mysql_stmt_prepare - */ + stmt->bind overlaps with bind if mysql_stmt_bind_param + is called from mysql_stmt_store_result. + */ - memcpy((char*) stmt->bind, (char*) bind, sizeof(MYSQL_BIND) * bind_count); + if (stmt->bind != bind) + memcpy((char*) stmt->bind, (char*) bind, sizeof(MYSQL_BIND) * bind_count); for (param= stmt->bind, end= param + bind_count, field= stmt->fields ; param < end ; diff --git a/libmysql/libmysql.def b/libmysql/libmysql.def index c5579e9ec2b..57c97ab08ee 100644 --- a/libmysql/libmysql.def +++ b/libmysql/libmysql.def @@ -146,4 +146,5 @@ EXPORTS mysql_rpl_query_type mysql_slave_query mysql_embedded + mysql_set_character_set get_defaults_files diff --git a/man/mysqldump.1.in b/man/mysqldump.1.in index 4d841117e59..0f581429af7 100644 --- a/man/mysqldump.1.in +++ b/man/mysqldump.1.in @@ -218,7 +218,8 @@ or ), mysqldump will create rows up to net_buffer_length length. If you increase this variable, you should also ensure that the max_allowed_packet variable in the MySQL server is bigger than the net_buffer_length. .SH EXAMPLES .TP -The most normal use of mysqldump is probably for making a backup of whole databases. See Mysql Manual section 21.2 Database Backups. +The most normal use of mysqldump is probably for making a backup of whole +databases. See the section on Database Backups in the MySQL Reference Manual. .TP mysqldump \-\-opt \fP\fIdatabase\fP > backup-file.sql .TP diff --git a/myisam/mi_check.c b/myisam/mi_check.c index f710d3a8454..d59c9b9c697 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -3243,6 +3243,9 @@ static int sort_key_write(MI_SORT_PARAM *sort_param, const void *a) cmp=ha_key_cmp(sort_param->seg,sort_info->key_block->lastkey, (uchar*) a, USE_WHOLE_KEY,SEARCH_FIND | SEARCH_UPDATE, &diff_pos); + ha_key_cmp(sort_param->seg,sort_info->key_block->lastkey, + (uchar*) a, USE_WHOLE_KEY,SEARCH_FIND | SEARCH_NULL_ARE_NOT_EQUAL, + &diff_pos); sort_param->unique[diff_pos-1]++; } else @@ -3955,7 +3958,38 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, return; } - /* calculate unique keys for each part key */ + +/* + Update statistics for each part of an index + + SYNOPSIS + update_key_parts() + keyinfo Index information (only key->keysegs used) + rec_per_key_part OUT Store statistics here + unique IN Array of #distinct values collected over index + run. + records Number of records in the table + + NOTES + Unique is an array: + unique[0]= (#different values of {keypart1}) - 1 + unique[1]= (#different values of {keypart2,keypart1} tuple) - unique[0] - 1 + ... + Here we assume that NULL != NULL (see SEARCH_NULL_ARE_NOT_EQUAL). The + 'unique' array is collected in one sequential scan through the entire + index. This is done in two places: in chk_index() and in sort_key_write(). + + Output is an array: + rec_per_key_part[k] = + = E(#records in the table such that keypart_1=c_1 AND ... AND + keypart_k=c_k for arbitrary constants c_1 ... c_k) + + = {assuming that values have uniform distribution and index contains all + tuples from the domain (or that {c_1, ..., c_k} tuple is choosen from + index tuples} + + = #tuples-in-the-index / #distinct-tuples-in-the-index. +*/ void update_key_parts(MI_KEYDEF *keyinfo, ulong *rec_per_key_part, ulonglong *unique, ulonglong records) diff --git a/myisam/mi_key.c b/myisam/mi_key.c index 3545756779f..b7240f34538 100644 --- a/myisam/mi_key.c +++ b/myisam/mi_key.c @@ -301,8 +301,25 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old, } /* _mi_pack_key */ - /* Put a key in record */ - /* Used when only-keyread is wanted */ + +/* + Store found key in record + + SYNOPSIS + _mi_put_key_in_record() + info MyISAM handler + keynr Key number that was used + record Store key here + + Last read key is in info->lastkey + + NOTES + Used when only-keyread is wanted + + RETURN + 0 ok + 1 error +*/ static int _mi_put_key_in_record(register MI_INFO *info, uint keynr, byte *record) @@ -313,14 +330,8 @@ static int _mi_put_key_in_record(register MI_INFO *info, uint keynr, byte *blob_ptr; DBUG_ENTER("_mi_put_key_in_record"); - if (info->s->base.blobs && info->s->keyinfo[keynr].flag & HA_VAR_LENGTH_KEY) - { - if (!(blob_ptr= - mi_alloc_rec_buff(info, info->s->keyinfo[keynr].keylength, - &info->rec_buff))) - goto err; - } - key=(byte*) info->lastkey; + blob_ptr= info->lastkey2; /* Place to put blob parts */ + key=(byte*) info->lastkey; /* KEy that was read */ key_end=key+info->lastkey_length; for (keyseg=info->s->keyinfo[keynr].seg ; keyseg->type ;keyseg++) { diff --git a/myisam/sp_key.c b/myisam/sp_key.c index b61e8094cde..1d43f89cba9 100644 --- a/myisam/sp_key.c +++ b/myisam/sp_key.c @@ -32,7 +32,11 @@ static int sp_get_geometry_mbr(uchar *(*wkb), uchar *end, uint n_dims, double *mbr, int top); static int sp_mbr_from_wkb(uchar (*wkb), uint size, uint n_dims, double *mbr); - +static void get_double(double *d, const byte *pos) +{ + float8get(*d, pos); +} + uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key, const byte *record, my_off_t filepos) { @@ -80,7 +84,7 @@ uint sp_make_key(register MI_INFO *info, uint keynr, uchar *key, else if (keyseg->type == HA_KEYTYPE_DOUBLE) { double nr; - float8get(nr, pos); + get_double(&nr, pos); if (isnan(nr)) { bzero(key, length); @@ -138,7 +142,7 @@ static int sp_add_point_to_mbr(uchar *(*wkb), uchar *end, uint n_dims, { if ((*wkb) > end - 8) return -1; - float8get(ord, (*wkb)); + get_double(&ord, *wkb); (*wkb)+= 8; if (ord < *mbr) float8store((char*) mbr, ord); diff --git a/myisammrg/myrg_open.c b/myisammrg/myrg_open.c index 0dc2f4f9768..f9cdc2bb205 100644 --- a/myisammrg/myrg_open.c +++ b/myisammrg/myrg_open.c @@ -67,7 +67,7 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) while ((length=my_b_gets(&file,buff,FN_REFLEN-1))) { if ((end=buff+length)[-1] == '\n') - end[-1]='\0'; + *--end='\0'; if (!buff[0]) continue; /* Skip empty lines */ if (buff[0] == '#') @@ -86,6 +86,8 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) sizeof(name_buff)-1-dir_length)); VOID(cleanup_dirname(buff,name_buff)); } + else + fn_format(buff, buff, "", "", 0); if (!(isam=mi_open(buff,mode,(handle_locking?HA_OPEN_WAIT_IF_LOCKED:0)))) goto err; if (!m_info) /* First file */ diff --git a/mysql-test/include/have_outfile.inc b/mysql-test/include/have_outfile.inc new file mode 100644 index 00000000000..31e95f4810a --- /dev/null +++ b/mysql-test/include/have_outfile.inc @@ -0,0 +1,5 @@ +-- require r/have_outfile.require +disable_query_log; +select load_file(concat(@tmpdir,"/outfile.test")); +--exec rm $MYSQL_TEST_DIR/var/tmp/outfile.test +enable_query_log; diff --git a/mysql-test/include/test_outfile.inc b/mysql-test/include/test_outfile.inc new file mode 100644 index 00000000000..0bede4938c6 --- /dev/null +++ b/mysql-test/include/test_outfile.inc @@ -0,0 +1 @@ +eval select "Outfile OK" into outfile "$MYSQL_TEST_DIR/var/tmp/outfile.test"; diff --git a/mysql-test/lib/init_db.sql b/mysql-test/lib/init_db.sql index 902af0b0842..6d5ec55a6ae 100644 --- a/mysql-test/lib/init_db.sql +++ b/mysql-test/lib/init_db.sql @@ -1,4 +1,5 @@ -USE mysql; +use mysql; +set table_type=myisam; CREATE TABLE db ( Host char(60) binary DEFAULT '' NOT NULL, @@ -193,7 +194,7 @@ INSERT INTO time_zone_name (Name, Time_Zone_id) VALUES CREATE TABLE time_zone ( Time_zone_id int unsigned NOT NULL auto_increment, - Use_leap_seconds enum('Y','N') DEFAULT 'N' NOT NULL, + Use_leap_seconds enum('Y','N') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY TzId (Time_zone_id) ) engine=MyISAM CHARACTER SET utf8 diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index 8aefc235d72..78758e54aa4 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -344,7 +344,7 @@ sub mtr_kill_leftovers () { # We scan the "var/run/" directory for other process id's to kill # FIXME $path_run_dir or something - my $rundir= "$::glob_mysql_test_dir/var/run"; + my $rundir= "$::opt_vardir/run"; if ( -d $rundir ) { diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl index fd665b154b8..cb41549422f 100644 --- a/mysql-test/lib/mtr_report.pl +++ b/mysql-test/lib/mtr_report.pl @@ -89,9 +89,10 @@ sub mtr_report_test_passed ($) { my $tinfo= shift; my $timer= ""; - if ( $::opt_timer and -f "$::glob_mysql_test_dir/var/log/timer" ) + if ( $::opt_timer and -f "$::opt_vardir/log/timer" ) { - $timer= mtr_fromfile("$::glob_mysql_test_dir/var/log/timer"); + $timer= mtr_fromfile("$::opt_vardir/log/timer"); + $::glob_tot_real_time += $timer; $timer= sprintf "%12s", $timer; } $tinfo->{'result'}= 'MTR_RES_PASSED'; @@ -177,8 +178,8 @@ sub mtr_report_stats ($) { # Report if there was any fatal warnings/errors in the log files # - unlink("$::glob_mysql_test_dir/var/log/warnings"); - unlink("$::glob_mysql_test_dir/var/log/warnings.tmp"); + unlink("$::opt_vardir/log/warnings"); + unlink("$::opt_vardir/log/warnings.tmp"); # Remove some non fatal warnings from the log files # FIXME what is going on ????? ;-) @@ -196,11 +197,11 @@ sub mtr_report_stats ($) { # found_error=1 # } # done -# unlink("$::glob_mysql_test_dir/var/log/warnings.tmp"); +# unlink("$::opt_vardir/log/warnings.tmp"); # if ( $found_error= "1" ) # { # print "WARNING: Got errors/warnings while running tests. Please examine\n" -# print "$::glob_mysql_test_dir/var/log/warnings for details.\n" +# print "$::opt_vardir/log/warnings for details.\n" # } # } } diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 5a188dc6927..9d809593ea7 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -84,7 +84,7 @@ use Sys::Hostname; #use Carp; use IO::Socket; use IO::Socket::INET; -#use Data::Dumper; +use Data::Dumper; use strict; #use diagnostics; @@ -177,6 +177,7 @@ our $path_timefile; our $path_manager_log; # Used by mysqldadmin our $path_slave_load_tmpdir; # What is this?! our $path_my_basedir; +our $opt_vardir; # A path but set directly on cmd line our $opt_tmpdir; # A path but set directly on cmd line our $opt_usage; @@ -447,8 +448,6 @@ sub initial_setup () { $glob_basedir= dirname($glob_mysql_test_dir); $glob_mysql_bench_dir= "$glob_basedir/mysql-bench"; # FIXME make configurable - $path_timefile= "$glob_mysql_test_dir/var/log/mysqltest-time"; - # needs to be same length to test logging (FIXME what???) $path_slave_load_tmpdir= "../../var/tmp"; @@ -469,11 +468,6 @@ sub command_line_setup () { # These are defaults for things that are set on the command line $opt_suite= "main"; # Special default suite - $opt_tmpdir= "$glob_mysql_test_dir/var/tmp"; - # FIXME maybe unneded? - $path_manager_log= "$glob_mysql_test_dir/var/log/manager.log"; - $opt_current_test= "$glob_mysql_test_dir/var/log/current_test"; - my $opt_master_myport= 9306; my $opt_slave_myport= 9308; $opt_ndbcluster_port= 9350; @@ -549,6 +543,7 @@ sub command_line_setup () { 'unified-diff|udiff' => \$opt_udiff, 'user-test=s' => \$opt_user_test, 'user=s' => \$opt_user, + 'vardir=s' => \$opt_vardir, 'verbose' => \$opt_verbose, 'wait-timeout=i' => \$opt_wait_timeout, 'warnings|log-warnings' => \$opt_warnings, @@ -564,51 +559,35 @@ sub command_line_setup () { @opt_cases= @ARGV; - # Put this into a hash, will be a C struct + # -------------------------------------------------------------------------- + # Set the "var/" directory, as it is the base for everything else + # -------------------------------------------------------------------------- - $master->[0]->{'path_myddir'}= "$glob_mysql_test_dir/var/master-data"; - $master->[0]->{'path_myerr'}= "$glob_mysql_test_dir/var/log/master.err"; - $master->[0]->{'path_mylog'}= "$glob_mysql_test_dir/var/log/master.log"; - $master->[0]->{'path_mypid'}= "$glob_mysql_test_dir/var/run/master.pid"; - $master->[0]->{'path_mysock'}= "$opt_tmpdir/master.sock"; - $master->[0]->{'path_myport'}= $opt_master_myport; - $master->[0]->{'start_timeout'}= 400; # enough time create innodb tables + if ( ! $opt_vardir ) + { + $opt_vardir= "$glob_mysql_test_dir/var"; + } - $master->[0]->{'ndbcluster'}= 1; # ndbcluster not started + if ( $opt_vardir !~ m,^/, ) + { + # Make absolute path, relative test dir + $opt_vardir= "$glob_mysql_test_dir/$opt_vardir"; + } - $master->[1]->{'path_myddir'}= "$glob_mysql_test_dir/var/master1-data"; - $master->[1]->{'path_myerr'}= "$glob_mysql_test_dir/var/log/master1.err"; - $master->[1]->{'path_mylog'}= "$glob_mysql_test_dir/var/log/master1.log"; - $master->[1]->{'path_mypid'}= "$glob_mysql_test_dir/var/run/master1.pid"; - $master->[1]->{'path_mysock'}= "$opt_tmpdir/master1.sock"; - $master->[1]->{'path_myport'}= $opt_master_myport + 1; - $master->[1]->{'start_timeout'}= 400; # enough time create innodb tables + # -------------------------------------------------------------------------- + # If not set, set these to defaults + # -------------------------------------------------------------------------- - $slave->[0]->{'path_myddir'}= "$glob_mysql_test_dir/var/slave-data"; - $slave->[0]->{'path_myerr'}= "$glob_mysql_test_dir/var/log/slave.err"; - $slave->[0]->{'path_mylog'}= "$glob_mysql_test_dir/var/log/slave.log"; - $slave->[0]->{'path_mypid'}= "$glob_mysql_test_dir/var/run/slave.pid"; - $slave->[0]->{'path_mysock'}= "$opt_tmpdir/slave.sock"; - $slave->[0]->{'path_myport'}= $opt_slave_myport; - $slave->[0]->{'start_timeout'}= 400; - - $slave->[1]->{'path_myddir'}= "$glob_mysql_test_dir/var/slave1-data"; - $slave->[1]->{'path_myerr'}= "$glob_mysql_test_dir/var/log/slave1.err"; - $slave->[1]->{'path_mylog'}= "$glob_mysql_test_dir/var/log/slave1.log"; - $slave->[1]->{'path_mypid'}= "$glob_mysql_test_dir/var/run/slave1.pid"; - $slave->[1]->{'path_mysock'}= "$opt_tmpdir/slave1.sock"; - $slave->[1]->{'path_myport'}= $opt_slave_myport + 1; - $slave->[1]->{'start_timeout'}= 300; - - $slave->[2]->{'path_myddir'}= "$glob_mysql_test_dir/var/slave2-data"; - $slave->[2]->{'path_myerr'}= "$glob_mysql_test_dir/var/log/slave2.err"; - $slave->[2]->{'path_mylog'}= "$glob_mysql_test_dir/var/log/slave2.log"; - $slave->[2]->{'path_mypid'}= "$glob_mysql_test_dir/var/run/slave2.pid"; - $slave->[2]->{'path_mysock'}= "$opt_tmpdir/slave2.sock"; - $slave->[2]->{'path_myport'}= $opt_slave_myport + 2; - $slave->[2]->{'start_timeout'}= 300; + $opt_tmpdir= "$opt_vardir/tmp" unless $opt_tmpdir; + # FIXME maybe not needed? + $path_manager_log= "$opt_vardir/log/manager.log" + unless $path_manager_log; + $opt_current_test= "$opt_vardir/log/current_test" + unless $opt_current_test; + # -------------------------------------------------------------------------- # Do sanity checks of command line arguments + # -------------------------------------------------------------------------- if ( $opt_extern and $opt_local ) { @@ -621,13 +600,6 @@ sub command_line_setup () { $opt_socket= "/tmp/mysql.sock"; # FIXME } - if ( $opt_extern ) - { - $glob_use_running_server= 1; - $opt_skip_rpl= 1; # We don't run rpl test cases - $master->[0]->{'path_mysock'}= $opt_socket; - } - # -------------------------------------------------------------------------- # Look at the command line options and set script flags # -------------------------------------------------------------------------- @@ -746,6 +718,58 @@ sub command_line_setup () { } } + # Put this into a hash, will be a C struct + + $master->[0]->{'path_myddir'}= "$opt_vardir/master-data"; + $master->[0]->{'path_myerr'}= "$opt_vardir/log/master.err"; + $master->[0]->{'path_mylog'}= "$opt_vardir/log/master.log"; + $master->[0]->{'path_mypid'}= "$opt_vardir/run/master.pid"; + $master->[0]->{'path_mysock'}= "$opt_tmpdir/master.sock"; + $master->[0]->{'path_myport'}= $opt_master_myport; + $master->[0]->{'start_timeout'}= 400; # enough time create innodb tables + + $master->[0]->{'ndbcluster'}= 1; # ndbcluster not started + + $master->[1]->{'path_myddir'}= "$opt_vardir/master1-data"; + $master->[1]->{'path_myerr'}= "$opt_vardir/log/master1.err"; + $master->[1]->{'path_mylog'}= "$opt_vardir/log/master1.log"; + $master->[1]->{'path_mypid'}= "$opt_vardir/run/master1.pid"; + $master->[1]->{'path_mysock'}= "$opt_tmpdir/master1.sock"; + $master->[1]->{'path_myport'}= $opt_master_myport + 1; + $master->[1]->{'start_timeout'}= 400; # enough time create innodb tables + + $slave->[0]->{'path_myddir'}= "$opt_vardir/slave-data"; + $slave->[0]->{'path_myerr'}= "$opt_vardir/log/slave.err"; + $slave->[0]->{'path_mylog'}= "$opt_vardir/log/slave.log"; + $slave->[0]->{'path_mypid'}= "$opt_vardir/run/slave.pid"; + $slave->[0]->{'path_mysock'}= "$opt_tmpdir/slave.sock"; + $slave->[0]->{'path_myport'}= $opt_slave_myport; + $slave->[0]->{'start_timeout'}= 400; + + $slave->[1]->{'path_myddir'}= "$opt_vardir/slave1-data"; + $slave->[1]->{'path_myerr'}= "$opt_vardir/log/slave1.err"; + $slave->[1]->{'path_mylog'}= "$opt_vardir/log/slave1.log"; + $slave->[1]->{'path_mypid'}= "$opt_vardir/run/slave1.pid"; + $slave->[1]->{'path_mysock'}= "$opt_tmpdir/slave1.sock"; + $slave->[1]->{'path_myport'}= $opt_slave_myport + 1; + $slave->[1]->{'start_timeout'}= 300; + + $slave->[2]->{'path_myddir'}= "$opt_vardir/slave2-data"; + $slave->[2]->{'path_myerr'}= "$opt_vardir/log/slave2.err"; + $slave->[2]->{'path_mylog'}= "$opt_vardir/log/slave2.log"; + $slave->[2]->{'path_mypid'}= "$opt_vardir/run/slave2.pid"; + $slave->[2]->{'path_mysock'}= "$opt_tmpdir/slave2.sock"; + $slave->[2]->{'path_myport'}= $opt_slave_myport + 2; + $slave->[2]->{'start_timeout'}= 300; + + if ( $opt_extern ) + { + $glob_use_running_server= 1; + $opt_skip_rpl= 1; # We don't run rpl test cases + $master->[0]->{'path_mysock'}= $opt_socket; + } + + $path_timefile= "$opt_vardir/log/mysqltest-time"; } @@ -892,8 +916,8 @@ sub executable_setup () { } $path_ndb_backup_dir= - "$glob_mysql_test_dir/var/ndbcluster-$opt_ndbcluster_port"; - $file_ndb_testrun_log= "$glob_mysql_test_dir/var/log/ndb_testrun.log"; + "$opt_vardir/ndbcluster-$opt_ndbcluster_port"; + $file_ndb_testrun_log= "$opt_vardir/log/ndb_testrun.log"; } @@ -981,7 +1005,7 @@ sub kill_running_server () { # leftovers from previous runs. mtr_report("Killing Possible Leftover Processes"); - mkpath("$glob_mysql_test_dir/var/log"); # Needed for mysqladmin log + mkpath("$opt_vardir/log"); # Needed for mysqladmin log mtr_kill_leftovers(); ndbcluster_stop(); @@ -995,15 +1019,20 @@ sub kill_and_cleanup () { mtr_report("Removing Stale Files"); - rmtree("$glob_mysql_test_dir/var/log"); - rmtree("$glob_mysql_test_dir/var/ndbcluster-$opt_ndbcluster_port"); - rmtree("$glob_mysql_test_dir/var/run"); - rmtree("$glob_mysql_test_dir/var/tmp"); + if ( -l $opt_vardir and ! unlink($opt_vardir) ) + { + mtr_error("Can't remove soft link \"$opt_vardir\""); + } - mkpath("$glob_mysql_test_dir/var/log"); - mkpath("$glob_mysql_test_dir/var/run"); - mkpath("$glob_mysql_test_dir/var/tmp"); - mkpath($opt_tmpdir); + rmtree("$opt_vardir/log"); + rmtree("$opt_vardir/ndbcluster-$opt_ndbcluster_port"); + rmtree("$opt_vardir/run"); + rmtree("$opt_vardir/tmp"); + + mkpath("$opt_vardir/log"); + mkpath("$opt_vardir/run"); + mkpath("$opt_vardir/tmp"); + mkpath($opt_tmpdir) if $opt_tmpdir ne "$opt_vardir/tmp"; # FIXME do we really need to create these all, or are they # created for us when tables are created? @@ -1027,6 +1056,16 @@ sub kill_and_cleanup () { rmtree("$slave->[2]->{'path_myddir'}"); mkpath("$slave->[2]->{'path_myddir'}/mysql"); mkpath("$slave->[2]->{'path_myddir'}/test"); + + # To make some old test cases work, we create a soft + # link from the old "var" location to the new one + + if ( ! $glob_win32 and $opt_vardir ne "$glob_mysql_test_dir/var" ) + { + # FIXME why bother with the above, why not always remove all of var?! + rmtree("$glob_mysql_test_dir/var"); # Clean old var, FIXME or rename it?! + symlink($opt_vardir, "$glob_mysql_test_dir/var"); + } } @@ -1050,7 +1089,7 @@ sub ndbcluster_install () { if ( mtr_run("$glob_mysql_test_dir/ndb/ndbcluster", ["--port=$opt_ndbcluster_port", "--port-base=$ndbcluster_port_base", - "--data-dir=$glob_mysql_test_dir/var", + "--data-dir=$opt_vardir", $ndbcluster_opts, "--initial"], "", "", "", "") ) @@ -1074,7 +1113,7 @@ sub ndbcluster_start () { # FIXME, we want to _append_ output to file $file_ndb_testrun_log instead of /dev/null if ( mtr_run("$glob_mysql_test_dir/ndb/ndbcluster", ["--port=$opt_ndbcluster_port", - "--data-dir=$glob_mysql_test_dir/var"], + "--data-dir=$opt_vardir"], "", "/dev/null", "", "") ) { mtr_error("Error ndbcluster_start"); @@ -1094,7 +1133,7 @@ sub ndbcluster_stop () { # FIXME, we want to _append_ output to file $file_ndb_testrun_log instead of /dev/null mtr_run("$glob_mysql_test_dir/ndb/ndbcluster", ["--port=$opt_ndbcluster_port", - "--data-dir=$glob_mysql_test_dir/var", + "--data-dir=$opt_vardir", "--stop"], "", "/dev/null", "", ""); @@ -1497,15 +1536,15 @@ sub run_testcase ($) { { mtr_report_test_passed($tinfo); } - elsif ( $res == 2 ) + elsif ( $res == 62 ) { # Testcase itself tell us to skip this one mtr_report_test_skipped($tinfo); } else { - # Test case failed - if ( $res > 2 ) + # Test case failed, if in control mysqltest returns 1 + if ( $res != 1 ) { mtr_tofile($path_timefile, "mysqltest returned unexpected code $res, " . @@ -1566,17 +1605,17 @@ sub do_before_start_master ($$) { $tname ne "rpl_crash_binlog_ib_3b") { # FIXME we really want separate dir for binlogs - foreach my $bin ( glob("$glob_mysql_test_dir/var/log/master*-bin.*") ) + foreach my $bin ( glob("$opt_vardir/log/master*-bin.*") ) { unlink($bin); } } # Remove old master.info and relay-log.info files - unlink("$glob_mysql_test_dir/var/master-data/master.info"); - unlink("$glob_mysql_test_dir/var/master-data/relay-log.info"); - unlink("$glob_mysql_test_dir/var/master1-data/master.info"); - unlink("$glob_mysql_test_dir/var/master1-data/relay-log.info"); + unlink("$opt_vardir/master-data/master.info"); + unlink("$opt_vardir/master-data/relay-log.info"); + unlink("$opt_vardir/master1-data/master.info"); + unlink("$opt_vardir/master1-data/relay-log.info"); # Run master initialization shell script if one exists if ( $init_script ) @@ -1603,13 +1642,13 @@ sub do_before_start_slave ($$) { $tname ne "rpl_crash_binlog_ib_3b" ) { # FIXME we really want separate dir for binlogs - foreach my $bin ( glob("$glob_mysql_test_dir/var/log/slave*-bin.*") ) + foreach my $bin ( glob("$opt_vardir/log/slave*-bin.*") ) { unlink($bin); } # FIXME really master?! - unlink("$glob_mysql_test_dir/var/slave-data/master.info"); - unlink("$glob_mysql_test_dir/var/slave-data/relay-log.info"); + unlink("$opt_vardir/slave-data/master.info"); + unlink("$opt_vardir/slave-data/relay-log.info"); } # Run slave initialization shell script if one exists @@ -1623,8 +1662,8 @@ sub do_before_start_slave ($$) { } } - `rm -f $glob_mysql_test_dir/var/slave-data/log.*`; -# unlink("$glob_mysql_test_dir/var/slave-data/log.*"); + `rm -f $opt_vardir/slave-data/log.*`; +# unlink("$opt_vardir/slave-data/log.*"); } sub mysqld_arguments ($$$$$) { @@ -1670,8 +1709,7 @@ sub mysqld_arguments ($$$$$) { if ( $type eq 'master' ) { - mtr_add_arg($args, "%s--log-bin=%s/var/log/master-bin", $prefix, - $glob_mysql_test_dir); + mtr_add_arg($args, "%s--log-bin=%s/log/master-bin", $prefix, $opt_vardir); mtr_add_arg($args, "%s--pid-file=%s", $prefix, $master->[$idx]->{'path_mypid'}); mtr_add_arg($args, "%s--port=%d", $prefix, @@ -1695,8 +1733,8 @@ sub mysqld_arguments ($$$$$) { # FIXME slave get this option twice?! mtr_add_arg($args, "%s--exit-info=256", $prefix); mtr_add_arg($args, "%s--init-rpl-role=slave", $prefix); - mtr_add_arg($args, "%s--log-bin=%s/var/log/slave%s-bin", $prefix, - $glob_mysql_test_dir, $sidx); # FIXME use own dir for binlogs + mtr_add_arg($args, "%s--log-bin=%s/log/slave%s-bin", $prefix, + $opt_vardir, $sidx); # FIXME use own dir for binlogs mtr_add_arg($args, "%s--log-slave-updates", $prefix); # FIXME option duplicated for slave mtr_add_arg($args, "%s--log=%s", $prefix, @@ -1706,8 +1744,8 @@ sub mysqld_arguments ($$$$$) { $slave->[$idx]->{'path_mypid'}); mtr_add_arg($args, "%s--port=%d", $prefix, $slave->[$idx]->{'path_myport'}); - mtr_add_arg($args, "%s--relay-log=%s/var/log/slave%s-relay-bin", $prefix, - $glob_mysql_test_dir, $sidx); + mtr_add_arg($args, "%s--relay-log=%s/log/slave%s-relay-bin", $prefix, + $opt_vardir, $sidx); mtr_add_arg($args, "%s--report-host=127.0.0.1", $prefix); mtr_add_arg($args, "%s--report-port=%d", $prefix, $slave->[$idx]->{'path_myport'}); @@ -1745,13 +1783,13 @@ sub mysqld_arguments ($$$$$) { { if ( $type eq 'master' ) { - mtr_add_arg($args, "%s--debug=d:t:i:A,%s/var/log/master%s.trace", - $prefix, $glob_mysql_test_dir, $sidx); + mtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/master%s.trace", + $prefix, $opt_vardir, $sidx); } if ( $type eq 'slave' ) { - mtr_add_arg($args, "%s--debug=d:t:i:A,%s/var/log/slave%s.trace", - $prefix, $glob_mysql_test_dir, $sidx); + mtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/slave%s.trace", + $prefix, $opt_vardir, $sidx); } } @@ -2003,7 +2041,7 @@ sub run_mysqltest ($$) { if ( $opt_debug ) { $cmdline_mysqldump .= - " --debug=d:t:A,$glob_mysql_test_dir/var/log/mysqldump.trace"; + " --debug=d:t:A,$opt_vardir/log/mysqldump.trace"; } my $cmdline_mysqlbinlog= @@ -2012,7 +2050,7 @@ sub run_mysqltest ($$) { if ( $opt_debug ) { $cmdline_mysqlbinlog .= - " --debug=d:t:A,$glob_mysql_test_dir/var/log/mysqlbinlog.trace"; + " --debug=d:t:A,$opt_vardir/log/mysqlbinlog.trace"; } my $cmdline_mysql= @@ -2075,13 +2113,13 @@ sub run_mysqltest ($$) { { $exe= "strace"; # FIXME there are ktrace, .... mtr_add_arg($args, "-o"); - mtr_add_arg($args, "%s/var/log/mysqltest.strace", $glob_mysql_test_dir); + mtr_add_arg($args, "%s/log/mysqltest.strace", $opt_vardir); mtr_add_arg($args, "$exe_mysqltest"); } if ( $opt_timer ) { - mtr_add_arg($args, "--timer-file=%s/var/log/timer", $glob_mysql_test_dir); + mtr_add_arg($args, "--timer-file=%s/log/timer", $opt_vardir); } if ( $opt_big_test ) @@ -2106,8 +2144,7 @@ sub run_mysqltest ($$) { if ( $opt_debug ) { - mtr_add_arg($args, "--debug=d:t:A,%s/var/log/mysqltest.trace", - $glob_mysql_test_dir); + mtr_add_arg($args, "--debug=d:t:A,%s/log/mysqltest.trace", $opt_vardir); } if ( $opt_with_openssl ) @@ -2129,7 +2166,7 @@ sub run_mysqltest ($$) { mysqld_arguments($args,'master',0,$tinfo->{'master_opt'},[]); } - return mtr_run_test($exe_mysqltest,$args,$tinfo->{'path'},"",$path_timefile,""); + return mtr_run_test($exe,$args,$tinfo->{'path'},"",$path_timefile,""); } ############################################################################## diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index bdbd46ae8dd..4fee560ee44 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -569,10 +569,7 @@ if [ x$SOURCE_DIST = x1 ] ; then NDB_MGM="$BASEDIR/ndb/src/mgmclient/ndb_mgm" if [ -n "$USE_PURIFY" ] ; then - PSUP="$MYSQL_TEST_DIR/purify.suppress" - echo "suppress UMR rw_read_held; mi_open; ha_myisam::open64; handler::ha_open; openfrm" > $PSUP - echo "suppress UMR my_end; main" >> $PSUP - echo "suppress UMR _doprnt; fprintf; my_end; main" >> $PSUP + PSUP="$MYSQL_TEST_DIR/suppress.purify" PURIFYOPTIONS="-windows=no -log-file=%v.purifylog -append-logfile -add-suppression-files=$PSUP" if [ -f "${MYSQL_TEST}-purify" ] ; then MYSQL_TEST="${MYSQL_TEST}-purify" @@ -694,7 +691,7 @@ fi MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT" MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR $EXTRA_MYSQLBINLOG_OPT" MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose" -MYSQL="$MYSQL --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD" +MYSQL="$MYSQL --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD" export MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES export CLIENT_BINDIR MYSQL_CLIENT_TEST CHARSETSDIR export NDB_TOOLS_DIR @@ -1660,11 +1657,11 @@ run_testcase () $ECHO "$RES$RES_SPACE [ pass ] $TIMER" else # why the following ``if'' ? That is why res==1 is special ? - if [ $res = 2 ]; then + if [ $res = 62 ]; then skip_inc $ECHO "$RES$RES_SPACE [ skipped ]" else - if [ $res -gt 2 ]; then + if [ $res -ne 1 ]; then $ECHO "mysqltest returned unexpected code $res, it has probably crashed" >> $TIMEFILE fi total_inc diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result index 222477cece9..b7d47a09bee 100644 --- a/mysql-test/r/alter_table.result +++ b/mysql-test/r/alter_table.result @@ -303,6 +303,120 @@ ALTER TABLE t1 DISABLE KEYS; INSERT DELAYED INTO t1 VALUES(1),(2),(3); ALTER TABLE t1 ENABLE KEYS; drop table t1; +CREATE TABLE t1 ( +Host varchar(16) binary NOT NULL default '', +User varchar(16) binary NOT NULL default '', +PRIMARY KEY (Host,User) +) ENGINE=MyISAM; +ALTER TABLE t1 DISABLE KEYS; +LOCK TABLES t1 WRITE; +INSERT INTO t1 VALUES ('localhost','root'),('localhost',''),('games','monty'); +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE +t1 0 PRIMARY 2 User A 3 NULL NULL BTREE +ALTER TABLE t1 ENABLE KEYS; +UNLOCK TABLES; +CHECK TABLES t1; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +CREATE TABLE t1 ( +Host varchar(16) binary NOT NULL default '', +User varchar(16) binary NOT NULL default '', +PRIMARY KEY (Host,User), +KEY (Host) +) ENGINE=MyISAM; +ALTER TABLE t1 DISABLE KEYS; +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE +t1 0 PRIMARY 2 User A 0 NULL NULL BTREE +t1 1 Host 1 Host A NULL NULL NULL BTREE disabled +LOCK TABLES t1 WRITE; +INSERT INTO t1 VALUES ('localhost','root'),('localhost',''); +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE +t1 0 PRIMARY 2 User A 2 NULL NULL BTREE +t1 1 Host 1 Host A NULL NULL NULL BTREE disabled +ALTER TABLE t1 ENABLE KEYS; +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE +t1 0 PRIMARY 2 User A 2 NULL NULL BTREE +t1 1 Host 1 Host A 1 NULL NULL BTREE +UNLOCK TABLES; +CHECK TABLES t1; +Table Op Msg_type Msg_text +test.t1 check status OK +LOCK TABLES t1 WRITE; +ALTER TABLE t1 RENAME t2; +UNLOCK TABLES; +select * from t2; +Host User +localhost +localhost root +DROP TABLE t2; +CREATE TABLE t1 ( +Host varchar(16) binary NOT NULL default '', +User varchar(16) binary NOT NULL default '', +PRIMARY KEY (Host,User), +KEY (Host) +) ENGINE=MyISAM; +LOCK TABLES t1 WRITE; +ALTER TABLE t1 DISABLE KEYS; +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE +t1 0 PRIMARY 2 User A 0 NULL NULL BTREE +t1 1 Host 1 Host A NULL NULL NULL BTREE disabled +DROP TABLE t1; +create table t1 (a int); +alter table t1 rename to `t1\\`; +ERROR 42000: Incorrect table name 't1\\' +rename table t1 to `t1\\`; +ERROR 42000: Incorrect table name 't1\\' +drop table t1; +drop table if exists t1, t2; +Warnings: +Note 1051 Unknown table 't1' +Note 1051 Unknown table 't2' +create table t1 ( a varchar(10) not null primary key ) engine=myisam; +create table t2 ( a varchar(10) not null primary key ) engine=merge union=(t1); +flush tables; +alter table t1 modify a varchar(10); +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` varchar(10) NOT NULL default '', + PRIMARY KEY (`a`) +) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 UNION=(`t1`) +flush tables; +alter table t1 modify a varchar(10) not null; +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` varchar(10) NOT NULL default '', + PRIMARY KEY (`a`) +) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 UNION=(`t1`) +drop table if exists t1, t2; +create table t1 (a int, b int, c int, d int, e int, f int, g int, h int,i int, primary key (a,b,c,d,e,f,g,i,h)) engine=MyISAM; +insert into t1 (a) values(1); +show table status like 't1'; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +t1 MyISAM 9 Fixed 1 37 X X X X X X X X latin1_swedish_ci NULL +alter table t1 modify a int; +show table status like 't1'; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +t1 MyISAM 9 Fixed 1 37 X X X X X X X X latin1_swedish_ci NULL +drop table t1; +create table t1 (a int not null, b int not null, c int not null, d int not null, e int not null, f int not null, g int not null, h int not null,i int not null, primary key (a,b,c,d,e,f,g,i,h)) engine=MyISAM; +insert into t1 (a) values(1); +show table status like 't1'; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +t1 MyISAM 9 Fixed 1 37 X X X X X X X X latin1_swedish_ci NULL +drop table t1; set names koi8r; create table t1 (a char(10) character set koi8r); insert into t1 values ('ΤΕΣΤ'); @@ -382,75 +496,6 @@ t1 CREATE TABLE `t1` ( `mytext` longtext character set latin1 collate latin1_general_cs ) ENGINE=MyISAM DEFAULT CHARSET=latin2 drop table t1; -CREATE TABLE t1 ( -Host varchar(16) binary NOT NULL default '', -User varchar(16) binary NOT NULL default '', -PRIMARY KEY (Host,User) -) ENGINE=MyISAM; -ALTER TABLE t1 DISABLE KEYS; -LOCK TABLES t1 WRITE; -INSERT INTO t1 VALUES ('localhost','root'),('localhost',''),('games','monty'); -SHOW INDEX FROM t1; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment -t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE -t1 0 PRIMARY 2 User A 3 NULL NULL BTREE -ALTER TABLE t1 ENABLE KEYS; -UNLOCK TABLES; -CHECK TABLES t1; -Table Op Msg_type Msg_text -test.t1 check status OK -DROP TABLE t1; -CREATE TABLE t1 ( -Host varchar(16) binary NOT NULL default '', -User varchar(16) binary NOT NULL default '', -PRIMARY KEY (Host,User), -KEY (Host) -) ENGINE=MyISAM; -ALTER TABLE t1 DISABLE KEYS; -SHOW INDEX FROM t1; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment -t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE -t1 0 PRIMARY 2 User A 0 NULL NULL BTREE -t1 1 Host 1 Host A NULL NULL NULL BTREE disabled -LOCK TABLES t1 WRITE; -INSERT INTO t1 VALUES ('localhost','root'),('localhost',''); -SHOW INDEX FROM t1; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment -t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE -t1 0 PRIMARY 2 User A 2 NULL NULL BTREE -t1 1 Host 1 Host A NULL NULL NULL BTREE disabled -ALTER TABLE t1 ENABLE KEYS; -SHOW INDEX FROM t1; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment -t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE -t1 0 PRIMARY 2 User A 2 NULL NULL BTREE -t1 1 Host 1 Host A 1 NULL NULL BTREE -UNLOCK TABLES; -CHECK TABLES t1; -Table Op Msg_type Msg_text -test.t1 check status OK -LOCK TABLES t1 WRITE; -ALTER TABLE t1 RENAME t2; -UNLOCK TABLES; -select * from t2; -Host User -localhost -localhost root -DROP TABLE t2; -CREATE TABLE t1 ( -Host varchar(16) binary NOT NULL default '', -User varchar(16) binary NOT NULL default '', -PRIMARY KEY (Host,User), -KEY (Host) -) ENGINE=MyISAM; -LOCK TABLES t1 WRITE; -ALTER TABLE t1 DISABLE KEYS; -SHOW INDEX FROM t1; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment -t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE -t1 0 PRIMARY 2 User A 0 NULL NULL BTREE -t1 1 Host 1 Host A NULL NULL NULL BTREE disabled -DROP TABLE t1; CREATE TABLE t1 (a int PRIMARY KEY, b INT UNIQUE); ALTER TABLE t1 DROP PRIMARY KEY; SHOW CREATE TABLE t1; @@ -469,12 +514,6 @@ alter table t1 drop key no_such_key; ERROR 42000: Can't DROP 'no_such_key'; check that column/key exists alter table t1 drop key a; drop table t1; -create table t1 (a int); -alter table t1 rename to `t1\\`; -ERROR 42000: Incorrect table name 't1\\' -rename table t1 to `t1\\`; -ERROR 42000: Incorrect table name 't1\\' -drop table t1; create table t1 (a text) character set koi8r; insert into t1 values (_koi8r'ΤΕΣΤ'); select hex(a) from t1; diff --git a/mysql-test/r/auto_increment.result b/mysql-test/r/auto_increment.result index 428b2769fdb..9f3695cb1b1 100644 --- a/mysql-test/r/auto_increment.result +++ b/mysql-test/r/auto_increment.result @@ -341,3 +341,17 @@ a b 2 3 3 4 drop table t1; +CREATE TABLE t1 ( a INT AUTO_INCREMENT, b BLOB, PRIMARY KEY (a,b(10))); +INSERT INTO t1 (b) VALUES ('aaaa'); +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1 (b) VALUES (''); +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1 (b) VALUES ('bbbb'); +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE IF EXISTS t1; diff --git a/mysql-test/r/grant_cache.result b/mysql-test/r/grant_cache.result index d905e9319fd..2c6840d77d0 100644 --- a/mysql-test/r/grant_cache.result +++ b/mysql-test/r/grant_cache.result @@ -1,5 +1,6 @@ drop table if exists test.t1,mysqltest.t1,mysqltest.t2; drop database if exists mysqltest; +set GLOBAL query_cache_size=1355776; reset query cache; flush status; show grants for current_user; @@ -206,3 +207,4 @@ delete from mysql.columns_priv where user in ("mysqltest_1","mysqltest_2","mysql flush privileges; drop table test.t1,mysqltest.t1,mysqltest.t2; drop database mysqltest; +set GLOBAL query_cache_size=default; diff --git a/mysql-test/r/have_outfile.require b/mysql-test/r/have_outfile.require new file mode 100644 index 00000000000..9fc2f8fdb5a --- /dev/null +++ b/mysql-test/r/have_outfile.require @@ -0,0 +1,3 @@ +load_file(concat(@tmpdir,"/outfile.test")) +Outfile OK + diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result index a8af3f5f658..4c983014d4b 100644 --- a/mysql-test/r/innodb.result +++ b/mysql-test/r/innodb.result @@ -1643,3 +1643,7 @@ select distinct concat(a, b) from t1; concat(a, b) 11113333 drop table t1; +CREATE TABLE t1 ( a char(10) ) ENGINE=InnoDB; +SELECT a FROM t1 WHERE MATCH (a) AGAINST ('test' IN BOOLEAN MODE); +ERROR HY000: The used table type doesn't support FULLTEXT indexes +DROP TABLE t1; diff --git a/mysql-test/r/insert_update.result b/mysql-test/r/insert_update.result index f78372541f2..2143538469b 100644 --- a/mysql-test/r/insert_update.result +++ b/mysql-test/r/insert_update.result @@ -167,7 +167,7 @@ a b c VALUES(a) 2 1 11 NULL DROP TABLE t1; DROP TABLE t2; -create table t1 (a int not null unique); +create table t1 (a int not null unique) engine=myisam; insert into t1 values (1),(2); insert ignore into t1 select 1 on duplicate key update a=2; select * from t1; @@ -179,4 +179,11 @@ select * from t1; a 1 3 +insert into t1 select 1 on duplicate key update a=2; +select * from t1; +a +2 +3 +insert into t1 select a from t1 on duplicate key update a=a+1 ; +ERROR 23000: Duplicate entry '3' for key 1 drop table t1; diff --git a/mysql-test/r/lock.result b/mysql-test/r/lock.result index 429bc5ed352..54162a36d83 100644 --- a/mysql-test/r/lock.result +++ b/mysql-test/r/lock.result @@ -47,3 +47,13 @@ unlock tables; lock tables t1 write, t1 as t1_alias read; insert into t1 select index1,nr from t1 as t1_alias; drop table t1,t2; +create table t1 ( a int(11) not null auto_increment, primary key(a)); +create table t2 ( a int(11) not null auto_increment, primary key(a)); +lock tables t1 write, t2 read; +delete from t1 using t1,t2 where t1.a=t2.a; +delete t1 from t1,t2 where t1.a=t2.a; +delete from t2 using t1,t2 where t1.a=t2.a; +ERROR HY000: Table 't2' was locked with a READ lock and can't be updated +delete t2 from t1,t2 where t1.a=t2.a; +ERROR HY000: Table 't2' was locked with a READ lock and can't be updated +drop table t1,t2; diff --git a/mysql-test/r/lowercase_table.result b/mysql-test/r/lowercase_table.result index ef379cebaa9..499f46a237e 100644 --- a/mysql-test/r/lowercase_table.result +++ b/mysql-test/r/lowercase_table.result @@ -83,3 +83,9 @@ create table t2 like T1; drop table t1, t2; show tables; Tables_in_test +use lpt1; +ERROR 42000: Unknown database 'lpt1' +use com1; +ERROR 42000: Unknown database 'com1' +use prn; +ERROR 42000: Unknown database 'prn' diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index 79d8f019ce3..6e14e9a56a8 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -681,3 +681,13 @@ t3 1 a 1 a A NULL NULL NULL YES BTREE t3 1 a 2 b A NULL NULL NULL YES BTREE t3 1 a 3 c A NULL NULL NULL YES BTREE drop table t1, t2, t3; +CREATE TABLE t1 ( a INT AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), UNIQUE (b) ) +ENGINE=MyISAM; +CREATE TABLE t2 ( a INT AUTO_INCREMENT, b VARCHAR(10), INDEX (a), INDEX (b) ) +ENGINE=MERGE UNION (t1) INSERT_METHOD=FIRST; +INSERT INTO t2 (b) VALUES (1) ON DUPLICATE KEY UPDATE b=2; +INSERT INTO t2 (b) VALUES (1) ON DUPLICATE KEY UPDATE b=3; +SELECT b FROM t2; +b +3 +DROP TABLE t1, t2; diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result index 5b69ce68a79..4def82e5752 100644 --- a/mysql-test/r/myisam.result +++ b/mysql-test/r/myisam.result @@ -581,3 +581,17 @@ check table t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; +create table t1 (a int, key(a)); +insert into t1 values (1),(2),(3),(4),(NULL),(NULL),(NULL),(NULL); +analyze table t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +show keys from t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 1 a 1 a A 8 NULL NULL YES BTREE +alter table t1 disable keys; +alter table t1 enable keys; +show keys from t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 1 a 1 a A 8 NULL NULL YES BTREE +drop table t1; diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 80c6cad5bbf..493c6d6404a 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -620,3 +620,694 @@ INSERT DELAYED IGNORE INTO `t1` VALUES ('12345678901234567890123456789012345678 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; DROP TABLE t1; +create table t1 ( +F_c4ca4238a0b923820dcc509a6f75849b int, +F_c81e728d9d4c2f636f067f89cc14862c int, +F_eccbc87e4b5ce2fe28308fd9f2a7baf3 int, +F_a87ff679a2f3e71d9181a67b7542122c int, +F_e4da3b7fbbce2345d7772b0674a318d5 int, +F_1679091c5a880faf6fb5e6087eb1b2dc int, +F_8f14e45fceea167a5a36dedd4bea2543 int, +F_c9f0f895fb98ab9159f51fd0297e236d int, +F_45c48cce2e2d7fbdea1afc51c7c6ad26 int, +F_d3d9446802a44259755d38e6d163e820 int, +F_6512bd43d9caa6e02c990b0a82652dca int, +F_c20ad4d76fe97759aa27a0c99bff6710 int, +F_c51ce410c124a10e0db5e4b97fc2af39 int, +F_aab3238922bcc25a6f606eb525ffdc56 int, +F_9bf31c7ff062936a96d3c8bd1f8f2ff3 int, +F_c74d97b01eae257e44aa9d5bade97baf int, +F_70efdf2ec9b086079795c442636b55fb int, +F_6f4922f45568161a8cdf4ad2299f6d23 int, +F_1f0e3dad99908345f7439f8ffabdffc4 int, +F_98f13708210194c475687be6106a3b84 int, +F_3c59dc048e8850243be8079a5c74d079 int, +F_b6d767d2f8ed5d21a44b0e5886680cb9 int, +F_37693cfc748049e45d87b8c7d8b9aacd int, +F_1ff1de774005f8da13f42943881c655f int, +F_8e296a067a37563370ded05f5a3bf3ec int, +F_4e732ced3463d06de0ca9a15b6153677 int, +F_02e74f10e0327ad868d138f2b4fdd6f0 int, +F_33e75ff09dd601bbe69f351039152189 int, +F_6ea9ab1baa0efb9e19094440c317e21b int, +F_34173cb38f07f89ddbebc2ac9128303f int, +F_c16a5320fa475530d9583c34fd356ef5 int, +F_6364d3f0f495b6ab9dcf8d3b5c6e0b01 int, +F_182be0c5cdcd5072bb1864cdee4d3d6e int, +F_e369853df766fa44e1ed0ff613f563bd int, +F_1c383cd30b7c298ab50293adfecb7b18 int, +F_19ca14e7ea6328a42e0eb13d585e4c22 int, +F_a5bfc9e07964f8dddeb95fc584cd965d int, +F_a5771bce93e200c36f7cd9dfd0e5deaa int, +F_d67d8ab4f4c10bf22aa353e27879133c int, +F_d645920e395fedad7bbbed0eca3fe2e0 int, +F_3416a75f4cea9109507cacd8e2f2aefc int, +F_a1d0c6e83f027327d8461063f4ac58a6 int, +F_17e62166fc8586dfa4d1bc0e1742c08b int, +F_f7177163c833dff4b38fc8d2872f1ec6 int, +F_6c8349cc7260ae62e3b1396831a8398f int, +F_d9d4f495e875a2e075a1a4a6e1b9770f int, +F_67c6a1e7ce56d3d6fa748ab6d9af3fd7 int, +F_642e92efb79421734881b53e1e1b18b6 int, +F_f457c545a9ded88f18ecee47145a72c0 int, +F_c0c7c76d30bd3dcaefc96f40275bdc0a int, +F_2838023a778dfaecdc212708f721b788 int, +F_9a1158154dfa42caddbd0694a4e9bdc8 int, +F_d82c8d1619ad8176d665453cfb2e55f0 int, +F_a684eceee76fc522773286a895bc8436 int, +F_b53b3a3d6ab90ce0268229151c9bde11 int, +F_9f61408e3afb633e50cdf1b20de6f466 int, +F_72b32a1f754ba1c09b3695e0cb6cde7f int, +F_66f041e16a60928b05a7e228a89c3799 int, +F_093f65e080a295f8076b1c5722a46aa2 int, +F_072b030ba126b2f4b2374f342be9ed44 int, +F_7f39f8317fbdb1988ef4c628eba02591 int, +F_44f683a84163b3523afe57c2e008bc8c int, +F_03afdbd66e7929b125f8597834fa83a4 int, +F_ea5d2f1c4608232e07d3aa3d998e5135 int, +F_fc490ca45c00b1249bbe3554a4fdf6fb int, +F_3295c76acbf4caaed33c36b1b5fc2cb1 int, +F_735b90b4568125ed6c3f678819b6e058 int, +F_a3f390d88e4c41f2747bfa2f1b5f87db int, +F_14bfa6bb14875e45bba028a21ed38046 int, +F_7cbbc409ec990f19c78c75bd1e06f215 int, +F_e2c420d928d4bf8ce0ff2ec19b371514 int, +F_32bb90e8976aab5298d5da10fe66f21d int, +F_d2ddea18f00665ce8623e36bd4e3c7c5 int, +F_ad61ab143223efbc24c7d2583be69251 int, +F_d09bf41544a3365a46c9077ebb5e35c3 int, +F_fbd7939d674997cdb4692d34de8633c4 int, +F_28dd2c7955ce926456240b2ff0100bde int, +F_35f4a8d465e6e1edc05f3d8ab658c551 int, +F_d1fe173d08e959397adf34b1d77e88d7 int, +F_f033ab37c30201f73f142449d037028d int, +F_43ec517d68b6edd3015b3edc9a11367b int, +F_9778d5d219c5080b9a6a17bef029331c int, +F_fe9fc289c3ff0af142b6d3bead98a923 int, +F_68d30a9594728bc39aa24be94b319d21 int, +F_3ef815416f775098fe977004015c6193 int, +F_93db85ed909c13838ff95ccfa94cebd9 int, +F_c7e1249ffc03eb9ded908c236bd1996d int, +F_2a38a4a9316c49e5a833517c45d31070 int, +F_7647966b7343c29048673252e490f736 int, +F_8613985ec49eb8f757ae6439e879bb2a int, +F_54229abfcfa5649e7003b83dd4755294 int, +F_92cc227532d17e56e07902b254dfad10 int, +F_98dce83da57b0395e163467c9dae521b int, +F_f4b9ec30ad9f68f89b29639786cb62ef int, +F_812b4ba287f5ee0bc9d43bbf5bbe87fb int, +F_26657d5ff9020d2abefe558796b99584 int, +F_e2ef524fbf3d9fe611d5a8e90fefdc9c int, +F_ed3d2c21991e3bef5e069713af9fa6ca int, +F_ac627ab1ccbdb62ec96e702f07f6425b int, +F_f899139df5e1059396431415e770c6dd int, +F_38b3eff8baf56627478ec76a704e9b52 int, +F_ec8956637a99787bd197eacd77acce5e int, +F_6974ce5ac660610b44d9b9fed0ff9548 int, +F_c9e1074f5b3f9fc8ea15d152add07294 int, +F_65b9eea6e1cc6bb9f0cd2a47751a186f int, +F_f0935e4cd5920aa6c7c996a5ee53a70f int, +F_a97da629b098b75c294dffdc3e463904 int, +F_a3c65c2974270fd093ee8a9bf8ae7d0b int, +F_2723d092b63885e0d7c260cc007e8b9d int, +F_5f93f983524def3dca464469d2cf9f3e int, +F_698d51a19d8a121ce581499d7b701668 int, +F_7f6ffaa6bb0b408017b62254211691b5 int, +F_73278a4a86960eeb576a8fd4c9ec6997 int, +F_5fd0b37cd7dbbb00f97ba6ce92bf5add int, +F_2b44928ae11fb9384c4cf38708677c48 int, +F_c45147dee729311ef5b5c3003946c48f int, +F_eb160de1de89d9058fcb0b968dbbbd68 int, +F_5ef059938ba799aaa845e1c2e8a762bd int, +F_07e1cd7dca89a1678042477183b7ac3f int, +F_da4fb5c6e93e74d3df8527599fa62642 int, +F_4c56ff4ce4aaf9573aa5dff913df997a int, +F_a0a080f42e6f13b3a2df133f073095dd int, +F_202cb962ac59075b964b07152d234b70 int, +F_c8ffe9a587b126f152ed3d89a146b445 int, +F_3def184ad8f4755ff269862ea77393dd int, +F_069059b7ef840f0c74a814ec9237b6ec int, +F_ec5decca5ed3d6b8079e2e7e7bacc9f2 int, +F_76dc611d6ebaafc66cc0879c71b5db5c int, +F_d1f491a404d6854880943e5c3cd9ca25 int, +F_9b8619251a19057cff70779273e95aa6 int, +F_1afa34a7f984eeabdbb0a7d494132ee5 int, +F_65ded5353c5ee48d0b7d48c591b8f430 int, +F_9fc3d7152ba9336a670e36d0ed79bc43 int, +F_02522a2b2726fb0a03bb19f2d8d9524d int, +F_7f1de29e6da19d22b51c68001e7e0e54 int, +F_42a0e188f5033bc65bf8d78622277c4e int, +F_3988c7f88ebcb58c6ce932b957b6f332 int, +F_013d407166ec4fa56eb1e1f8cbe183b9 int, +F_e00da03b685a0dd18fb6a08af0923de0 int, +F_1385974ed5904a438616ff7bdb3f7439 int, +F_0f28b5d49b3020afeecd95b4009adf4c int, +F_a8baa56554f96369ab93e4f3bb068c22 int, +F_903ce9225fca3e988c2af215d4e544d3 int, +F_0a09c8844ba8f0936c20bd791130d6b6 int, +F_2b24d495052a8ce66358eb576b8912c8 int, +F_a5e00132373a7031000fd987a3c9f87b int, +F_8d5e957f297893487bd98fa830fa6413 int, +F_47d1e990583c9c67424d369f3414728e int, +F_f2217062e9a397a1dca429e7d70bc6ca int, +F_7ef605fc8dba5425d6965fbd4c8fbe1f int, +F_a8f15eda80c50adb0e71943adc8015cf int, +F_37a749d808e46495a8da1e5352d03cae int, +F_b3e3e393c77e35a4a3f3cbd1e429b5dc int, +F_1d7f7abc18fcb43975065399b0d1e48e int, +F_2a79ea27c279e471f4d180b08d62b00a int, +F_1c9ac0159c94d8d0cbedc973445af2da int, +F_6c4b761a28b734fe93831e3fb400ce87 int, +F_06409663226af2f3114485aa4e0a23b4 int, +F_140f6969d5213fd0ece03148e62e461e int, +F_b73ce398c39f506af761d2277d853a92 int, +F_bd4c9ab730f5513206b999ec0d90d1fb int, +F_82aa4b0af34c2313a562076992e50aa3 int, +F_0777d5c17d4066b82ab86dff8a46af6f int, +F_fa7cdfad1a5aaf8370ebeda47a1ff1c3 int, +F_9766527f2b5d3e95d4a733fcfb77bd7e int, +F_7e7757b1e12abcb736ab9a754ffb617a int, +F_5878a7ab84fb43402106c575658472fa int, +F_006f52e9102a8d3be2fe5614f42ba989 int, +F_3636638817772e42b59d74cff571fbb3 int, +F_149e9677a5989fd342ae44213df68868 int, +F_a4a042cf4fd6bfb47701cbc8a1653ada int, +F_1ff8a7b5dc7a7d1f0ed65aaa29c04b1e int, +F_f7e6c85504ce6e82442c770f7c8606f0 int, +F_bf8229696f7a3bb4700cfddef19fa23f int, +F_82161242827b703e6acf9c726942a1e4 int, +F_38af86134b65d0f10fe33d30dd76442e int, +F_96da2f590cd7246bbde0051047b0d6f7 int, +F_8f85517967795eeef66c225f7883bdcb int, +F_8f53295a73878494e9bc8dd6c3c7104f int, +F_045117b0e0a11a242b9765e79cbf113f int, +F_fc221309746013ac554571fbd180e1c8 int, +F_4c5bde74a8f110656874902f07378009 int, +F_cedebb6e872f539bef8c3f919874e9d7 int, +F_6cdd60ea0045eb7a6ec44c54d29ed402 int, +F_eecca5b6365d9607ee5a9d336962c534 int, +F_9872ed9fc22fc182d371c3e9ed316094 int, +F_31fefc0e570cb3860f2a6d4b38c6490d int, +F_9dcb88e0137649590b755372b040afad int, +F_a2557a7b2e94197ff767970b67041697 int, +F_cfecdb276f634854f3ef915e2e980c31 int, +F_0aa1883c6411f7873cb83dacb17b0afc int, +F_58a2fc6ed39fd083f55d4182bf88826d int, +F_bd686fd640be98efaae0091fa301e613 int, +F_a597e50502f5ff68e3e25b9114205d4a int, +F_0336dcbab05b9d5ad24f4333c7658a0e int, +F_084b6fbb10729ed4da8c3d3f5a3ae7c9 int, +F_85d8ce590ad8981ca2c8286f79f59954 int, +F_0e65972dce68dad4d52d063967f0a705 int, +F_84d9ee44e457ddef7f2c4f25dc8fa865 int, +F_3644a684f98ea8fe223c713b77189a77 int, +F_757b505cfd34c64c85ca5b5690ee5293 int, +F_854d6fae5ee42911677c739ee1734486 int, +F_e2c0be24560d78c5e599c2a9c9d0bbd2 int, +F_274ad4786c3abca69fa097b85867d9a4 int, +F_eae27d77ca20db309e056e3d2dcd7d69 int, +F_7eabe3a1649ffa2b3ff8c02ebfd5659f int, +F_69adc1e107f7f7d035d7baf04342e1ca int, +F_091d584fced301b442654dd8c23b3fc9 int, +F_b1d10e7bafa4421218a51b1e1f1b0ba2 int, +F_6f3ef77ac0e3619e98159e9b6febf557 int, +F_eb163727917cbba1eea208541a643e74 int, +F_1534b76d325a8f591b52d302e7181331 int, +F_979d472a84804b9f647bc185a877a8b5 int, +F_ca46c1b9512a7a8315fa3c5a946e8265 int, +F_3b8a614226a953a8cd9526fca6fe9ba5 int, +F_45fbc6d3e05ebd93369ce542e8f2322d int, +F_63dc7ed1010d3c3b8269faf0ba7491d4 int, +F_e96ed478dab8595a7dbda4cbcbee168f int, +F_c0e190d8267e36708f955d7ab048990d int, +F_ec8ce6abb3e952a85b8551ba726a1227 int, +F_060ad92489947d410d897474079c1477 int, +F_bcbe3365e6ac95ea2c0343a2395834dd int, +F_115f89503138416a242f40fb7d7f338e int, +F_13fe9d84310e77f13a6d184dbf1232f3 int, +F_d1c38a09acc34845c6be3a127a5aacaf int, +F_9cfdf10e8fc047a44b08ed031e1f0ed1 int, +F_705f2172834666788607efbfca35afb3 int, +F_74db120f0a8e5646ef5a30154e9f6deb int, +F_57aeee35c98205091e18d1140e9f38cf int, +F_6da9003b743b65f4c0ccd295cc484e57 int, +F_9b04d152845ec0a378394003c96da594 int, +F_be83ab3ecd0db773eb2dc1b0a17836a1 int, +F_e165421110ba03099a1c0393373c5b43 int, +F_289dff07669d7a23de0ef88d2f7129e7 int, +F_577ef1154f3240ad5b9b413aa7346a1e int, +F_01161aaa0b6d1345dd8fe4e481144d84 int, +F_539fd53b59e3bb12d203f45a912eeaf2 int, +F_ac1dd209cbcc5e5d1c6e28598e8cbbe8 int, +F_555d6702c950ecb729a966504af0a635 int, +F_335f5352088d7d9bf74191e006d8e24c int, +F_f340f1b1f65b6df5b5e3f94d95b11daf int, +F_e4a6222cdb5b34375400904f03d8e6a5 int, +F_cb70ab375662576bd1ac5aaf16b3fca4 int, +F_9188905e74c28e489b44e954ec0b9bca int, +F_0266e33d3f546cb5436a10798e657d97 int, +F_38db3aed920cf82ab059bfccbd02be6a int, +F_3cec07e9ba5f5bb252d13f5f431e4bbb int, +F_621bf66ddb7c962aa0d22ac97d69b793 int, +F_077e29b11be80ab57e1a2ecabb7da330 int, +F_6c9882bbac1c7093bd25041881277658 int, +F_19f3cd308f1455b3fa09a282e0d496f4 int, +F_03c6b06952c750899bb03d998e631860 int, +F_c24cd76e1ce41366a4bbe8a49b02a028 int, +F_c52f1bd66cc19d05628bd8bf27af3ad6 int, +F_fe131d7f5a6b38b23cc967316c13dae2 int, +F_f718499c1c8cef6730f9fd03c8125cab int, +F_d96409bf894217686ba124d7356686c9 int, +F_502e4a16930e414107ee22b6198c578f int, +F_cfa0860e83a4c3a763a7e62d825349f7 int, +F_a4f23670e1833f3fdb077ca70bbd5d66 int, +F_b1a59b315fc9a3002ce38bbe070ec3f5 int, +F_36660e59856b4de58a219bcf4e27eba3 int, +F_8c19f571e251e61cb8dd3612f26d5ecf int, +F_d6baf65e0b240ce177cf70da146c8dc8 int, +F_e56954b4f6347e897f954495eab16a88 int, +F_f7664060cc52bc6f3d620bcedc94a4b6 int, +F_eda80a3d5b344bc40f3bc04f65b7a357 int, +F_8f121ce07d74717e0b1f21d122e04521 int, +F_06138bc5af6023646ede0e1f7c1eac75 int, +F_39059724f73a9969845dfe4146c5660e int, +F_7f100b7b36092fb9b06dfb4fac360931 int, +F_7a614fd06c325499f1680b9896beedeb int, +F_4734ba6f3de83d861c3176a6273cac6d int, +F_d947bf06a885db0d477d707121934ff8 int, +F_63923f49e5241343aa7acb6a06a751e7 int, +F_db8e1af0cb3aca1ae2d0018624204529 int, +F_20f07591c6fcb220ffe637cda29bb3f6 int, +F_07cdfd23373b17c6b337251c22b7ea57 int, +F_d395771085aab05244a4fb8fd91bf4ee int, +F_92c8c96e4c37100777c7190b76d28233 int, +F_e3796ae838835da0b6f6ea37bcf8bcb7 int, +F_6a9aeddfc689c1d0e3b9ccc3ab651bc5 int, +F_0f49c89d1e7298bb9930789c8ed59d48 int, +F_46ba9f2a6976570b0353203ec4474217 int, +F_0e01938fc48a2cfb5f2217fbfb00722d int, +F_16a5cdae362b8d27a1d8f8c7b78b4330 int, +F_918317b57931b6b7a7d29490fe5ec9f9 int, +F_48aedb8880cab8c45637abc7493ecddd int, +F_839ab46820b524afda05122893c2fe8e int, +F_f90f2aca5c640289d0a29417bcb63a37 int, +F_9c838d2e45b2ad1094d42f4ef36764f6 int, +F_1700002963a49da13542e0726b7bb758 int, +F_53c3bce66e43be4f209556518c2fcb54 int, +F_6883966fd8f918a4aa29be29d2c386fb int, +F_49182f81e6a13cf5eaa496d51fea6406 int, +F_d296c101daa88a51f6ca8cfc1ac79b50 int, +F_9fd81843ad7f202f26c1a174c7357585 int, +F_26e359e83860db1d11b6acca57d8ea88 int, +F_ef0d3930a7b6c95bd2b32ed45989c61f int, +F_94f6d7e04a4d452035300f18b984988c int, +F_34ed066df378efacc9b924ec161e7639 int, +F_577bcc914f9e55d5e4e4f82f9f00e7d4 int, +F_11b9842e0a271ff252c1903e7132cd68 int, +F_37bc2f75bf1bcfe8450a1a41c200364c int, +F_496e05e1aea0a9c4655800e8a7b9ea28 int, +F_b2eb7349035754953b57a32e2841bda5 int, +F_8e98d81f8217304975ccb23337bb5761 int, +F_a8c88a0055f636e4a163a5e3d16adab7 int, +F_eddea82ad2755b24c4e168c5fc2ebd40 int, +F_06eb61b839a0cefee4967c67ccb099dc int, +F_9dfcd5e558dfa04aaf37f137a1d9d3e5 int, +F_950a4152c2b4aa3ad78bdd6b366cc179 int, +F_158f3069a435b314a80bdcb024f8e422 int, +F_758874998f5bd0c393da094e1967a72b int, +F_ad13a2a07ca4b7642959dc0c4c740ab6 int, +F_3fe94a002317b5f9259f82690aeea4cd int, +F_5b8add2a5d98b1a652ea7fd72d942dac int, +F_432aca3a1e345e339f35a30c8f65edce int, +F_8d3bba7425e7c98c50f52ca1b52d3735 int, +F_320722549d1751cf3f247855f937b982 int, +F_caf1a3dfb505ffed0d024130f58c5cfa int, +F_5737c6ec2e0716f3d8a7a5c4e0de0d9a int, +F_bc6dc48b743dc5d013b1abaebd2faed2 int, +F_f2fc990265c712c49d51a18a32b39f0c int, +F_89f0fd5c927d466d6ec9a21b9ac34ffa int, +F_a666587afda6e89aec274a3657558a27 int, +F_b83aac23b9528732c23cc7352950e880 int, +F_cd00692c3bfe59267d5ecfac5310286c int, +F_6faa8040da20ef399b63a72d0e4ab575 int, +F_fe73f687e5bc5280214e0486b273a5f9 int); +insert into t1 (F_8d3bba7425e7c98c50f52ca1b52d3735) values (1); + +/*!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 */; +/*!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` ( + `F_c4ca4238a0b923820dcc509a6f75849b` int(11) default NULL, + `F_c81e728d9d4c2f636f067f89cc14862c` int(11) default NULL, + `F_eccbc87e4b5ce2fe28308fd9f2a7baf3` int(11) default NULL, + `F_a87ff679a2f3e71d9181a67b7542122c` int(11) default NULL, + `F_e4da3b7fbbce2345d7772b0674a318d5` int(11) default NULL, + `F_1679091c5a880faf6fb5e6087eb1b2dc` int(11) default NULL, + `F_8f14e45fceea167a5a36dedd4bea2543` int(11) default NULL, + `F_c9f0f895fb98ab9159f51fd0297e236d` int(11) default NULL, + `F_45c48cce2e2d7fbdea1afc51c7c6ad26` int(11) default NULL, + `F_d3d9446802a44259755d38e6d163e820` int(11) default NULL, + `F_6512bd43d9caa6e02c990b0a82652dca` int(11) default NULL, + `F_c20ad4d76fe97759aa27a0c99bff6710` int(11) default NULL, + `F_c51ce410c124a10e0db5e4b97fc2af39` int(11) default NULL, + `F_aab3238922bcc25a6f606eb525ffdc56` int(11) default NULL, + `F_9bf31c7ff062936a96d3c8bd1f8f2ff3` int(11) default NULL, + `F_c74d97b01eae257e44aa9d5bade97baf` int(11) default NULL, + `F_70efdf2ec9b086079795c442636b55fb` int(11) default NULL, + `F_6f4922f45568161a8cdf4ad2299f6d23` int(11) default NULL, + `F_1f0e3dad99908345f7439f8ffabdffc4` int(11) default NULL, + `F_98f13708210194c475687be6106a3b84` int(11) default NULL, + `F_3c59dc048e8850243be8079a5c74d079` int(11) default NULL, + `F_b6d767d2f8ed5d21a44b0e5886680cb9` int(11) default NULL, + `F_37693cfc748049e45d87b8c7d8b9aacd` int(11) default NULL, + `F_1ff1de774005f8da13f42943881c655f` int(11) default NULL, + `F_8e296a067a37563370ded05f5a3bf3ec` int(11) default NULL, + `F_4e732ced3463d06de0ca9a15b6153677` int(11) default NULL, + `F_02e74f10e0327ad868d138f2b4fdd6f0` int(11) default NULL, + `F_33e75ff09dd601bbe69f351039152189` int(11) default NULL, + `F_6ea9ab1baa0efb9e19094440c317e21b` int(11) default NULL, + `F_34173cb38f07f89ddbebc2ac9128303f` int(11) default NULL, + `F_c16a5320fa475530d9583c34fd356ef5` int(11) default NULL, + `F_6364d3f0f495b6ab9dcf8d3b5c6e0b01` int(11) default NULL, + `F_182be0c5cdcd5072bb1864cdee4d3d6e` int(11) default NULL, + `F_e369853df766fa44e1ed0ff613f563bd` int(11) default NULL, + `F_1c383cd30b7c298ab50293adfecb7b18` int(11) default NULL, + `F_19ca14e7ea6328a42e0eb13d585e4c22` int(11) default NULL, + `F_a5bfc9e07964f8dddeb95fc584cd965d` int(11) default NULL, + `F_a5771bce93e200c36f7cd9dfd0e5deaa` int(11) default NULL, + `F_d67d8ab4f4c10bf22aa353e27879133c` int(11) default NULL, + `F_d645920e395fedad7bbbed0eca3fe2e0` int(11) default NULL, + `F_3416a75f4cea9109507cacd8e2f2aefc` int(11) default NULL, + `F_a1d0c6e83f027327d8461063f4ac58a6` int(11) default NULL, + `F_17e62166fc8586dfa4d1bc0e1742c08b` int(11) default NULL, + `F_f7177163c833dff4b38fc8d2872f1ec6` int(11) default NULL, + `F_6c8349cc7260ae62e3b1396831a8398f` int(11) default NULL, + `F_d9d4f495e875a2e075a1a4a6e1b9770f` int(11) default NULL, + `F_67c6a1e7ce56d3d6fa748ab6d9af3fd7` int(11) default NULL, + `F_642e92efb79421734881b53e1e1b18b6` int(11) default NULL, + `F_f457c545a9ded88f18ecee47145a72c0` int(11) default NULL, + `F_c0c7c76d30bd3dcaefc96f40275bdc0a` int(11) default NULL, + `F_2838023a778dfaecdc212708f721b788` int(11) default NULL, + `F_9a1158154dfa42caddbd0694a4e9bdc8` int(11) default NULL, + `F_d82c8d1619ad8176d665453cfb2e55f0` int(11) default NULL, + `F_a684eceee76fc522773286a895bc8436` int(11) default NULL, + `F_b53b3a3d6ab90ce0268229151c9bde11` int(11) default NULL, + `F_9f61408e3afb633e50cdf1b20de6f466` int(11) default NULL, + `F_72b32a1f754ba1c09b3695e0cb6cde7f` int(11) default NULL, + `F_66f041e16a60928b05a7e228a89c3799` int(11) default NULL, + `F_093f65e080a295f8076b1c5722a46aa2` int(11) default NULL, + `F_072b030ba126b2f4b2374f342be9ed44` int(11) default NULL, + `F_7f39f8317fbdb1988ef4c628eba02591` int(11) default NULL, + `F_44f683a84163b3523afe57c2e008bc8c` int(11) default NULL, + `F_03afdbd66e7929b125f8597834fa83a4` int(11) default NULL, + `F_ea5d2f1c4608232e07d3aa3d998e5135` int(11) default NULL, + `F_fc490ca45c00b1249bbe3554a4fdf6fb` int(11) default NULL, + `F_3295c76acbf4caaed33c36b1b5fc2cb1` int(11) default NULL, + `F_735b90b4568125ed6c3f678819b6e058` int(11) default NULL, + `F_a3f390d88e4c41f2747bfa2f1b5f87db` int(11) default NULL, + `F_14bfa6bb14875e45bba028a21ed38046` int(11) default NULL, + `F_7cbbc409ec990f19c78c75bd1e06f215` int(11) default NULL, + `F_e2c420d928d4bf8ce0ff2ec19b371514` int(11) default NULL, + `F_32bb90e8976aab5298d5da10fe66f21d` int(11) default NULL, + `F_d2ddea18f00665ce8623e36bd4e3c7c5` int(11) default NULL, + `F_ad61ab143223efbc24c7d2583be69251` int(11) default NULL, + `F_d09bf41544a3365a46c9077ebb5e35c3` int(11) default NULL, + `F_fbd7939d674997cdb4692d34de8633c4` int(11) default NULL, + `F_28dd2c7955ce926456240b2ff0100bde` int(11) default NULL, + `F_35f4a8d465e6e1edc05f3d8ab658c551` int(11) default NULL, + `F_d1fe173d08e959397adf34b1d77e88d7` int(11) default NULL, + `F_f033ab37c30201f73f142449d037028d` int(11) default NULL, + `F_43ec517d68b6edd3015b3edc9a11367b` int(11) default NULL, + `F_9778d5d219c5080b9a6a17bef029331c` int(11) default NULL, + `F_fe9fc289c3ff0af142b6d3bead98a923` int(11) default NULL, + `F_68d30a9594728bc39aa24be94b319d21` int(11) default NULL, + `F_3ef815416f775098fe977004015c6193` int(11) default NULL, + `F_93db85ed909c13838ff95ccfa94cebd9` int(11) default NULL, + `F_c7e1249ffc03eb9ded908c236bd1996d` int(11) default NULL, + `F_2a38a4a9316c49e5a833517c45d31070` int(11) default NULL, + `F_7647966b7343c29048673252e490f736` int(11) default NULL, + `F_8613985ec49eb8f757ae6439e879bb2a` int(11) default NULL, + `F_54229abfcfa5649e7003b83dd4755294` int(11) default NULL, + `F_92cc227532d17e56e07902b254dfad10` int(11) default NULL, + `F_98dce83da57b0395e163467c9dae521b` int(11) default NULL, + `F_f4b9ec30ad9f68f89b29639786cb62ef` int(11) default NULL, + `F_812b4ba287f5ee0bc9d43bbf5bbe87fb` int(11) default NULL, + `F_26657d5ff9020d2abefe558796b99584` int(11) default NULL, + `F_e2ef524fbf3d9fe611d5a8e90fefdc9c` int(11) default NULL, + `F_ed3d2c21991e3bef5e069713af9fa6ca` int(11) default NULL, + `F_ac627ab1ccbdb62ec96e702f07f6425b` int(11) default NULL, + `F_f899139df5e1059396431415e770c6dd` int(11) default NULL, + `F_38b3eff8baf56627478ec76a704e9b52` int(11) default NULL, + `F_ec8956637a99787bd197eacd77acce5e` int(11) default NULL, + `F_6974ce5ac660610b44d9b9fed0ff9548` int(11) default NULL, + `F_c9e1074f5b3f9fc8ea15d152add07294` int(11) default NULL, + `F_65b9eea6e1cc6bb9f0cd2a47751a186f` int(11) default NULL, + `F_f0935e4cd5920aa6c7c996a5ee53a70f` int(11) default NULL, + `F_a97da629b098b75c294dffdc3e463904` int(11) default NULL, + `F_a3c65c2974270fd093ee8a9bf8ae7d0b` int(11) default NULL, + `F_2723d092b63885e0d7c260cc007e8b9d` int(11) default NULL, + `F_5f93f983524def3dca464469d2cf9f3e` int(11) default NULL, + `F_698d51a19d8a121ce581499d7b701668` int(11) default NULL, + `F_7f6ffaa6bb0b408017b62254211691b5` int(11) default NULL, + `F_73278a4a86960eeb576a8fd4c9ec6997` int(11) default NULL, + `F_5fd0b37cd7dbbb00f97ba6ce92bf5add` int(11) default NULL, + `F_2b44928ae11fb9384c4cf38708677c48` int(11) default NULL, + `F_c45147dee729311ef5b5c3003946c48f` int(11) default NULL, + `F_eb160de1de89d9058fcb0b968dbbbd68` int(11) default NULL, + `F_5ef059938ba799aaa845e1c2e8a762bd` int(11) default NULL, + `F_07e1cd7dca89a1678042477183b7ac3f` int(11) default NULL, + `F_da4fb5c6e93e74d3df8527599fa62642` int(11) default NULL, + `F_4c56ff4ce4aaf9573aa5dff913df997a` int(11) default NULL, + `F_a0a080f42e6f13b3a2df133f073095dd` int(11) default NULL, + `F_202cb962ac59075b964b07152d234b70` int(11) default NULL, + `F_c8ffe9a587b126f152ed3d89a146b445` int(11) default NULL, + `F_3def184ad8f4755ff269862ea77393dd` int(11) default NULL, + `F_069059b7ef840f0c74a814ec9237b6ec` int(11) default NULL, + `F_ec5decca5ed3d6b8079e2e7e7bacc9f2` int(11) default NULL, + `F_76dc611d6ebaafc66cc0879c71b5db5c` int(11) default NULL, + `F_d1f491a404d6854880943e5c3cd9ca25` int(11) default NULL, + `F_9b8619251a19057cff70779273e95aa6` int(11) default NULL, + `F_1afa34a7f984eeabdbb0a7d494132ee5` int(11) default NULL, + `F_65ded5353c5ee48d0b7d48c591b8f430` int(11) default NULL, + `F_9fc3d7152ba9336a670e36d0ed79bc43` int(11) default NULL, + `F_02522a2b2726fb0a03bb19f2d8d9524d` int(11) default NULL, + `F_7f1de29e6da19d22b51c68001e7e0e54` int(11) default NULL, + `F_42a0e188f5033bc65bf8d78622277c4e` int(11) default NULL, + `F_3988c7f88ebcb58c6ce932b957b6f332` int(11) default NULL, + `F_013d407166ec4fa56eb1e1f8cbe183b9` int(11) default NULL, + `F_e00da03b685a0dd18fb6a08af0923de0` int(11) default NULL, + `F_1385974ed5904a438616ff7bdb3f7439` int(11) default NULL, + `F_0f28b5d49b3020afeecd95b4009adf4c` int(11) default NULL, + `F_a8baa56554f96369ab93e4f3bb068c22` int(11) default NULL, + `F_903ce9225fca3e988c2af215d4e544d3` int(11) default NULL, + `F_0a09c8844ba8f0936c20bd791130d6b6` int(11) default NULL, + `F_2b24d495052a8ce66358eb576b8912c8` int(11) default NULL, + `F_a5e00132373a7031000fd987a3c9f87b` int(11) default NULL, + `F_8d5e957f297893487bd98fa830fa6413` int(11) default NULL, + `F_47d1e990583c9c67424d369f3414728e` int(11) default NULL, + `F_f2217062e9a397a1dca429e7d70bc6ca` int(11) default NULL, + `F_7ef605fc8dba5425d6965fbd4c8fbe1f` int(11) default NULL, + `F_a8f15eda80c50adb0e71943adc8015cf` int(11) default NULL, + `F_37a749d808e46495a8da1e5352d03cae` int(11) default NULL, + `F_b3e3e393c77e35a4a3f3cbd1e429b5dc` int(11) default NULL, + `F_1d7f7abc18fcb43975065399b0d1e48e` int(11) default NULL, + `F_2a79ea27c279e471f4d180b08d62b00a` int(11) default NULL, + `F_1c9ac0159c94d8d0cbedc973445af2da` int(11) default NULL, + `F_6c4b761a28b734fe93831e3fb400ce87` int(11) default NULL, + `F_06409663226af2f3114485aa4e0a23b4` int(11) default NULL, + `F_140f6969d5213fd0ece03148e62e461e` int(11) default NULL, + `F_b73ce398c39f506af761d2277d853a92` int(11) default NULL, + `F_bd4c9ab730f5513206b999ec0d90d1fb` int(11) default NULL, + `F_82aa4b0af34c2313a562076992e50aa3` int(11) default NULL, + `F_0777d5c17d4066b82ab86dff8a46af6f` int(11) default NULL, + `F_fa7cdfad1a5aaf8370ebeda47a1ff1c3` int(11) default NULL, + `F_9766527f2b5d3e95d4a733fcfb77bd7e` int(11) default NULL, + `F_7e7757b1e12abcb736ab9a754ffb617a` int(11) default NULL, + `F_5878a7ab84fb43402106c575658472fa` int(11) default NULL, + `F_006f52e9102a8d3be2fe5614f42ba989` int(11) default NULL, + `F_3636638817772e42b59d74cff571fbb3` int(11) default NULL, + `F_149e9677a5989fd342ae44213df68868` int(11) default NULL, + `F_a4a042cf4fd6bfb47701cbc8a1653ada` int(11) default NULL, + `F_1ff8a7b5dc7a7d1f0ed65aaa29c04b1e` int(11) default NULL, + `F_f7e6c85504ce6e82442c770f7c8606f0` int(11) default NULL, + `F_bf8229696f7a3bb4700cfddef19fa23f` int(11) default NULL, + `F_82161242827b703e6acf9c726942a1e4` int(11) default NULL, + `F_38af86134b65d0f10fe33d30dd76442e` int(11) default NULL, + `F_96da2f590cd7246bbde0051047b0d6f7` int(11) default NULL, + `F_8f85517967795eeef66c225f7883bdcb` int(11) default NULL, + `F_8f53295a73878494e9bc8dd6c3c7104f` int(11) default NULL, + `F_045117b0e0a11a242b9765e79cbf113f` int(11) default NULL, + `F_fc221309746013ac554571fbd180e1c8` int(11) default NULL, + `F_4c5bde74a8f110656874902f07378009` int(11) default NULL, + `F_cedebb6e872f539bef8c3f919874e9d7` int(11) default NULL, + `F_6cdd60ea0045eb7a6ec44c54d29ed402` int(11) default NULL, + `F_eecca5b6365d9607ee5a9d336962c534` int(11) default NULL, + `F_9872ed9fc22fc182d371c3e9ed316094` int(11) default NULL, + `F_31fefc0e570cb3860f2a6d4b38c6490d` int(11) default NULL, + `F_9dcb88e0137649590b755372b040afad` int(11) default NULL, + `F_a2557a7b2e94197ff767970b67041697` int(11) default NULL, + `F_cfecdb276f634854f3ef915e2e980c31` int(11) default NULL, + `F_0aa1883c6411f7873cb83dacb17b0afc` int(11) default NULL, + `F_58a2fc6ed39fd083f55d4182bf88826d` int(11) default NULL, + `F_bd686fd640be98efaae0091fa301e613` int(11) default NULL, + `F_a597e50502f5ff68e3e25b9114205d4a` int(11) default NULL, + `F_0336dcbab05b9d5ad24f4333c7658a0e` int(11) default NULL, + `F_084b6fbb10729ed4da8c3d3f5a3ae7c9` int(11) default NULL, + `F_85d8ce590ad8981ca2c8286f79f59954` int(11) default NULL, + `F_0e65972dce68dad4d52d063967f0a705` int(11) default NULL, + `F_84d9ee44e457ddef7f2c4f25dc8fa865` int(11) default NULL, + `F_3644a684f98ea8fe223c713b77189a77` int(11) default NULL, + `F_757b505cfd34c64c85ca5b5690ee5293` int(11) default NULL, + `F_854d6fae5ee42911677c739ee1734486` int(11) default NULL, + `F_e2c0be24560d78c5e599c2a9c9d0bbd2` int(11) default NULL, + `F_274ad4786c3abca69fa097b85867d9a4` int(11) default NULL, + `F_eae27d77ca20db309e056e3d2dcd7d69` int(11) default NULL, + `F_7eabe3a1649ffa2b3ff8c02ebfd5659f` int(11) default NULL, + `F_69adc1e107f7f7d035d7baf04342e1ca` int(11) default NULL, + `F_091d584fced301b442654dd8c23b3fc9` int(11) default NULL, + `F_b1d10e7bafa4421218a51b1e1f1b0ba2` int(11) default NULL, + `F_6f3ef77ac0e3619e98159e9b6febf557` int(11) default NULL, + `F_eb163727917cbba1eea208541a643e74` int(11) default NULL, + `F_1534b76d325a8f591b52d302e7181331` int(11) default NULL, + `F_979d472a84804b9f647bc185a877a8b5` int(11) default NULL, + `F_ca46c1b9512a7a8315fa3c5a946e8265` int(11) default NULL, + `F_3b8a614226a953a8cd9526fca6fe9ba5` int(11) default NULL, + `F_45fbc6d3e05ebd93369ce542e8f2322d` int(11) default NULL, + `F_63dc7ed1010d3c3b8269faf0ba7491d4` int(11) default NULL, + `F_e96ed478dab8595a7dbda4cbcbee168f` int(11) default NULL, + `F_c0e190d8267e36708f955d7ab048990d` int(11) default NULL, + `F_ec8ce6abb3e952a85b8551ba726a1227` int(11) default NULL, + `F_060ad92489947d410d897474079c1477` int(11) default NULL, + `F_bcbe3365e6ac95ea2c0343a2395834dd` int(11) default NULL, + `F_115f89503138416a242f40fb7d7f338e` int(11) default NULL, + `F_13fe9d84310e77f13a6d184dbf1232f3` int(11) default NULL, + `F_d1c38a09acc34845c6be3a127a5aacaf` int(11) default NULL, + `F_9cfdf10e8fc047a44b08ed031e1f0ed1` int(11) default NULL, + `F_705f2172834666788607efbfca35afb3` int(11) default NULL, + `F_74db120f0a8e5646ef5a30154e9f6deb` int(11) default NULL, + `F_57aeee35c98205091e18d1140e9f38cf` int(11) default NULL, + `F_6da9003b743b65f4c0ccd295cc484e57` int(11) default NULL, + `F_9b04d152845ec0a378394003c96da594` int(11) default NULL, + `F_be83ab3ecd0db773eb2dc1b0a17836a1` int(11) default NULL, + `F_e165421110ba03099a1c0393373c5b43` int(11) default NULL, + `F_289dff07669d7a23de0ef88d2f7129e7` int(11) default NULL, + `F_577ef1154f3240ad5b9b413aa7346a1e` int(11) default NULL, + `F_01161aaa0b6d1345dd8fe4e481144d84` int(11) default NULL, + `F_539fd53b59e3bb12d203f45a912eeaf2` int(11) default NULL, + `F_ac1dd209cbcc5e5d1c6e28598e8cbbe8` int(11) default NULL, + `F_555d6702c950ecb729a966504af0a635` int(11) default NULL, + `F_335f5352088d7d9bf74191e006d8e24c` int(11) default NULL, + `F_f340f1b1f65b6df5b5e3f94d95b11daf` int(11) default NULL, + `F_e4a6222cdb5b34375400904f03d8e6a5` int(11) default NULL, + `F_cb70ab375662576bd1ac5aaf16b3fca4` int(11) default NULL, + `F_9188905e74c28e489b44e954ec0b9bca` int(11) default NULL, + `F_0266e33d3f546cb5436a10798e657d97` int(11) default NULL, + `F_38db3aed920cf82ab059bfccbd02be6a` int(11) default NULL, + `F_3cec07e9ba5f5bb252d13f5f431e4bbb` int(11) default NULL, + `F_621bf66ddb7c962aa0d22ac97d69b793` int(11) default NULL, + `F_077e29b11be80ab57e1a2ecabb7da330` int(11) default NULL, + `F_6c9882bbac1c7093bd25041881277658` int(11) default NULL, + `F_19f3cd308f1455b3fa09a282e0d496f4` int(11) default NULL, + `F_03c6b06952c750899bb03d998e631860` int(11) default NULL, + `F_c24cd76e1ce41366a4bbe8a49b02a028` int(11) default NULL, + `F_c52f1bd66cc19d05628bd8bf27af3ad6` int(11) default NULL, + `F_fe131d7f5a6b38b23cc967316c13dae2` int(11) default NULL, + `F_f718499c1c8cef6730f9fd03c8125cab` int(11) default NULL, + `F_d96409bf894217686ba124d7356686c9` int(11) default NULL, + `F_502e4a16930e414107ee22b6198c578f` int(11) default NULL, + `F_cfa0860e83a4c3a763a7e62d825349f7` int(11) default NULL, + `F_a4f23670e1833f3fdb077ca70bbd5d66` int(11) default NULL, + `F_b1a59b315fc9a3002ce38bbe070ec3f5` int(11) default NULL, + `F_36660e59856b4de58a219bcf4e27eba3` int(11) default NULL, + `F_8c19f571e251e61cb8dd3612f26d5ecf` int(11) default NULL, + `F_d6baf65e0b240ce177cf70da146c8dc8` int(11) default NULL, + `F_e56954b4f6347e897f954495eab16a88` int(11) default NULL, + `F_f7664060cc52bc6f3d620bcedc94a4b6` int(11) default NULL, + `F_eda80a3d5b344bc40f3bc04f65b7a357` int(11) default NULL, + `F_8f121ce07d74717e0b1f21d122e04521` int(11) default NULL, + `F_06138bc5af6023646ede0e1f7c1eac75` int(11) default NULL, + `F_39059724f73a9969845dfe4146c5660e` int(11) default NULL, + `F_7f100b7b36092fb9b06dfb4fac360931` int(11) default NULL, + `F_7a614fd06c325499f1680b9896beedeb` int(11) default NULL, + `F_4734ba6f3de83d861c3176a6273cac6d` int(11) default NULL, + `F_d947bf06a885db0d477d707121934ff8` int(11) default NULL, + `F_63923f49e5241343aa7acb6a06a751e7` int(11) default NULL, + `F_db8e1af0cb3aca1ae2d0018624204529` int(11) default NULL, + `F_20f07591c6fcb220ffe637cda29bb3f6` int(11) default NULL, + `F_07cdfd23373b17c6b337251c22b7ea57` int(11) default NULL, + `F_d395771085aab05244a4fb8fd91bf4ee` int(11) default NULL, + `F_92c8c96e4c37100777c7190b76d28233` int(11) default NULL, + `F_e3796ae838835da0b6f6ea37bcf8bcb7` int(11) default NULL, + `F_6a9aeddfc689c1d0e3b9ccc3ab651bc5` int(11) default NULL, + `F_0f49c89d1e7298bb9930789c8ed59d48` int(11) default NULL, + `F_46ba9f2a6976570b0353203ec4474217` int(11) default NULL, + `F_0e01938fc48a2cfb5f2217fbfb00722d` int(11) default NULL, + `F_16a5cdae362b8d27a1d8f8c7b78b4330` int(11) default NULL, + `F_918317b57931b6b7a7d29490fe5ec9f9` int(11) default NULL, + `F_48aedb8880cab8c45637abc7493ecddd` int(11) default NULL, + `F_839ab46820b524afda05122893c2fe8e` int(11) default NULL, + `F_f90f2aca5c640289d0a29417bcb63a37` int(11) default NULL, + `F_9c838d2e45b2ad1094d42f4ef36764f6` int(11) default NULL, + `F_1700002963a49da13542e0726b7bb758` int(11) default NULL, + `F_53c3bce66e43be4f209556518c2fcb54` int(11) default NULL, + `F_6883966fd8f918a4aa29be29d2c386fb` int(11) default NULL, + `F_49182f81e6a13cf5eaa496d51fea6406` int(11) default NULL, + `F_d296c101daa88a51f6ca8cfc1ac79b50` int(11) default NULL, + `F_9fd81843ad7f202f26c1a174c7357585` int(11) default NULL, + `F_26e359e83860db1d11b6acca57d8ea88` int(11) default NULL, + `F_ef0d3930a7b6c95bd2b32ed45989c61f` int(11) default NULL, + `F_94f6d7e04a4d452035300f18b984988c` int(11) default NULL, + `F_34ed066df378efacc9b924ec161e7639` int(11) default NULL, + `F_577bcc914f9e55d5e4e4f82f9f00e7d4` int(11) default NULL, + `F_11b9842e0a271ff252c1903e7132cd68` int(11) default NULL, + `F_37bc2f75bf1bcfe8450a1a41c200364c` int(11) default NULL, + `F_496e05e1aea0a9c4655800e8a7b9ea28` int(11) default NULL, + `F_b2eb7349035754953b57a32e2841bda5` int(11) default NULL, + `F_8e98d81f8217304975ccb23337bb5761` int(11) default NULL, + `F_a8c88a0055f636e4a163a5e3d16adab7` int(11) default NULL, + `F_eddea82ad2755b24c4e168c5fc2ebd40` int(11) default NULL, + `F_06eb61b839a0cefee4967c67ccb099dc` int(11) default NULL, + `F_9dfcd5e558dfa04aaf37f137a1d9d3e5` int(11) default NULL, + `F_950a4152c2b4aa3ad78bdd6b366cc179` int(11) default NULL, + `F_158f3069a435b314a80bdcb024f8e422` int(11) default NULL, + `F_758874998f5bd0c393da094e1967a72b` int(11) default NULL, + `F_ad13a2a07ca4b7642959dc0c4c740ab6` int(11) default NULL, + `F_3fe94a002317b5f9259f82690aeea4cd` int(11) default NULL, + `F_5b8add2a5d98b1a652ea7fd72d942dac` int(11) default NULL, + `F_432aca3a1e345e339f35a30c8f65edce` int(11) default NULL, + `F_8d3bba7425e7c98c50f52ca1b52d3735` int(11) default NULL, + `F_320722549d1751cf3f247855f937b982` int(11) default NULL, + `F_caf1a3dfb505ffed0d024130f58c5cfa` int(11) default NULL, + `F_5737c6ec2e0716f3d8a7a5c4e0de0d9a` int(11) default NULL, + `F_bc6dc48b743dc5d013b1abaebd2faed2` int(11) default NULL, + `F_f2fc990265c712c49d51a18a32b39f0c` int(11) default NULL, + `F_89f0fd5c927d466d6ec9a21b9ac34ffa` int(11) default NULL, + `F_a666587afda6e89aec274a3657558a27` int(11) default NULL, + `F_b83aac23b9528732c23cc7352950e880` int(11) default NULL, + `F_cd00692c3bfe59267d5ecfac5310286c` int(11) default NULL, + `F_6faa8040da20ef399b63a72d0e4ab575` int(11) default NULL, + `F_fe73f687e5bc5280214e0486b273a5f9` int(11) default NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + + +/*!40000 ALTER TABLE `t1` DISABLE KEYS */; +LOCK TABLES `t1` WRITE; +INSERT INTO `t1` (`F_c4ca4238a0b923820dcc509a6f75849b`, `F_c81e728d9d4c2f636f067f89cc14862c`, `F_eccbc87e4b5ce2fe28308fd9f2a7baf3`, `F_a87ff679a2f3e71d9181a67b7542122c`, `F_e4da3b7fbbce2345d7772b0674a318d5`, `F_1679091c5a880faf6fb5e6087eb1b2dc`, `F_8f14e45fceea167a5a36dedd4bea2543`, `F_c9f0f895fb98ab9159f51fd0297e236d`, `F_45c48cce2e2d7fbdea1afc51c7c6ad26`, `F_d3d9446802a44259755d38e6d163e820`, `F_6512bd43d9caa6e02c990b0a82652dca`, `F_c20ad4d76fe97759aa27a0c99bff6710`, `F_c51ce410c124a10e0db5e4b97fc2af39`, `F_aab3238922bcc25a6f606eb525ffdc56`, `F_9bf31c7ff062936a96d3c8bd1f8f2ff3`, `F_c74d97b01eae257e44aa9d5bade97baf`, `F_70efdf2ec9b086079795c442636b55fb`, `F_6f4922f45568161a8cdf4ad2299f6d23`, `F_1f0e3dad99908345f7439f8ffabdffc4`, `F_98f13708210194c475687be6106a3b84`, `F_3c59dc048e8850243be8079a5c74d079`, `F_b6d767d2f8ed5d21a44b0e5886680cb9`, `F_37693cfc748049e45d87b8c7d8b9aacd`, `F_1ff1de774005f8da13f42943881c655f`, `F_8e296a067a37563370ded05f5a3bf3ec`, `F_4e732ced3463d06de0ca9a15b6153677`, `F_02e74f10e0327ad868d138f2b4fdd6f0`, `F_33e75ff09dd601bbe69f351039152189`, `F_6ea9ab1baa0efb9e19094440c317e21b`, `F_34173cb38f07f89ddbebc2ac9128303f`, `F_c16a5320fa475530d9583c34fd356ef5`, `F_6364d3f0f495b6ab9dcf8d3b5c6e0b01`, `F_182be0c5cdcd5072bb1864cdee4d3d6e`, `F_e369853df766fa44e1ed0ff613f563bd`, `F_1c383cd30b7c298ab50293adfecb7b18`, `F_19ca14e7ea6328a42e0eb13d585e4c22`, `F_a5bfc9e07964f8dddeb95fc584cd965d`, `F_a5771bce93e200c36f7cd9dfd0e5deaa`, `F_d67d8ab4f4c10bf22aa353e27879133c`, `F_d645920e395fedad7bbbed0eca3fe2e0`, `F_3416a75f4cea9109507cacd8e2f2aefc`, `F_a1d0c6e83f027327d8461063f4ac58a6`, `F_17e62166fc8586dfa4d1bc0e1742c08b`, `F_f7177163c833dff4b38fc8d2872f1ec6`, `F_6c8349cc7260ae62e3b1396831a8398f`, `F_d9d4f495e875a2e075a1a4a6e1b9770f`, `F_67c6a1e7ce56d3d6fa748ab6d9af3fd7`, `F_642e92efb79421734881b53e1e1b18b6`, `F_f457c545a9ded88f18ecee47145a72c0`, `F_c0c7c76d30bd3dcaefc96f40275bdc0a`, `F_2838023a778dfaecdc212708f721b788`, `F_9a1158154dfa42caddbd0694a4e9bdc8`, `F_d82c8d1619ad8176d665453cfb2e55f0`, `F_a684eceee76fc522773286a895bc8436`, `F_b53b3a3d6ab90ce0268229151c9bde11`, `F_9f61408e3afb633e50cdf1b20de6f466`, `F_72b32a1f754ba1c09b3695e0cb6cde7f`, `F_66f041e16a60928b05a7e228a89c3799`, `F_093f65e080a295f8076b1c5722a46aa2`, `F_072b030ba126b2f4b2374f342be9ed44`, `F_7f39f8317fbdb1988ef4c628eba02591`, `F_44f683a84163b3523afe57c2e008bc8c`, `F_03afdbd66e7929b125f8597834fa83a4`, `F_ea5d2f1c4608232e07d3aa3d998e5135`, `F_fc490ca45c00b1249bbe3554a4fdf6fb`, `F_3295c76acbf4caaed33c36b1b5fc2cb1`, `F_735b90b4568125ed6c3f678819b6e058`, `F_a3f390d88e4c41f2747bfa2f1b5f87db`, `F_14bfa6bb14875e45bba028a21ed38046`, `F_7cbbc409ec990f19c78c75bd1e06f215`, `F_e2c420d928d4bf8ce0ff2ec19b371514`, `F_32bb90e8976aab5298d5da10fe66f21d`, `F_d2ddea18f00665ce8623e36bd4e3c7c5`, `F_ad61ab143223efbc24c7d2583be69251`, `F_d09bf41544a3365a46c9077ebb5e35c3`, `F_fbd7939d674997cdb4692d34de8633c4`, `F_28dd2c7955ce926456240b2ff0100bde`, `F_35f4a8d465e6e1edc05f3d8ab658c551`, `F_d1fe173d08e959397adf34b1d77e88d7`, `F_f033ab37c30201f73f142449d037028d`, `F_43ec517d68b6edd3015b3edc9a11367b`, `F_9778d5d219c5080b9a6a17bef029331c`, `F_fe9fc289c3ff0af142b6d3bead98a923`, `F_68d30a9594728bc39aa24be94b319d21`, `F_3ef815416f775098fe977004015c6193`, `F_93db85ed909c13838ff95ccfa94cebd9`, `F_c7e1249ffc03eb9ded908c236bd1996d`, `F_2a38a4a9316c49e5a833517c45d31070`, `F_7647966b7343c29048673252e490f736`, `F_8613985ec49eb8f757ae6439e879bb2a`, `F_54229abfcfa5649e7003b83dd4755294`, `F_92cc227532d17e56e07902b254dfad10`, `F_98dce83da57b0395e163467c9dae521b`, `F_f4b9ec30ad9f68f89b29639786cb62ef`, `F_812b4ba287f5ee0bc9d43bbf5bbe87fb`, `F_26657d5ff9020d2abefe558796b99584`, `F_e2ef524fbf3d9fe611d5a8e90fefdc9c`, `F_ed3d2c21991e3bef5e069713af9fa6ca`, `F_ac627ab1ccbdb62ec96e702f07f6425b`, `F_f899139df5e1059396431415e770c6dd`, `F_38b3eff8baf56627478ec76a704e9b52`, `F_ec8956637a99787bd197eacd77acce5e`, `F_6974ce5ac660610b44d9b9fed0ff9548`, `F_c9e1074f5b3f9fc8ea15d152add07294`, `F_65b9eea6e1cc6bb9f0cd2a47751a186f`, `F_f0935e4cd5920aa6c7c996a5ee53a70f`, `F_a97da629b098b75c294dffdc3e463904`, `F_a3c65c2974270fd093ee8a9bf8ae7d0b`, `F_2723d092b63885e0d7c260cc007e8b9d`, `F_5f93f983524def3dca464469d2cf9f3e`, `F_698d51a19d8a121ce581499d7b701668`, `F_7f6ffaa6bb0b408017b62254211691b5`, `F_73278a4a86960eeb576a8fd4c9ec6997`, `F_5fd0b37cd7dbbb00f97ba6ce92bf5add`, `F_2b44928ae11fb9384c4cf38708677c48`, `F_c45147dee729311ef5b5c3003946c48f`, `F_eb160de1de89d9058fcb0b968dbbbd68`, `F_5ef059938ba799aaa845e1c2e8a762bd`, `F_07e1cd7dca89a1678042477183b7ac3f`, `F_da4fb5c6e93e74d3df8527599fa62642`, `F_4c56ff4ce4aaf9573aa5dff913df997a`, `F_a0a080f42e6f13b3a2df133f073095dd`, `F_202cb962ac59075b964b07152d234b70`, `F_c8ffe9a587b126f152ed3d89a146b445`, `F_3def184ad8f4755ff269862ea77393dd`, `F_069059b7ef840f0c74a814ec9237b6ec`, `F_ec5decca5ed3d6b8079e2e7e7bacc9f2`, `F_76dc611d6ebaafc66cc0879c71b5db5c`, `F_d1f491a404d6854880943e5c3cd9ca25`, `F_9b8619251a19057cff70779273e95aa6`, `F_1afa34a7f984eeabdbb0a7d494132ee5`, `F_65ded5353c5ee48d0b7d48c591b8f430`, `F_9fc3d7152ba9336a670e36d0ed79bc43`, `F_02522a2b2726fb0a03bb19f2d8d9524d`, `F_7f1de29e6da19d22b51c68001e7e0e54`, `F_42a0e188f5033bc65bf8d78622277c4e`, `F_3988c7f88ebcb58c6ce932b957b6f332`, `F_013d407166ec4fa56eb1e1f8cbe183b9`, `F_e00da03b685a0dd18fb6a08af0923de0`, `F_1385974ed5904a438616ff7bdb3f7439`, `F_0f28b5d49b3020afeecd95b4009adf4c`, `F_a8baa56554f96369ab93e4f3bb068c22`, `F_903ce9225fca3e988c2af215d4e544d3`, `F_0a09c8844ba8f0936c20bd791130d6b6`, `F_2b24d495052a8ce66358eb576b8912c8`, `F_a5e00132373a7031000fd987a3c9f87b`, `F_8d5e957f297893487bd98fa830fa6413`, `F_47d1e990583c9c67424d369f3414728e`, `F_f2217062e9a397a1dca429e7d70bc6ca`, `F_7ef605fc8dba5425d6965fbd4c8fbe1f`, `F_a8f15eda80c50adb0e71943adc8015cf`, `F_37a749d808e46495a8da1e5352d03cae`, `F_b3e3e393c77e35a4a3f3cbd1e429b5dc`, `F_1d7f7abc18fcb43975065399b0d1e48e`, `F_2a79ea27c279e471f4d180b08d62b00a`, `F_1c9ac0159c94d8d0cbedc973445af2da`, `F_6c4b761a28b734fe93831e3fb400ce87`, `F_06409663226af2f3114485aa4e0a23b4`, `F_140f6969d5213fd0ece03148e62e461e`, `F_b73ce398c39f506af761d2277d853a92`, `F_bd4c9ab730f5513206b999ec0d90d1fb`, `F_82aa4b0af34c2313a562076992e50aa3`, `F_0777d5c17d4066b82ab86dff8a46af6f`, `F_fa7cdfad1a5aaf8370ebeda47a1ff1c3`, `F_9766527f2b5d3e95d4a733fcfb77bd7e`, `F_7e7757b1e12abcb736ab9a754ffb617a`, `F_5878a7ab84fb43402106c575658472fa`, `F_006f52e9102a8d3be2fe5614f42ba989`, `F_3636638817772e42b59d74cff571fbb3`, `F_149e9677a5989fd342ae44213df68868`, `F_a4a042cf4fd6bfb47701cbc8a1653ada`, `F_1ff8a7b5dc7a7d1f0ed65aaa29c04b1e`, `F_f7e6c85504ce6e82442c770f7c8606f0`, `F_bf8229696f7a3bb4700cfddef19fa23f`, `F_82161242827b703e6acf9c726942a1e4`, `F_38af86134b65d0f10fe33d30dd76442e`, `F_96da2f590cd7246bbde0051047b0d6f7`, `F_8f85517967795eeef66c225f7883bdcb`, `F_8f53295a73878494e9bc8dd6c3c7104f`, `F_045117b0e0a11a242b9765e79cbf113f`, `F_fc221309746013ac554571fbd180e1c8`, `F_4c5bde74a8f110656874902f07378009`, `F_cedebb6e872f539bef8c3f919874e9d7`, `F_6cdd60ea0045eb7a6ec44c54d29ed402`, `F_eecca5b6365d9607ee5a9d336962c534`, `F_9872ed9fc22fc182d371c3e9ed316094`, `F_31fefc0e570cb3860f2a6d4b38c6490d`, `F_9dcb88e0137649590b755372b040afad`, `F_a2557a7b2e94197ff767970b67041697`, `F_cfecdb276f634854f3ef915e2e980c31`, `F_0aa1883c6411f7873cb83dacb17b0afc`, `F_58a2fc6ed39fd083f55d4182bf88826d`, `F_bd686fd640be98efaae0091fa301e613`, `F_a597e50502f5ff68e3e25b9114205d4a`, `F_0336dcbab05b9d5ad24f4333c7658a0e`, `F_084b6fbb10729ed4da8c3d3f5a3ae7c9`, `F_85d8ce590ad8981ca2c8286f79f59954`, `F_0e65972dce68dad4d52d063967f0a705`, `F_84d9ee44e457ddef7f2c4f25dc8fa865`, `F_3644a684f98ea8fe223c713b77189a77`, `F_757b505cfd34c64c85ca5b5690ee5293`, `F_854d6fae5ee42911677c739ee1734486`, `F_e2c0be24560d78c5e599c2a9c9d0bbd2`, `F_274ad4786c3abca69fa097b85867d9a4`, `F_eae27d77ca20db309e056e3d2dcd7d69`, `F_7eabe3a1649ffa2b3ff8c02ebfd5659f`, `F_69adc1e107f7f7d035d7baf04342e1ca`, `F_091d584fced301b442654dd8c23b3fc9`, `F_b1d10e7bafa4421218a51b1e1f1b0ba2`, `F_6f3ef77ac0e3619e98159e9b6febf557`, `F_eb163727917cbba1eea208541a643e74`, `F_1534b76d325a8f591b52d302e7181331`, `F_979d472a84804b9f647bc185a877a8b5`, `F_ca46c1b9512a7a8315fa3c5a946e8265`, `F_3b8a614226a953a8cd9526fca6fe9ba5`, `F_45fbc6d3e05ebd93369ce542e8f2322d`, `F_63dc7ed1010d3c3b8269faf0ba7491d4`, `F_e96ed478dab8595a7dbda4cbcbee168f`, `F_c0e190d8267e36708f955d7ab048990d`, `F_ec8ce6abb3e952a85b8551ba726a1227`, `F_060ad92489947d410d897474079c1477`, `F_bcbe3365e6ac95ea2c0343a2395834dd`, `F_115f89503138416a242f40fb7d7f338e`, `F_13fe9d84310e77f13a6d184dbf1232f3`, `F_d1c38a09acc34845c6be3a127a5aacaf`, `F_9cfdf10e8fc047a44b08ed031e1f0ed1`, `F_705f2172834666788607efbfca35afb3`, `F_74db120f0a8e5646ef5a30154e9f6deb`, `F_57aeee35c98205091e18d1140e9f38cf`, `F_6da9003b743b65f4c0ccd295cc484e57`, `F_9b04d152845ec0a378394003c96da594`, `F_be83ab3ecd0db773eb2dc1b0a17836a1`, `F_e165421110ba03099a1c0393373c5b43`, `F_289dff07669d7a23de0ef88d2f7129e7`, `F_577ef1154f3240ad5b9b413aa7346a1e`, `F_01161aaa0b6d1345dd8fe4e481144d84`, `F_539fd53b59e3bb12d203f45a912eeaf2`, `F_ac1dd209cbcc5e5d1c6e28598e8cbbe8`, `F_555d6702c950ecb729a966504af0a635`, `F_335f5352088d7d9bf74191e006d8e24c`, `F_f340f1b1f65b6df5b5e3f94d95b11daf`, `F_e4a6222cdb5b34375400904f03d8e6a5`, `F_cb70ab375662576bd1ac5aaf16b3fca4`, `F_9188905e74c28e489b44e954ec0b9bca`, `F_0266e33d3f546cb5436a10798e657d97`, `F_38db3aed920cf82ab059bfccbd02be6a`, `F_3cec07e9ba5f5bb252d13f5f431e4bbb`, `F_621bf66ddb7c962aa0d22ac97d69b793`, `F_077e29b11be80ab57e1a2ecabb7da330`, `F_6c9882bbac1c7093bd25041881277658`, `F_19f3cd308f1455b3fa09a282e0d496f4`, `F_03c6b06952c750899bb03d998e631860`, `F_c24cd76e1ce41366a4bbe8a49b02a028`, `F_c52f1bd66cc19d05628bd8bf27af3ad6`, `F_fe131d7f5a6b38b23cc967316c13dae2`, `F_f718499c1c8cef6730f9fd03c8125cab`, `F_d96409bf894217686ba124d7356686c9`, `F_502e4a16930e414107ee22b6198c578f`, `F_cfa0860e83a4c3a763a7e62d825349f7`, `F_a4f23670e1833f3fdb077ca70bbd5d66`, `F_b1a59b315fc9a3002ce38bbe070ec3f5`, `F_36660e59856b4de58a219bcf4e27eba3`, `F_8c19f571e251e61cb8dd3612f26d5ecf`, `F_d6baf65e0b240ce177cf70da146c8dc8`, `F_e56954b4f6347e897f954495eab16a88`, `F_f7664060cc52bc6f3d620bcedc94a4b6`, `F_eda80a3d5b344bc40f3bc04f65b7a357`, `F_8f121ce07d74717e0b1f21d122e04521`, `F_06138bc5af6023646ede0e1f7c1eac75`, `F_39059724f73a9969845dfe4146c5660e`, `F_7f100b7b36092fb9b06dfb4fac360931`, `F_7a614fd06c325499f1680b9896beedeb`, `F_4734ba6f3de83d861c3176a6273cac6d`, `F_d947bf06a885db0d477d707121934ff8`, `F_63923f49e5241343aa7acb6a06a751e7`, `F_db8e1af0cb3aca1ae2d0018624204529`, `F_20f07591c6fcb220ffe637cda29bb3f6`, `F_07cdfd23373b17c6b337251c22b7ea57`, `F_d395771085aab05244a4fb8fd91bf4ee`, `F_92c8c96e4c37100777c7190b76d28233`, `F_e3796ae838835da0b6f6ea37bcf8bcb7`, `F_6a9aeddfc689c1d0e3b9ccc3ab651bc5`, `F_0f49c89d1e7298bb9930789c8ed59d48`, `F_46ba9f2a6976570b0353203ec4474217`, `F_0e01938fc48a2cfb5f2217fbfb00722d`, `F_16a5cdae362b8d27a1d8f8c7b78b4330`, `F_918317b57931b6b7a7d29490fe5ec9f9`, `F_48aedb8880cab8c45637abc7493ecddd`, `F_839ab46820b524afda05122893c2fe8e`, `F_f90f2aca5c640289d0a29417bcb63a37`, `F_9c838d2e45b2ad1094d42f4ef36764f6`, `F_1700002963a49da13542e0726b7bb758`, `F_53c3bce66e43be4f209556518c2fcb54`, `F_6883966fd8f918a4aa29be29d2c386fb`, `F_49182f81e6a13cf5eaa496d51fea6406`, `F_d296c101daa88a51f6ca8cfc1ac79b50`, `F_9fd81843ad7f202f26c1a174c7357585`, `F_26e359e83860db1d11b6acca57d8ea88`, `F_ef0d3930a7b6c95bd2b32ed45989c61f`, `F_94f6d7e04a4d452035300f18b984988c`, `F_34ed066df378efacc9b924ec161e7639`, `F_577bcc914f9e55d5e4e4f82f9f00e7d4`, `F_11b9842e0a271ff252c1903e7132cd68`, `F_37bc2f75bf1bcfe8450a1a41c200364c`, `F_496e05e1aea0a9c4655800e8a7b9ea28`, `F_b2eb7349035754953b57a32e2841bda5`, `F_8e98d81f8217304975ccb23337bb5761`, `F_a8c88a0055f636e4a163a5e3d16adab7`, `F_eddea82ad2755b24c4e168c5fc2ebd40`, `F_06eb61b839a0cefee4967c67ccb099dc`, `F_9dfcd5e558dfa04aaf37f137a1d9d3e5`, `F_950a4152c2b4aa3ad78bdd6b366cc179`, `F_158f3069a435b314a80bdcb024f8e422`, `F_758874998f5bd0c393da094e1967a72b`, `F_ad13a2a07ca4b7642959dc0c4c740ab6`, `F_3fe94a002317b5f9259f82690aeea4cd`, `F_5b8add2a5d98b1a652ea7fd72d942dac`, `F_432aca3a1e345e339f35a30c8f65edce`, `F_8d3bba7425e7c98c50f52ca1b52d3735`, `F_320722549d1751cf3f247855f937b982`, `F_caf1a3dfb505ffed0d024130f58c5cfa`, `F_5737c6ec2e0716f3d8a7a5c4e0de0d9a`, `F_bc6dc48b743dc5d013b1abaebd2faed2`, `F_f2fc990265c712c49d51a18a32b39f0c`, `F_89f0fd5c927d466d6ec9a21b9ac34ffa`, `F_a666587afda6e89aec274a3657558a27`, `F_b83aac23b9528732c23cc7352950e880`, `F_cd00692c3bfe59267d5ecfac5310286c`, `F_6faa8040da20ef399b63a72d0e4ab575`, `F_fe73f687e5bc5280214e0486b273a5f9`) VALUES (NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +UNLOCK TABLES; +/*!40000 ALTER TABLE `t1` ENABLE KEYS */; + +/*!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; diff --git a/mysql-test/r/olap.result b/mysql-test/r/olap.result index 341d51033f2..013952403d7 100644 --- a/mysql-test/r/olap.result +++ b/mysql-test/r/olap.result @@ -405,3 +405,36 @@ a m 2 2 NULL 3 DROP TABLE t1; +CREATE TABLE t1 (a int(11)); +INSERT INTO t1 VALUES (1),(2); +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d +GROUP BY a; +a SUM(a) SUM(a)+1 +1 1 2 +2 2 3 +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d +GROUP BY a WITH ROLLUP; +a SUM(a) SUM(a)+1 +1 1 2 +2 2 3 +NULL 3 4 +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d +GROUP BY a; +a SUM(a) SUM(a)+1 +1 1 2 +2 2 3 +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d +GROUP BY a WITH ROLLUP; +a SUM(a) SUM(a)+1 +1 1 2 +2 2 3 +NULL 3 4 +SELECT a, SUM(a), SUM(a)+1, CONCAT(SUM(a),'x'), SUM(a)+SUM(a), SUM(a) +FROM (SELECT 1 a, 2 b UNION SELECT 2,3 UNION SELECT 5,6 ) d +GROUP BY a WITH ROLLUP; +a SUM(a) SUM(a)+1 CONCAT(SUM(a),'x') SUM(a)+SUM(a) SUM(a) +1 1 2 1x 2 1 +2 2 3 2x 4 2 +5 5 6 5x 10 5 +NULL 8 9 8x 16 8 +DROP TABLE t1; diff --git a/mysql-test/r/outfile.result b/mysql-test/r/outfile.result index 4dc09f65b7c..5eb24a78ef0 100644 Binary files a/mysql-test/r/outfile.result and b/mysql-test/r/outfile.result differ diff --git a/mysql-test/r/ps_grant.result b/mysql-test/r/ps_grant.result index 4c60bb03165..0787f30c643 100644 --- a/mysql-test/r/ps_grant.result +++ b/mysql-test/r/ps_grant.result @@ -1,7 +1,3 @@ -prepare stmt4 from ' show full processlist '; -execute stmt4; -Id User Host db Command Time State Info -number root localhost test Query time NULL show full processlist test_sequence ------ grant/revoke/drop affects a parallel session test ------ show grants for second_user@localhost ; @@ -79,3 +75,7 @@ commit ; show grants for second_user@localhost ; ERROR 42000: There is no such grant defined for user 'second_user' on host 'localhost' drop database mysqltest; +prepare stmt4 from ' show full processlist '; +execute stmt4; +Id User Host db Command Time State Info +number root localhost test Query time NULL show full processlist diff --git a/mysql-test/r/reserved_win_names.require b/mysql-test/r/reserved_win_names.require new file mode 100644 index 00000000000..7f803aca482 --- /dev/null +++ b/mysql-test/r/reserved_win_names.require @@ -0,0 +1,2 @@ +Variable_name Value +lower_case_table_names 1 diff --git a/mysql-test/r/reserved_win_names.result b/mysql-test/r/reserved_win_names.result new file mode 100644 index 00000000000..eaa0f71513f --- /dev/null +++ b/mysql-test/r/reserved_win_names.result @@ -0,0 +1,7 @@ +use COM1; +ERROR 42000: Unknown database 'com1' +use LPT1; +ERROR 42000: Unknown database 'lpt1' +use PRN; +ERROR 42000: Unknown database 'prn' + diff --git a/mysql-test/r/rpl_log.result b/mysql-test/r/rpl_log.result index 2f8a54369c9..7813d4d779d 100644 --- a/mysql-test/r/rpl_log.result +++ b/mysql-test/r/rpl_log.result @@ -67,14 +67,14 @@ master-bin.000002 110 Query 1 110 use `test`; create table t1 (n int) master-bin.000002 168 Query 1 168 use `test`; insert into t1 values (1) master-bin.000002 228 Query 1 228 use `test`; drop table t1 show binary logs; -Log_name -master-bin.000001 -master-bin.000002 +Log_name File_size +master-bin.000001 0 +master-bin.000002 276 start slave; show binary logs; -Log_name -slave-bin.000001 -slave-bin.000002 +Log_name File_size +slave-bin.000001 0 +slave-bin.000002 170 show binlog events in 'slave-bin.000001' from 4; Log_name Pos Event_type Server_id Orig_log_pos Info slave-bin.000001 4 Start 2 4 Server ver: VERSION, Binlog ver: 3 diff --git a/mysql-test/r/rpl_rotate_logs.result b/mysql-test/r/rpl_rotate_logs.result index 62e5522fad9..66eef482a63 100644 --- a/mysql-test/r/rpl_rotate_logs.result +++ b/mysql-test/r/rpl_rotate_logs.result @@ -26,10 +26,10 @@ create table t2(m int not null auto_increment primary key); insert into t2 values (34),(67),(123); flush logs; show binary logs; -Log_name -master-bin.000001 -master-bin.000002 -master-bin.000003 +Log_name File_size +master-bin.000001 0 +master-bin.000002 0 +master-bin.000003 4 create table t3 select * from temp_table; select * from t3; a @@ -42,18 +42,18 @@ set global sql_slave_skip_counter=1; start slave; purge master logs to 'master-bin.000002'; show master logs; -Log_name -master-bin.000002 -master-bin.000003 +Log_name File_size +master-bin.000002 0 +master-bin.000003 229 purge binary logs to 'master-bin.000002'; show binary logs; -Log_name -master-bin.000002 -master-bin.000003 +Log_name File_size +master-bin.000002 0 +master-bin.000003 229 purge master logs before now(); show binary logs; -Log_name -master-bin.000003 +Log_name File_size +master-bin.000003 229 insert into t2 values (65); 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 @@ -73,9 +73,9 @@ count(*) 100 create table t4 select * from temp_table; show binary logs; -Log_name -master-bin.000003 -master-bin.000004 +Log_name File_size +master-bin.000003 0 +master-bin.000004 2886 show master status; File Position Binlog_Do_DB Binlog_Ignore_DB master-bin.000004 2886 diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 50300ed9b76..c39d1a322e4 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2451,7 +2451,61 @@ a select distinct distinct * from t1; a select all distinct * from t1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'distinct * from t1' at line 1 +ERROR HY000: Incorrect usage of ALL and DISTINCT select distinct all * from t1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'all * from t1' at line 1 +ERROR HY000: Incorrect usage of ALL and DISTINCT +drop table t1; +CREATE TABLE t1 ( +kunde_intern_id int(10) unsigned NOT NULL default '0', +kunde_id int(10) unsigned NOT NULL default '0', +FK_firma_id int(10) unsigned NOT NULL default '0', +aktuell enum('Ja','Nein') NOT NULL default 'Ja', +vorname varchar(128) NOT NULL default '', +nachname varchar(128) NOT NULL default '', +geloescht enum('Ja','Nein') NOT NULL default 'Nein', +firma varchar(128) NOT NULL default '' +); +INSERT INTO t1 VALUES +(3964,3051,1,'Ja','Vorname1','1Nachname','Nein','Print Schau XXXX'), +(3965,3051111,1,'Ja','Vorname1111','1111Nachname','Nein','Print Schau XXXX'); +SELECT kunde_id ,FK_firma_id ,aktuell, vorname, nachname, geloescht FROM t1 +WHERE +( +( +( '' != '' AND firma LIKE CONCAT('%', '', '%')) +OR +(vorname LIKE CONCAT('%', 'Vorname1', '%') AND +nachname LIKE CONCAT('%', '1Nachname', '%') AND +'Vorname1' != '' AND 'xxxx' != '') +) +AND +( +aktuell = 'Ja' AND geloescht = 'Nein' AND FK_firma_id = 2 +) +) +; +kunde_id FK_firma_id aktuell vorname nachname geloescht +SELECT kunde_id ,FK_firma_id ,aktuell, vorname, nachname, +geloescht FROM t1 +WHERE +( +( +aktuell = 'Ja' AND geloescht = 'Nein' AND FK_firma_id = 2 +) +AND +( +( '' != '' AND firma LIKE CONCAT('%', '', '%') ) +OR +( vorname LIKE CONCAT('%', 'Vorname1', '%') AND +nachname LIKE CONCAT('%', '1Nachname', '%') AND 'Vorname1' != '' AND +'xxxx' != '') +) +) +; +kunde_id FK_firma_id aktuell vorname nachname geloescht +SELECT COUNT(*) FROM t1 WHERE +( 0 OR (vorname LIKE '%Vorname1%' AND nachname LIKE '%1Nachname%' AND 1)) +AND FK_firma_id = 2; +COUNT(*) +0 drop table t1; diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index 8f17f545d1a..1f3542802a7 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -2697,3 +2697,27 @@ select (1,2,3) = (select * from t1); ERROR 21000: Operand should contain 3 column(s) select (select * from t1) = (1,2,3); ERROR 21000: Operand should contain 2 column(s) +drop table t1 +#; +CREATE TABLE `t1` ( +`itemid` bigint(20) unsigned NOT NULL auto_increment, +`sessionid` bigint(20) unsigned default NULL, +`time` int(10) unsigned NOT NULL default '0', +`type` set('A','D','E','F','G','I','L','N','U') collate latin1_general_ci NOT +NULL default '', +`data` text collate latin1_general_ci NOT NULL, +PRIMARY KEY (`itemid`) +) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; +INSERT INTO `t1` VALUES (1, 1, 1, 'D', ''); +CREATE TABLE `t2` ( +`sessionid` bigint(20) unsigned NOT NULL auto_increment, +`pid` int(10) unsigned NOT NULL default '0', +`date` int(10) unsigned NOT NULL default '0', +`ip` varchar(15) collate latin1_general_ci NOT NULL default '', +PRIMARY KEY (`sessionid`) +) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; +INSERT INTO `t2` VALUES (1, 1, 1, '10.10.10.1'); +SELECT s.ip, count( e.itemid ) FROM `t1` e JOIN t2 s ON s.sessionid = e.sessionid WHERE e.sessionid = ( SELECT sessionid FROM t2 ORDER BY sessionid DESC LIMIT 1 ) GROUP BY s.ip HAVING count( e.itemid ) >0 LIMIT 0 , 30; +ip count( e.itemid ) +10.10.10.1 1 +drop tables t1,t2; diff --git a/mysql-test/suppress.purify b/mysql-test/suppress.purify new file mode 100644 index 00000000000..58553130c51 --- /dev/null +++ b/mysql-test/suppress.purify @@ -0,0 +1,10 @@ +suppress UMR rw_read_held; mi_open; ha_myisam::open64; handler::ha_open; openfrm +suppress UMR my_end; main +suppress UMR _doprnt; fprintf; my_end; main +suppress umr rw_read_held; mi_open +suppress umr _putmsg; putmsg; _tx_sndudata +suppress umr rw_read_held; Query_cache::store_query(THD*,st_table_list*); mysql_execute_command(THD*) +suppress sig ...; _select; select; handle_connections_sockets; main; _start +suppress sig ...; read; vio_read; my_real_read(st_net*,unsigned long*); my_net_read; do_command(THD*) +suppress sig ...; read; vio_read; my_real_read(st_net*,unsigned long*); my_net_read; net_safe_read +suppress sig ...; write; vio_write; net_real_write; net_write_buff(st_net*,const char*,unsigned long); my_net_write diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index 92651442041..c3ba2c8a7a4 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -165,56 +165,6 @@ INSERT DELAYED INTO t1 VALUES(1),(2),(3); ALTER TABLE t1 ENABLE KEYS; drop table t1; -# -# Test that data get converted when character set is changed -# Test that data doesn't get converted when src or dst is BINARY/BLOB -# -set names koi8r; -create table t1 (a char(10) character set koi8r); -insert into t1 values ('ΤΕΣΤ'); -select a,hex(a) from t1; -alter table t1 change a a char(10) character set cp1251; -select a,hex(a) from t1; -alter table t1 change a a binary(10); -select a,hex(a) from t1; -alter table t1 change a a char(10) character set cp1251; -select a,hex(a) from t1; -alter table t1 change a a char(10) character set koi8r; -select a,hex(a) from t1; -alter table t1 change a a varchar(10) character set cp1251; -select a,hex(a) from t1; -alter table t1 change a a char(10) character set koi8r; -select a,hex(a) from t1; -alter table t1 change a a text character set cp1251; -select a,hex(a) from t1; -alter table t1 change a a char(10) character set koi8r; -select a,hex(a) from t1; -delete from t1; - -# -# Test ALTER TABLE .. CHARACTER SET .. -# -show create table t1; -alter table t1 DEFAULT CHARACTER SET latin1; -show create table t1; -alter table t1 CONVERT TO CHARACTER SET latin1; -show create table t1; -alter table t1 DEFAULT CHARACTER SET cp1251; -show create table t1; - -drop table t1; - -# -# Bug#2821 -# Test that table CHARACTER SET does not affect blobs -# -create table t1 (myblob longblob,mytext longtext) -default charset latin1 collate latin1_general_cs; -show create table t1; -alter table t1 character set latin2; -show create table t1; -drop table t1; - # # Test ALTER TABLE ENABLE/DISABLE keys when things are locked # @@ -277,6 +227,97 @@ ALTER TABLE t1 DISABLE KEYS; SHOW INDEX FROM t1; DROP TABLE t1; +# +# BUG#4717 - check for valid table names +# +create table t1 (a int); +--error 1103 +alter table t1 rename to `t1\\`; +--error 1103 +rename table t1 to `t1\\`; +drop table t1; + +# +# BUG#6236 - ALTER TABLE MODIFY should set implicit NOT NULL on PK columns +# +drop table if exists t1, t2; +create table t1 ( a varchar(10) not null primary key ) engine=myisam; +create table t2 ( a varchar(10) not null primary key ) engine=merge union=(t1); +flush tables; +alter table t1 modify a varchar(10); +show create table t2; +flush tables; +alter table t1 modify a varchar(10) not null; +show create table t2; +drop table if exists t1, t2; + +# The following is also part of bug #6236 (CREATE TABLE didn't properly count +# not null columns for primary keys) + +create table t1 (a int, b int, c int, d int, e int, f int, g int, h int,i int, primary key (a,b,c,d,e,f,g,i,h)) engine=MyISAM; +insert into t1 (a) values(1); +--replace_column 7 X 8 X 9 X 10 X 11 X 12 X 13 X 14 X +show table status like 't1'; +alter table t1 modify a int; +--replace_column 7 X 8 X 9 X 10 X 11 X 12 X 13 X 14 X +show table status like 't1'; +drop table t1; +create table t1 (a int not null, b int not null, c int not null, d int not null, e int not null, f int not null, g int not null, h int not null,i int not null, primary key (a,b,c,d,e,f,g,i,h)) engine=MyISAM; +insert into t1 (a) values(1); +--replace_column 7 X 8 X 9 X 10 X 11 X 12 X 13 X 14 X +show table status like 't1'; +drop table t1; + +# +# Test that data get converted when character set is changed +# Test that data doesn't get converted when src or dst is BINARY/BLOB +# +set names koi8r; +create table t1 (a char(10) character set koi8r); +insert into t1 values ('ΤΕΣΤ'); +select a,hex(a) from t1; +alter table t1 change a a char(10) character set cp1251; +select a,hex(a) from t1; +alter table t1 change a a binary(10); +select a,hex(a) from t1; +alter table t1 change a a char(10) character set cp1251; +select a,hex(a) from t1; +alter table t1 change a a char(10) character set koi8r; +select a,hex(a) from t1; +alter table t1 change a a varchar(10) character set cp1251; +select a,hex(a) from t1; +alter table t1 change a a char(10) character set koi8r; +select a,hex(a) from t1; +alter table t1 change a a text character set cp1251; +select a,hex(a) from t1; +alter table t1 change a a char(10) character set koi8r; +select a,hex(a) from t1; +delete from t1; + +# +# Test ALTER TABLE .. CHARACTER SET .. +# +show create table t1; +alter table t1 DEFAULT CHARACTER SET latin1; +show create table t1; +alter table t1 CONVERT TO CHARACTER SET latin1; +show create table t1; +alter table t1 DEFAULT CHARACTER SET cp1251; +show create table t1; + +drop table t1; + +# +# Bug#2821 +# Test that table CHARACTER SET does not affect blobs +# +create table t1 (myblob longblob,mytext longtext) +default charset latin1 collate latin1_general_cs; +show create table t1; +alter table t1 character set latin2; +show create table t1; +drop table t1; + # # Bug 2361 (Don't drop UNIQUE with DROP PRIMARY KEY) # @@ -296,16 +337,6 @@ alter table t1 drop key no_such_key; alter table t1 drop key a; drop table t1; -# -# BUG#4717 - check for valid table names -# -create table t1 (a int); ---error 1103 -alter table t1 rename to `t1\\`; ---error 1103 -rename table t1 to `t1\\`; -drop table t1; - # # Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns # diff --git a/mysql-test/t/auto_increment.test b/mysql-test/t/auto_increment.test index 8e11a3d68a5..ef344df5fb6 100644 --- a/mysql-test/t/auto_increment.test +++ b/mysql-test/t/auto_increment.test @@ -206,3 +206,15 @@ alter table t1 modify b varchar(255); insert into t1 values (0,4); select * from t1; drop table t1; + +# +# BUG #10045: Problem with composite AUTO_INCREMENT + BLOB key + +CREATE TABLE t1 ( a INT AUTO_INCREMENT, b BLOB, PRIMARY KEY (a,b(10))); +INSERT INTO t1 (b) VALUES ('aaaa'); +CHECK TABLE t1; +INSERT INTO t1 (b) VALUES (''); +CHECK TABLE t1; +INSERT INTO t1 (b) VALUES ('bbbb'); +CHECK TABLE t1; +DROP TABLE IF EXISTS t1; diff --git a/mysql-test/t/grant_cache-master.opt b/mysql-test/t/grant_cache-master.opt deleted file mode 100644 index cfdce628e74..00000000000 --- a/mysql-test/t/grant_cache-master.opt +++ /dev/null @@ -1 +0,0 @@ ---set-variable=query_cache_size=1355776 diff --git a/mysql-test/t/grant_cache.test b/mysql-test/t/grant_cache.test index 7d6f7262f0a..0fb0b3c2fc0 100644 --- a/mysql-test/t/grant_cache.test +++ b/mysql-test/t/grant_cache.test @@ -10,6 +10,8 @@ drop table if exists test.t1,mysqltest.t1,mysqltest.t2; drop database if exists mysqltest; --enable_warnings +set GLOBAL query_cache_size=1355776; + reset query cache; flush status; connect (root,localhost,root,,test,$MASTER_MYPORT,master.sock); @@ -145,3 +147,5 @@ delete from mysql.columns_priv where user in ("mysqltest_1","mysqltest_2","mysql flush privileges; drop table test.t1,mysqltest.t1,mysqltest.t2; drop database mysqltest; + +set GLOBAL query_cache_size=default; diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index 4e18cfb224b..201489c0ddb 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -1177,3 +1177,13 @@ create table t1(a int(1) , b int(1)) engine=innodb; insert into t1 values ('1111', '3333'); select distinct concat(a, b) from t1; drop table t1; + +# +# BUG#7709 test case - Boolean fulltext query against unsupported +# engines does not fail +# + +CREATE TABLE t1 ( a char(10) ) ENGINE=InnoDB; +--error 1214; +SELECT a FROM t1 WHERE MATCH (a) AGAINST ('test' IN BOOLEAN MODE); +DROP TABLE t1; diff --git a/mysql-test/t/insert_update.test b/mysql-test/t/insert_update.test index 0fa366586b3..f5857840588 100644 --- a/mysql-test/t/insert_update.test +++ b/mysql-test/t/insert_update.test @@ -85,10 +85,14 @@ DROP TABLE t2; # Bug#9725 - "disapearing query/hang" and "unknown error" with "on duplicate key update" # INSERT INGORE...UPDATE gives bad error or breaks protocol. # -create table t1 (a int not null unique); +create table t1 (a int not null unique) engine=myisam; insert into t1 values (1),(2); insert ignore into t1 select 1 on duplicate key update a=2; select * from t1; insert ignore into t1 select a from t1 on duplicate key update a=a+1 ; select * from t1; +insert into t1 select 1 on duplicate key update a=2; +select * from t1; +--error 1062 +insert into t1 select a from t1 on duplicate key update a=a+1 ; drop table t1; diff --git a/mysql-test/t/lock.test b/mysql-test/t/lock.test index 26fc4e32bda..261c01b405c 100644 --- a/mysql-test/t/lock.test +++ b/mysql-test/t/lock.test @@ -59,3 +59,17 @@ unlock tables; lock tables t1 write, t1 as t1_alias read; insert into t1 select index1,nr from t1 as t1_alias; drop table t1,t2; + +# +# Bug7241 - Invalid response when DELETE .. USING and LOCK TABLES used. +# +create table t1 ( a int(11) not null auto_increment, primary key(a)); +create table t2 ( a int(11) not null auto_increment, primary key(a)); +lock tables t1 write, t2 read; +delete from t1 using t1,t2 where t1.a=t2.a; +delete t1 from t1,t2 where t1.a=t2.a; +--error 1099 +delete from t2 using t1,t2 where t1.a=t2.a; +--error 1099 +delete t2 from t1,t2 where t1.a=t2.a; +drop table t1,t2; diff --git a/mysql-test/t/lowercase_table.test b/mysql-test/t/lowercase_table.test index ee8dc403981..ca81c7c66bc 100644 --- a/mysql-test/t/lowercase_table.test +++ b/mysql-test/t/lowercase_table.test @@ -82,3 +82,14 @@ create table t2 like T1; drop table t1, t2; show tables; + +# +#Bug 9148: Denial of service +# +--error 1049 +use lpt1; +--error 1049 +use com1; +--error 1049 +use prn; + diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test index 508f9da225e..999dd2bed9b 100644 --- a/mysql-test/t/merge.test +++ b/mysql-test/t/merge.test @@ -306,3 +306,15 @@ show index from t3; drop table t1, t2, t3; +# +# Bug#10400 - Improperly-defined MERGE table crashes with INSERT ... ON DUPLICATE KEY UPDATE +# +CREATE TABLE t1 ( a INT AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), UNIQUE (b) ) + ENGINE=MyISAM; +CREATE TABLE t2 ( a INT AUTO_INCREMENT, b VARCHAR(10), INDEX (a), INDEX (b) ) + ENGINE=MERGE UNION (t1) INSERT_METHOD=FIRST; +INSERT INTO t2 (b) VALUES (1) ON DUPLICATE KEY UPDATE b=2; +INSERT INTO t2 (b) VALUES (1) ON DUPLICATE KEY UPDATE b=3; +SELECT b FROM t2; +DROP TABLE t1, t2; + diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index 46a6499adad..7d7985fd8ac 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -560,3 +560,18 @@ update t1 set c2='A B' where c1=2; check table t1; drop table t1; + +# BUG#9622 - ANALYZE TABLE and ALTER TABLE .. ENABLE INDEX produce +# different statistics on the same table with NULL values. +create table t1 (a int, key(a)); + +insert into t1 values (1),(2),(3),(4),(NULL),(NULL),(NULL),(NULL); +analyze table t1; +show keys from t1; + +alter table t1 disable keys; +alter table t1 enable keys; +show keys from t1; + +drop table t1; + diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index b89b482a0f9..2681e690ff5 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -195,3 +195,342 @@ INSERT INTO t1 VALUES ("1234567890123456789012345678901234567890"), --exec $MYSQL_DUMP --insert-ignore --skip-comments test t1 --exec $MYSQL_DUMP --insert-ignore --skip-comments --delayed-insert test t1 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, + F_eccbc87e4b5ce2fe28308fd9f2a7baf3 int, + F_a87ff679a2f3e71d9181a67b7542122c int, + F_e4da3b7fbbce2345d7772b0674a318d5 int, + F_1679091c5a880faf6fb5e6087eb1b2dc int, + F_8f14e45fceea167a5a36dedd4bea2543 int, + F_c9f0f895fb98ab9159f51fd0297e236d int, + F_45c48cce2e2d7fbdea1afc51c7c6ad26 int, + F_d3d9446802a44259755d38e6d163e820 int, + F_6512bd43d9caa6e02c990b0a82652dca int, + F_c20ad4d76fe97759aa27a0c99bff6710 int, + F_c51ce410c124a10e0db5e4b97fc2af39 int, + F_aab3238922bcc25a6f606eb525ffdc56 int, + F_9bf31c7ff062936a96d3c8bd1f8f2ff3 int, + F_c74d97b01eae257e44aa9d5bade97baf int, + F_70efdf2ec9b086079795c442636b55fb int, + F_6f4922f45568161a8cdf4ad2299f6d23 int, + F_1f0e3dad99908345f7439f8ffabdffc4 int, + F_98f13708210194c475687be6106a3b84 int, + F_3c59dc048e8850243be8079a5c74d079 int, + F_b6d767d2f8ed5d21a44b0e5886680cb9 int, + F_37693cfc748049e45d87b8c7d8b9aacd int, + F_1ff1de774005f8da13f42943881c655f int, + F_8e296a067a37563370ded05f5a3bf3ec int, + F_4e732ced3463d06de0ca9a15b6153677 int, + F_02e74f10e0327ad868d138f2b4fdd6f0 int, + F_33e75ff09dd601bbe69f351039152189 int, + F_6ea9ab1baa0efb9e19094440c317e21b int, + F_34173cb38f07f89ddbebc2ac9128303f int, + F_c16a5320fa475530d9583c34fd356ef5 int, + F_6364d3f0f495b6ab9dcf8d3b5c6e0b01 int, + F_182be0c5cdcd5072bb1864cdee4d3d6e int, + F_e369853df766fa44e1ed0ff613f563bd int, + F_1c383cd30b7c298ab50293adfecb7b18 int, + F_19ca14e7ea6328a42e0eb13d585e4c22 int, + F_a5bfc9e07964f8dddeb95fc584cd965d int, + F_a5771bce93e200c36f7cd9dfd0e5deaa int, + F_d67d8ab4f4c10bf22aa353e27879133c int, + F_d645920e395fedad7bbbed0eca3fe2e0 int, + F_3416a75f4cea9109507cacd8e2f2aefc int, + F_a1d0c6e83f027327d8461063f4ac58a6 int, + F_17e62166fc8586dfa4d1bc0e1742c08b int, + F_f7177163c833dff4b38fc8d2872f1ec6 int, + F_6c8349cc7260ae62e3b1396831a8398f int, + F_d9d4f495e875a2e075a1a4a6e1b9770f int, + F_67c6a1e7ce56d3d6fa748ab6d9af3fd7 int, + F_642e92efb79421734881b53e1e1b18b6 int, + F_f457c545a9ded88f18ecee47145a72c0 int, + F_c0c7c76d30bd3dcaefc96f40275bdc0a int, + F_2838023a778dfaecdc212708f721b788 int, + F_9a1158154dfa42caddbd0694a4e9bdc8 int, + F_d82c8d1619ad8176d665453cfb2e55f0 int, + F_a684eceee76fc522773286a895bc8436 int, + F_b53b3a3d6ab90ce0268229151c9bde11 int, + F_9f61408e3afb633e50cdf1b20de6f466 int, + F_72b32a1f754ba1c09b3695e0cb6cde7f int, + F_66f041e16a60928b05a7e228a89c3799 int, + F_093f65e080a295f8076b1c5722a46aa2 int, + F_072b030ba126b2f4b2374f342be9ed44 int, + F_7f39f8317fbdb1988ef4c628eba02591 int, + F_44f683a84163b3523afe57c2e008bc8c int, + F_03afdbd66e7929b125f8597834fa83a4 int, + F_ea5d2f1c4608232e07d3aa3d998e5135 int, + F_fc490ca45c00b1249bbe3554a4fdf6fb int, + F_3295c76acbf4caaed33c36b1b5fc2cb1 int, + F_735b90b4568125ed6c3f678819b6e058 int, + F_a3f390d88e4c41f2747bfa2f1b5f87db int, + F_14bfa6bb14875e45bba028a21ed38046 int, + F_7cbbc409ec990f19c78c75bd1e06f215 int, + F_e2c420d928d4bf8ce0ff2ec19b371514 int, + F_32bb90e8976aab5298d5da10fe66f21d int, + F_d2ddea18f00665ce8623e36bd4e3c7c5 int, + F_ad61ab143223efbc24c7d2583be69251 int, + F_d09bf41544a3365a46c9077ebb5e35c3 int, + F_fbd7939d674997cdb4692d34de8633c4 int, + F_28dd2c7955ce926456240b2ff0100bde int, + F_35f4a8d465e6e1edc05f3d8ab658c551 int, + F_d1fe173d08e959397adf34b1d77e88d7 int, + F_f033ab37c30201f73f142449d037028d int, + F_43ec517d68b6edd3015b3edc9a11367b int, + F_9778d5d219c5080b9a6a17bef029331c int, + F_fe9fc289c3ff0af142b6d3bead98a923 int, + F_68d30a9594728bc39aa24be94b319d21 int, + F_3ef815416f775098fe977004015c6193 int, + F_93db85ed909c13838ff95ccfa94cebd9 int, + F_c7e1249ffc03eb9ded908c236bd1996d int, + F_2a38a4a9316c49e5a833517c45d31070 int, + F_7647966b7343c29048673252e490f736 int, + F_8613985ec49eb8f757ae6439e879bb2a int, + F_54229abfcfa5649e7003b83dd4755294 int, + F_92cc227532d17e56e07902b254dfad10 int, + F_98dce83da57b0395e163467c9dae521b int, + F_f4b9ec30ad9f68f89b29639786cb62ef int, + F_812b4ba287f5ee0bc9d43bbf5bbe87fb int, + F_26657d5ff9020d2abefe558796b99584 int, + F_e2ef524fbf3d9fe611d5a8e90fefdc9c int, + F_ed3d2c21991e3bef5e069713af9fa6ca int, + F_ac627ab1ccbdb62ec96e702f07f6425b int, + F_f899139df5e1059396431415e770c6dd int, + F_38b3eff8baf56627478ec76a704e9b52 int, + F_ec8956637a99787bd197eacd77acce5e int, + F_6974ce5ac660610b44d9b9fed0ff9548 int, + F_c9e1074f5b3f9fc8ea15d152add07294 int, + F_65b9eea6e1cc6bb9f0cd2a47751a186f int, + F_f0935e4cd5920aa6c7c996a5ee53a70f int, + F_a97da629b098b75c294dffdc3e463904 int, + F_a3c65c2974270fd093ee8a9bf8ae7d0b int, + F_2723d092b63885e0d7c260cc007e8b9d int, + F_5f93f983524def3dca464469d2cf9f3e int, + F_698d51a19d8a121ce581499d7b701668 int, + F_7f6ffaa6bb0b408017b62254211691b5 int, + F_73278a4a86960eeb576a8fd4c9ec6997 int, + F_5fd0b37cd7dbbb00f97ba6ce92bf5add int, + F_2b44928ae11fb9384c4cf38708677c48 int, + F_c45147dee729311ef5b5c3003946c48f int, + F_eb160de1de89d9058fcb0b968dbbbd68 int, + F_5ef059938ba799aaa845e1c2e8a762bd int, + F_07e1cd7dca89a1678042477183b7ac3f int, + F_da4fb5c6e93e74d3df8527599fa62642 int, + F_4c56ff4ce4aaf9573aa5dff913df997a int, + F_a0a080f42e6f13b3a2df133f073095dd int, + F_202cb962ac59075b964b07152d234b70 int, + F_c8ffe9a587b126f152ed3d89a146b445 int, + F_3def184ad8f4755ff269862ea77393dd int, + F_069059b7ef840f0c74a814ec9237b6ec int, + F_ec5decca5ed3d6b8079e2e7e7bacc9f2 int, + F_76dc611d6ebaafc66cc0879c71b5db5c int, + F_d1f491a404d6854880943e5c3cd9ca25 int, + F_9b8619251a19057cff70779273e95aa6 int, + F_1afa34a7f984eeabdbb0a7d494132ee5 int, + F_65ded5353c5ee48d0b7d48c591b8f430 int, + F_9fc3d7152ba9336a670e36d0ed79bc43 int, + F_02522a2b2726fb0a03bb19f2d8d9524d int, + F_7f1de29e6da19d22b51c68001e7e0e54 int, + F_42a0e188f5033bc65bf8d78622277c4e int, + F_3988c7f88ebcb58c6ce932b957b6f332 int, + F_013d407166ec4fa56eb1e1f8cbe183b9 int, + F_e00da03b685a0dd18fb6a08af0923de0 int, + F_1385974ed5904a438616ff7bdb3f7439 int, + F_0f28b5d49b3020afeecd95b4009adf4c int, + F_a8baa56554f96369ab93e4f3bb068c22 int, + F_903ce9225fca3e988c2af215d4e544d3 int, + F_0a09c8844ba8f0936c20bd791130d6b6 int, + F_2b24d495052a8ce66358eb576b8912c8 int, + F_a5e00132373a7031000fd987a3c9f87b int, + F_8d5e957f297893487bd98fa830fa6413 int, + F_47d1e990583c9c67424d369f3414728e int, + F_f2217062e9a397a1dca429e7d70bc6ca int, + F_7ef605fc8dba5425d6965fbd4c8fbe1f int, + F_a8f15eda80c50adb0e71943adc8015cf int, + F_37a749d808e46495a8da1e5352d03cae int, + F_b3e3e393c77e35a4a3f3cbd1e429b5dc int, + F_1d7f7abc18fcb43975065399b0d1e48e int, + F_2a79ea27c279e471f4d180b08d62b00a int, + F_1c9ac0159c94d8d0cbedc973445af2da int, + F_6c4b761a28b734fe93831e3fb400ce87 int, + F_06409663226af2f3114485aa4e0a23b4 int, + F_140f6969d5213fd0ece03148e62e461e int, + F_b73ce398c39f506af761d2277d853a92 int, + F_bd4c9ab730f5513206b999ec0d90d1fb int, + F_82aa4b0af34c2313a562076992e50aa3 int, + F_0777d5c17d4066b82ab86dff8a46af6f int, + F_fa7cdfad1a5aaf8370ebeda47a1ff1c3 int, + F_9766527f2b5d3e95d4a733fcfb77bd7e int, + F_7e7757b1e12abcb736ab9a754ffb617a int, + F_5878a7ab84fb43402106c575658472fa int, + F_006f52e9102a8d3be2fe5614f42ba989 int, + F_3636638817772e42b59d74cff571fbb3 int, + F_149e9677a5989fd342ae44213df68868 int, + F_a4a042cf4fd6bfb47701cbc8a1653ada int, + F_1ff8a7b5dc7a7d1f0ed65aaa29c04b1e int, + F_f7e6c85504ce6e82442c770f7c8606f0 int, + F_bf8229696f7a3bb4700cfddef19fa23f int, + F_82161242827b703e6acf9c726942a1e4 int, + F_38af86134b65d0f10fe33d30dd76442e int, + F_96da2f590cd7246bbde0051047b0d6f7 int, + F_8f85517967795eeef66c225f7883bdcb int, + F_8f53295a73878494e9bc8dd6c3c7104f int, + F_045117b0e0a11a242b9765e79cbf113f int, + F_fc221309746013ac554571fbd180e1c8 int, + F_4c5bde74a8f110656874902f07378009 int, + F_cedebb6e872f539bef8c3f919874e9d7 int, + F_6cdd60ea0045eb7a6ec44c54d29ed402 int, + F_eecca5b6365d9607ee5a9d336962c534 int, + F_9872ed9fc22fc182d371c3e9ed316094 int, + F_31fefc0e570cb3860f2a6d4b38c6490d int, + F_9dcb88e0137649590b755372b040afad int, + F_a2557a7b2e94197ff767970b67041697 int, + F_cfecdb276f634854f3ef915e2e980c31 int, + F_0aa1883c6411f7873cb83dacb17b0afc int, + F_58a2fc6ed39fd083f55d4182bf88826d int, + F_bd686fd640be98efaae0091fa301e613 int, + F_a597e50502f5ff68e3e25b9114205d4a int, + F_0336dcbab05b9d5ad24f4333c7658a0e int, + F_084b6fbb10729ed4da8c3d3f5a3ae7c9 int, + F_85d8ce590ad8981ca2c8286f79f59954 int, + F_0e65972dce68dad4d52d063967f0a705 int, + F_84d9ee44e457ddef7f2c4f25dc8fa865 int, + F_3644a684f98ea8fe223c713b77189a77 int, + F_757b505cfd34c64c85ca5b5690ee5293 int, + F_854d6fae5ee42911677c739ee1734486 int, + F_e2c0be24560d78c5e599c2a9c9d0bbd2 int, + F_274ad4786c3abca69fa097b85867d9a4 int, + F_eae27d77ca20db309e056e3d2dcd7d69 int, + F_7eabe3a1649ffa2b3ff8c02ebfd5659f int, + F_69adc1e107f7f7d035d7baf04342e1ca int, + F_091d584fced301b442654dd8c23b3fc9 int, + F_b1d10e7bafa4421218a51b1e1f1b0ba2 int, + F_6f3ef77ac0e3619e98159e9b6febf557 int, + F_eb163727917cbba1eea208541a643e74 int, + F_1534b76d325a8f591b52d302e7181331 int, + F_979d472a84804b9f647bc185a877a8b5 int, + F_ca46c1b9512a7a8315fa3c5a946e8265 int, + F_3b8a614226a953a8cd9526fca6fe9ba5 int, + F_45fbc6d3e05ebd93369ce542e8f2322d int, + F_63dc7ed1010d3c3b8269faf0ba7491d4 int, + F_e96ed478dab8595a7dbda4cbcbee168f int, + F_c0e190d8267e36708f955d7ab048990d int, + F_ec8ce6abb3e952a85b8551ba726a1227 int, + F_060ad92489947d410d897474079c1477 int, + F_bcbe3365e6ac95ea2c0343a2395834dd int, + F_115f89503138416a242f40fb7d7f338e int, + F_13fe9d84310e77f13a6d184dbf1232f3 int, + F_d1c38a09acc34845c6be3a127a5aacaf int, + F_9cfdf10e8fc047a44b08ed031e1f0ed1 int, + F_705f2172834666788607efbfca35afb3 int, + F_74db120f0a8e5646ef5a30154e9f6deb int, + F_57aeee35c98205091e18d1140e9f38cf int, + F_6da9003b743b65f4c0ccd295cc484e57 int, + F_9b04d152845ec0a378394003c96da594 int, + F_be83ab3ecd0db773eb2dc1b0a17836a1 int, + F_e165421110ba03099a1c0393373c5b43 int, + F_289dff07669d7a23de0ef88d2f7129e7 int, + F_577ef1154f3240ad5b9b413aa7346a1e int, + F_01161aaa0b6d1345dd8fe4e481144d84 int, + F_539fd53b59e3bb12d203f45a912eeaf2 int, + F_ac1dd209cbcc5e5d1c6e28598e8cbbe8 int, + F_555d6702c950ecb729a966504af0a635 int, + F_335f5352088d7d9bf74191e006d8e24c int, + F_f340f1b1f65b6df5b5e3f94d95b11daf int, + F_e4a6222cdb5b34375400904f03d8e6a5 int, + F_cb70ab375662576bd1ac5aaf16b3fca4 int, + F_9188905e74c28e489b44e954ec0b9bca int, + F_0266e33d3f546cb5436a10798e657d97 int, + F_38db3aed920cf82ab059bfccbd02be6a int, + F_3cec07e9ba5f5bb252d13f5f431e4bbb int, + F_621bf66ddb7c962aa0d22ac97d69b793 int, + F_077e29b11be80ab57e1a2ecabb7da330 int, + F_6c9882bbac1c7093bd25041881277658 int, + F_19f3cd308f1455b3fa09a282e0d496f4 int, + F_03c6b06952c750899bb03d998e631860 int, + F_c24cd76e1ce41366a4bbe8a49b02a028 int, + F_c52f1bd66cc19d05628bd8bf27af3ad6 int, + F_fe131d7f5a6b38b23cc967316c13dae2 int, + F_f718499c1c8cef6730f9fd03c8125cab int, + F_d96409bf894217686ba124d7356686c9 int, + F_502e4a16930e414107ee22b6198c578f int, + F_cfa0860e83a4c3a763a7e62d825349f7 int, + F_a4f23670e1833f3fdb077ca70bbd5d66 int, + F_b1a59b315fc9a3002ce38bbe070ec3f5 int, + F_36660e59856b4de58a219bcf4e27eba3 int, + F_8c19f571e251e61cb8dd3612f26d5ecf int, + F_d6baf65e0b240ce177cf70da146c8dc8 int, + F_e56954b4f6347e897f954495eab16a88 int, + F_f7664060cc52bc6f3d620bcedc94a4b6 int, + F_eda80a3d5b344bc40f3bc04f65b7a357 int, + F_8f121ce07d74717e0b1f21d122e04521 int, + F_06138bc5af6023646ede0e1f7c1eac75 int, + F_39059724f73a9969845dfe4146c5660e int, + F_7f100b7b36092fb9b06dfb4fac360931 int, + F_7a614fd06c325499f1680b9896beedeb int, + F_4734ba6f3de83d861c3176a6273cac6d int, + F_d947bf06a885db0d477d707121934ff8 int, + F_63923f49e5241343aa7acb6a06a751e7 int, + F_db8e1af0cb3aca1ae2d0018624204529 int, + F_20f07591c6fcb220ffe637cda29bb3f6 int, + F_07cdfd23373b17c6b337251c22b7ea57 int, + F_d395771085aab05244a4fb8fd91bf4ee int, + F_92c8c96e4c37100777c7190b76d28233 int, + F_e3796ae838835da0b6f6ea37bcf8bcb7 int, + F_6a9aeddfc689c1d0e3b9ccc3ab651bc5 int, + F_0f49c89d1e7298bb9930789c8ed59d48 int, + F_46ba9f2a6976570b0353203ec4474217 int, + F_0e01938fc48a2cfb5f2217fbfb00722d int, + F_16a5cdae362b8d27a1d8f8c7b78b4330 int, + F_918317b57931b6b7a7d29490fe5ec9f9 int, + F_48aedb8880cab8c45637abc7493ecddd int, + F_839ab46820b524afda05122893c2fe8e int, + F_f90f2aca5c640289d0a29417bcb63a37 int, + F_9c838d2e45b2ad1094d42f4ef36764f6 int, + F_1700002963a49da13542e0726b7bb758 int, + F_53c3bce66e43be4f209556518c2fcb54 int, + F_6883966fd8f918a4aa29be29d2c386fb int, + F_49182f81e6a13cf5eaa496d51fea6406 int, + F_d296c101daa88a51f6ca8cfc1ac79b50 int, + F_9fd81843ad7f202f26c1a174c7357585 int, + F_26e359e83860db1d11b6acca57d8ea88 int, + F_ef0d3930a7b6c95bd2b32ed45989c61f int, + F_94f6d7e04a4d452035300f18b984988c int, + F_34ed066df378efacc9b924ec161e7639 int, + F_577bcc914f9e55d5e4e4f82f9f00e7d4 int, + F_11b9842e0a271ff252c1903e7132cd68 int, + F_37bc2f75bf1bcfe8450a1a41c200364c int, + F_496e05e1aea0a9c4655800e8a7b9ea28 int, + F_b2eb7349035754953b57a32e2841bda5 int, + F_8e98d81f8217304975ccb23337bb5761 int, + F_a8c88a0055f636e4a163a5e3d16adab7 int, + F_eddea82ad2755b24c4e168c5fc2ebd40 int, + F_06eb61b839a0cefee4967c67ccb099dc int, + F_9dfcd5e558dfa04aaf37f137a1d9d3e5 int, + F_950a4152c2b4aa3ad78bdd6b366cc179 int, + F_158f3069a435b314a80bdcb024f8e422 int, + F_758874998f5bd0c393da094e1967a72b int, + F_ad13a2a07ca4b7642959dc0c4c740ab6 int, + F_3fe94a002317b5f9259f82690aeea4cd int, + F_5b8add2a5d98b1a652ea7fd72d942dac int, + F_432aca3a1e345e339f35a30c8f65edce int, + F_8d3bba7425e7c98c50f52ca1b52d3735 int, + F_320722549d1751cf3f247855f937b982 int, + F_caf1a3dfb505ffed0d024130f58c5cfa int, + F_5737c6ec2e0716f3d8a7a5c4e0de0d9a int, + F_bc6dc48b743dc5d013b1abaebd2faed2 int, + F_f2fc990265c712c49d51a18a32b39f0c int, + F_89f0fd5c927d466d6ec9a21b9ac34ffa int, + F_a666587afda6e89aec274a3657558a27 int, + F_b83aac23b9528732c23cc7352950e880 int, + F_cd00692c3bfe59267d5ecfac5310286c int, + F_6faa8040da20ef399b63a72d0e4ab575 int, + F_fe73f687e5bc5280214e0486b273a5f9 int); +insert into t1 (F_8d3bba7425e7c98c50f52ca1b52d3735) values (1); +--exec $MYSQL_DUMP --skip-comments -c test +drop table t1; diff --git a/mysql-test/t/olap.test b/mysql-test/t/olap.test index 4f3b0f51286..09ba537bf3b 100644 --- a/mysql-test/t/olap.test +++ b/mysql-test/t/olap.test @@ -184,3 +184,27 @@ SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP; SELECT * FROM ( SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP ) t2; DROP TABLE t1; + +# +# Tests for bug #7914: ROLLUP over expressions on temporary table +# + +CREATE TABLE t1 (a int(11)); +INSERT INTO t1 VALUES (1),(2); + +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d + GROUP BY a; +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d + GROUP BY a WITH ROLLUP; + +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d + GROUP BY a; +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d + GROUP BY a WITH ROLLUP; + +SELECT a, SUM(a), SUM(a)+1, CONCAT(SUM(a),'x'), SUM(a)+SUM(a), SUM(a) + FROM (SELECT 1 a, 2 b UNION SELECT 2,3 UNION SELECT 5,6 ) d + GROUP BY a WITH ROLLUP; + +DROP TABLE t1; + diff --git a/mysql-test/t/outfile.test b/mysql-test/t/outfile.test index 59ce6cc56fe..4b12f9e4e50 100644 --- a/mysql-test/t/outfile.test +++ b/mysql-test/t/outfile.test @@ -1,3 +1,9 @@ +disable_query_log; +-- source include/test_outfile.inc +eval set @tmpdir="$MYSQL_TEST_DIR/var/tmp"; +enable_query_log; +-- source include/have_outfile.inc + # # test of into outfile|dumpfile # @@ -6,29 +12,45 @@ drop table if exists t1; --enable_warnings -# We need to check that we have 'file' privilege. +create table t1 (`a` blob); +insert into t1 values("hello world"),("Hello mars"),(NULL); +disable_query_log; +eval select * into outfile "$MYSQL_TEST_DIR/var/tmp/outfile-test.1" from t1; +enable_query_log; +select load_file(concat(@tmpdir,"/outfile-test.1")); +disable_query_log; +eval select * into dumpfile "$MYSQL_TEST_DIR/var/tmp/outfile-test.2" from t1 limit 1; +enable_query_log; +select load_file(concat(@tmpdir,"/outfile-test.2")); +disable_query_log; +eval select * into dumpfile "$MYSQL_TEST_DIR/var/tmp/outfile-test.3" from t1 where a is null; +enable_query_log; +select load_file(concat(@tmpdir,"/outfile-test.3")); -#create table t1 (`a` blob); -#insert into t1 values("hello world"),("Hello mars"),(NULL); -#select * into outfile "/tmp/select-test.1" from t1; -#select load_file("/tmp/select-test.1"); -#select * into dumpfile "/tmp/select-test.2" from t1 limit 1; -#select load_file("/tmp/select-test.2"); -#select * into dumpfile "/tmp/select-test.3" from t1 where a is null; -#select load_file("/tmp/select-test.3"); -# -## the following should give errors -# -#select * into outfile "/tmp/select-test.1" from t1; -#select * into dumpfile "/tmp/select-test.1" from t1; -#select * into dumpfile "/tmp/select-test.99" from t1; -#select load_file("/tmp/select-test.not-exist"); -#drop table t1; -#drop table if exists t; -#CREATE TABLE t ( t timestamp NOT NULL, c char(200) character set latin1 NOT NULL default '', i int(11), v varchar(200), b blob, KEY t (t)) ENGINE=MyISAM; -#INSERT INTO t VALUES ('2002-12-20 12:01:20','',1,"aaa","bbb"); -#select * from t into outfile "check"; -#drop table if exists t; +# the following should give errors + +#disabled as error message has variable path +#disable_query_log; +#--error 1086 +#eval select * into outfile "$MYSQL_TEST_DIR/var/tmp/outfile-test.1" from t1; +#--error 1086 +#eval select * into dumpfile "$MYSQL_TEST_DIR/var/tmp/outfile-test.2" from t1; +#--error 1086 +#eval select * into dumpfile "$MYSQL_TEST_DIR/var/tmp/outfile-test.3" from t1; +#enable_query_log; +--error 13,2 +select load_file(concat(@tmpdir,"/outfile-test.not-exist")); +--exec rm $MYSQL_TEST_DIR/var/tmp/outfile-test.1 +--exec rm $MYSQL_TEST_DIR/var/tmp/outfile-test.2 +--exec rm $MYSQL_TEST_DIR/var/tmp/outfile-test.3 +drop table t1; + +# Bug#8191 +disable_query_log; +eval select 1 into outfile "$MYSQL_TEST_DIR/var/tmp/outfile-test.4"; +enable_query_log; +select load_file(concat(@tmpdir,"/outfile-test.4")); +--exec rm $MYSQL_TEST_DIR/var/tmp/outfile-test.4 # # Bug #5382: 'explain select into outfile' crashes the server diff --git a/mysql-test/t/ps_grant.test b/mysql-test/t/ps_grant.test index 06613072824..d6448dd152a 100644 --- a/mysql-test/t/ps_grant.test +++ b/mysql-test/t/ps_grant.test @@ -1,10 +1,6 @@ # Can't test grants with embedded server -- source include/not_embedded.inc -# Tested here simply so it is not tested with embedded server -prepare stmt4 from ' show full processlist '; ---replace_column 1 number 6 time 3 localhost -execute stmt4; let $type= 'MYISAM' ; @@ -116,4 +112,9 @@ show grants for second_user@localhost ; drop database mysqltest; +# Tested here simply so it is not tested with embedded server +prepare stmt4 from ' show full processlist '; +--replace_column 1 number 6 time 3 localhost +execute stmt4; + diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index 8c27d876bc8..b51a79fba77 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -1,5 +1,3 @@ --- source include/have_innodb.inc - # # Problem with range optimizer # diff --git a/mysql-test/t/reserved_win_names.test b/mysql-test/t/reserved_win_names.test new file mode 100644 index 00000000000..d9b23935ddf --- /dev/null +++ b/mysql-test/t/reserved_win_names.test @@ -0,0 +1,12 @@ +# +# Test of reserved Windows names +# +--require r/reserved_win_names.require + +--error 1049 +use COM1; +--error 1049 +use LPT1; +--error 1049 +use PRN; + diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 6d6d5f6b6e1..0634323cef7 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -1950,7 +1950,6 @@ EXPLAIN SELECT * FROM t1 LEFT JOIN t2 FORCE INDEX (a) ON t1.a=t2.a; DROP TABLE t1, t2; - # # Test case for bug 7098: substitution of a constant for a string field # @@ -1987,11 +1986,68 @@ drop table t1; create table t1 (a int(11)); select all all * from t1; select distinct distinct * from t1; ---error 1064 +--error 1221 select all distinct * from t1; ---error 1064 +--error 1221 select distinct all * from t1; drop table t1; - # +# Test for BUG#10095 +# +CREATE TABLE t1 ( + kunde_intern_id int(10) unsigned NOT NULL default '0', + kunde_id int(10) unsigned NOT NULL default '0', + FK_firma_id int(10) unsigned NOT NULL default '0', + aktuell enum('Ja','Nein') NOT NULL default 'Ja', + vorname varchar(128) NOT NULL default '', + nachname varchar(128) NOT NULL default '', + geloescht enum('Ja','Nein') NOT NULL default 'Nein', + firma varchar(128) NOT NULL default '' +); + +INSERT INTO t1 VALUES + (3964,3051,1,'Ja','Vorname1','1Nachname','Nein','Print Schau XXXX'), + (3965,3051111,1,'Ja','Vorname1111','1111Nachname','Nein','Print Schau XXXX'); + + +SELECT kunde_id ,FK_firma_id ,aktuell, vorname, nachname, geloescht FROM t1 + WHERE + ( + ( + ( '' != '' AND firma LIKE CONCAT('%', '', '%')) + OR + (vorname LIKE CONCAT('%', 'Vorname1', '%') AND + nachname LIKE CONCAT('%', '1Nachname', '%') AND + 'Vorname1' != '' AND 'xxxx' != '') + ) + AND + ( + aktuell = 'Ja' AND geloescht = 'Nein' AND FK_firma_id = 2 + ) + ) + ; + +SELECT kunde_id ,FK_firma_id ,aktuell, vorname, nachname, +geloescht FROM t1 + WHERE + ( + ( + aktuell = 'Ja' AND geloescht = 'Nein' AND FK_firma_id = 2 + ) + AND + ( + ( '' != '' AND firma LIKE CONCAT('%', '', '%') ) + OR + ( vorname LIKE CONCAT('%', 'Vorname1', '%') AND +nachname LIKE CONCAT('%', '1Nachname', '%') AND 'Vorname1' != '' AND +'xxxx' != '') + ) + ) + ; + +SELECT COUNT(*) FROM t1 WHERE +( 0 OR (vorname LIKE '%Vorname1%' AND nachname LIKE '%1Nachname%' AND 1)) +AND FK_firma_id = 2; + +drop table t1; diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index 1882a04936c..e585022563f 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -1722,3 +1722,27 @@ select (1,2,3) = (select * from t1); -- error 1241 select (select * from t1) = (1,2,3); drop table t1 + +# +# Item_int_with_ref check (BUG#10020) +# +CREATE TABLE `t1` ( + `itemid` bigint(20) unsigned NOT NULL auto_increment, + `sessionid` bigint(20) unsigned default NULL, + `time` int(10) unsigned NOT NULL default '0', + `type` set('A','D','E','F','G','I','L','N','U') collate latin1_general_ci NOT +NULL default '', + `data` text collate latin1_general_ci NOT NULL, + PRIMARY KEY (`itemid`) +) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; +INSERT INTO `t1` VALUES (1, 1, 1, 'D', ''); +CREATE TABLE `t2` ( + `sessionid` bigint(20) unsigned NOT NULL auto_increment, + `pid` int(10) unsigned NOT NULL default '0', + `date` int(10) unsigned NOT NULL default '0', + `ip` varchar(15) collate latin1_general_ci NOT NULL default '', + PRIMARY KEY (`sessionid`) +) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; +INSERT INTO `t2` VALUES (1, 1, 1, '10.10.10.1'); +SELECT s.ip, count( e.itemid ) FROM `t1` e JOIN t2 s ON s.sessionid = e.sessionid WHERE e.sessionid = ( SELECT sessionid FROM t2 ORDER BY sessionid DESC LIMIT 1 ) GROUP BY s.ip HAVING count( e.itemid ) >0 LIMIT 0 , 30; +drop tables t1,t2; diff --git a/mysys/Makefile.am b/mysys/Makefile.am index 3ae9c05bff5..ab35ccb21ba 100644 --- a/mysys/Makefile.am +++ b/mysys/Makefile.am @@ -53,7 +53,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c \ my_net.c my_semaphore.c my_port.c my_sleep.c \ charset.c charset-def.c my_bitmap.c my_bit.c md5.c \ my_gethostbyname.c rijndael.c my_aes.c sha1.c \ - my_handler.c my_netware.c my_windac.c + my_handler.c my_netware.c my_windac.c my_access.c EXTRA_DIST = thr_alarm.c thr_lock.c my_pthread.c my_thr_init.c \ thr_mutex.c thr_rwlock.c libmysys_a_LIBADD = @THREAD_LOBJECTS@ diff --git a/mysys/mf_pack.c b/mysys/mf_pack.c index 9193238708d..86172f648f4 100644 --- a/mysys/mf_pack.c +++ b/mysys/mf_pack.c @@ -226,7 +226,7 @@ void symdirget(char *dir) { char buff[FN_REFLEN]; char *pos=strend(dir); - if (dir[0] && pos[-1] != FN_DEVCHAR && access(dir, F_OK)) + if (dir[0] && pos[-1] != FN_DEVCHAR && my_access(dir, F_OK)) { File file; uint length; diff --git a/mysys/my_access.c b/mysys/my_access.c new file mode 100644 index 00000000000..6a8887e42a6 --- /dev/null +++ b/mysys/my_access.c @@ -0,0 +1,53 @@ +/* Copyright (C) 2000 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "mysys_priv.h" + +#ifdef __WIN__ + +/* + * Check a file or path for accessability. + * + * SYNOPSIS + * file_access() + * pathpath to check + * amodemode to check + * + * DESCRIPTION + * This function wraps the normal access method because the access + * available in MSVCRT> +reports that filenames such as LPT1 and + * COM1 are valid (they are but should not be so for us). + * + * RETURN VALUES + * 0 ok + * -1 error + */ +int my_access(const char *path, int amode) +{ + WIN32_FILE_ATTRIBUTE_DATA fileinfo; + BOOL result; + + result = GetFileAttributesEx(path, GetFileExInfoStandard, + &fileinfo); + if (! result) + return -1; + if ((fileinfo.dwFileAttributes & FILE_ATTRIBUTE_READONLY) && + (amode & 2)) + return -1; + return 0; +} + +#endif diff --git a/mysys/my_fopen.c b/mysys/my_fopen.c index e918b7b0de2..4310250bd0d 100644 --- a/mysys/my_fopen.c +++ b/mysys/my_fopen.c @@ -33,9 +33,22 @@ FILE *my_fopen(const char *FileName, int Flags, myf MyFlags) DBUG_ENTER("my_fopen"); DBUG_PRINT("my",("Name: '%s' Flags: %d MyFlags: %d", FileName, Flags, MyFlags)); - - make_ftype(type,Flags); - if ((fd = fopen(FileName, type)) != 0) + /* + if we are not creating, then we need to use my_access to make sure + the file exists since Windows doesn't handle files like "com1.sym" + very well + */ +#ifdef __WIN__ + if (! (Flags & O_CREAT) && my_access(FileName, F_OK)) + fd=0; + else +#endif + { + make_ftype(type,Flags); + fd = fopen(FileName, type); + } + + if (fd != 0) { /* The test works if MY_NFILE < 128. The problem is that fileno() is char diff --git a/mysys/my_getwd.c b/mysys/my_getwd.c index 89f949eca27..5663ceaa60e 100644 --- a/mysys/my_getwd.c +++ b/mysys/my_getwd.c @@ -208,7 +208,10 @@ int test_if_hard_path(register const char *dir_name) my_bool has_path(const char *name) { - return test(strchr(name, FN_LIBCHAR)) + return test(strchr(name, FN_LIBCHAR)) +#if FN_LIBCHAR != '/' + || test(strchr(name,'/')) +#endif #ifdef FN_DEVCHAR || test(strchr(name, FN_DEVCHAR)) #endif diff --git a/mysys/my_open.c b/mysys/my_open.c index ca5c0d8683f..ea4d99c3e8c 100644 --- a/mysys/my_open.c +++ b/mysys/my_open.c @@ -46,6 +46,13 @@ File my_open(const char *FileName, int Flags, myf MyFlags) DBUG_PRINT("my",("Name: '%s' Flags: %d MyFlags: %d", FileName, Flags, MyFlags)); #if defined(MSDOS) || defined(__WIN__) || defined(__EMX__) || defined(OS2) + /* + if we are not creating, then we need to use my_access to make + sure the file exists since Windows doesn't handle files like + "com1.sym" very well + */ + if (! (Flags & O_CREAT) && my_access(FileName, F_OK)) + return -1; if (Flags & O_SHARE) fd = sopen((my_string) FileName, (Flags & ~O_SHARE) | O_BINARY, SH_DENYNO, MY_S_IREAD | MY_S_IWRITE); diff --git a/ndb/src/common/util/version.c b/ndb/src/common/util/version.c index 8cc6de0fc24..ed2e2565eea 100644 --- a/ndb/src/common/util/version.c +++ b/ndb/src/common/util/version.c @@ -90,6 +90,7 @@ void ndbSetOwnVersion() {} #ifndef TEST_VERSION struct NdbUpGradeCompatible ndbCompatibleTable_full[] = { + { MAKE_VERSION(4,1,12), MAKE_VERSION(4,1,10), UG_Range }, { MAKE_VERSION(4,1,10), MAKE_VERSION(4,1,9), UG_Exact }, { MAKE_VERSION(4,1,9), MAKE_VERSION(4,1,8), UG_Exact }, { MAKE_VERSION(3,5,2), MAKE_VERSION(3,5,1), UG_Exact }, diff --git a/ndb/src/cw/cpcd/Process.cpp b/ndb/src/cw/cpcd/Process.cpp index cfffec7d0ce..431c96e3320 100644 --- a/ndb/src/cw/cpcd/Process.cpp +++ b/ndb/src/cw/cpcd/Process.cpp @@ -223,11 +223,8 @@ set_ulimit(const BaseString & pair){ if(!(list[1].trim() == "unlimited")){ value = atoi(list[1].c_str()); } -#if defined(__INTEL_COMPILER) - struct rlimit64 rlp; -#else + struct rlimit rlp; -#endif #define _RLIMIT_FIX(x) { res = getrlimit(x,&rlp); if(!res){ rlp.rlim_cur = value; res = setrlimit(x, &rlp); }} if(list[0].trim() == "c"){ diff --git a/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp b/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp index b3fc6e04d6c..f76440a462a 100644 --- a/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp +++ b/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp @@ -799,11 +799,7 @@ AsyncFile::rmrfReq(Request * request, char * path, bool removePath){ request->error = errno; return; } -#if defined(__INTEL_COMPILER) - struct dirent64 * dp; -#else struct dirent * dp; -#endif while ((dp = readdir(dirp)) != NULL){ if ((strcmp(".", dp->d_name) != 0) && (strcmp("..", dp->d_name) != 0)) { BaseString::snprintf(path_add, (size_t)path_max_copy, "%s%s", diff --git a/ndb/src/ndbapi/ndberror.c b/ndb/src/ndbapi/ndberror.c index 71b0ed6a82f..04c25f31387 100644 --- a/ndb/src/ndbapi/ndberror.c +++ b/ndb/src/ndbapi/ndberror.c @@ -298,8 +298,8 @@ ErrorBundle ErrorCodes[] = { { 703, SE, "Invalid table format" }, { 704, SE, "Attribute name too long" }, { 705, SE, "Table name too long" }, - { 707, SE, "No more table metadata records" }, - { 708, SE, "No more attribute metadata records" }, + { 707, SE, "No more table metadata records (increase MaxNoOfTables)" }, + { 708, SE, "No more attribute metadata records (increase MaxNoOfAttributes)" }, { 709, SE, "No such table existed" }, { 721, SE, "Table or index with given name already exists" }, { 723, SE, "No such table existed" }, diff --git a/sql/ha_blackhole.cc b/sql/ha_blackhole.cc index 7c6e7cb56b6..c9c94b3a9d7 100644 --- a/sql/ha_blackhole.cc +++ b/sql/ha_blackhole.cc @@ -129,8 +129,9 @@ THR_LOCK_DATA **ha_blackhole::store_lock(THD *thd, THR_LOCK_DATA **to, enum thr_lock_type lock_type) { + if (lock_type != TL_IGNORE && lock.type == TL_UNLOCK) + lock.type=lock_type; *to++= &lock; - return to; } diff --git a/sql/ha_myisammrg.cc b/sql/ha_myisammrg.cc index 7a5d4fcf0a1..0b160d72aab 100644 --- a/sql/ha_myisammrg.cc +++ b/sql/ha_myisammrg.cc @@ -422,6 +422,7 @@ int ha_myisammrg::create(const char *name, register TABLE *form, } else table_name=(*tbl)->path; + DBUG_PRINT("info",("MyISAM table_name: '%s'", table_name)); *pos++= table_name; } *pos=0; diff --git a/sql/ha_myisammrg.h b/sql/ha_myisammrg.h index 3bc9c11d4be..7348096b695 100644 --- a/sql/ha_myisammrg.h +++ b/sql/ha_myisammrg.h @@ -37,7 +37,7 @@ class ha_myisammrg: public handler { return (HA_REC_NOT_IN_SEQ | HA_AUTO_PART_KEY | HA_READ_RND_SAME | HA_NULL_IN_KEY | HA_CAN_INDEX_BLOBS | HA_FILE_BASED | - HA_CAN_INSERT_DELAYED); + HA_CAN_INSERT_DELAYED | HA_ANY_INDEX_MAY_BE_UNIQUE); } ulong index_flags(uint inx, uint part, bool all_parts) const { diff --git a/sql/handler.h b/sql/handler.h index df623afcd79..75e83082d10 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -73,6 +73,7 @@ #define HA_HAS_CHECKSUM (1 << 24) /* Table data are stored in separate files (for lower_case_table_names) */ #define HA_FILE_BASED (1 << 26) +#define HA_ANY_INDEX_MAY_BE_UNIQUE (1 << 30) /* bits in index_flags(index_number) for what you can do with index */ @@ -204,6 +205,7 @@ typedef struct st_ha_create_information SQL_LIST merge_list; enum db_type db_type; enum row_type row_type; + uint null_bits; /* NULL bits at start of record */ uint options; /* OR of HA_CREATE_ options */ uint raid_type,raid_chunks; uint merge_insert_method; diff --git a/sql/hostname.cc b/sql/hostname.cc index ec5c6f29a27..39223556024 100644 --- a/sql/hostname.cc +++ b/sql/hostname.cc @@ -209,8 +209,8 @@ my_string ip_to_hostname(struct in_addr *in, uint *errors) DBUG_PRINT("error",("gethostbyaddr returned %d",errno)); if (errno == HOST_NOT_FOUND || errno == NO_DATA) - add_wrong_ip(in); /* only cache negative responses, not failures */ - + goto add_wrong_ip_and_return; + /* Failure, don't cache responce */ DBUG_RETURN(0); } if (!hp->h_name[0]) // Don't allow empty hostnames diff --git a/sql/item.cc b/sql/item.cc index 6c1506e10e8..59785813566 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -2034,7 +2034,7 @@ bool Item_int::eq(const Item *arg, bool binary_cmp) const Item *Item_int_with_ref::new_item() { - DBUG_ASSERT(ref->basic_const_item()); + DBUG_ASSERT(ref->const_item()); /* We need to evaluate the constant to make sure it works with parameter markers. diff --git a/sql/item.h b/sql/item.h index 8fed871e623..2edbeef400c 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1027,12 +1027,14 @@ public: void print(String *str); }; + /* The following class is used to optimize comparing of date and bigint columns - We need to save the original item, to be able to set the field to the - original value in 'opt_range'. - An instance of Item_int_with_ref may refer to a signed or an unsigned - integer. + We need to save the original item ('ref') to be able to call + ref->save_in_field(). This is used to create index search keys. + + An instance of Item_int_with_ref may have signed or unsigned integer value. + */ class Item_int_with_ref :public Item_int diff --git a/sql/item_func.cc b/sql/item_func.cc index 9c6c19f3ec9..05b76eb1604 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -3174,6 +3174,11 @@ bool Item_func_match::fix_fields(THD *thd, TABLE_LIST *tlist, Item **ref) return 1; } table=((Item_field *)item)->field->table; + if (!(table->file->table_flags() & HA_CAN_FULLTEXT)) + { + my_error(ER_TABLE_CANT_HANDLE_FT, MYF(0)); + return 1; + } table->fulltext_searched=1; return agg_arg_collations_for_comparison(cmp_collation, args+1, arg_count-1); } diff --git a/sql/share/danish/errmsg.txt b/sql/share/danish/errmsg.txt index 384625f7112..4983d39714a 100644 --- a/sql/share/danish/errmsg.txt +++ b/sql/share/danish/errmsg.txt @@ -262,7 +262,7 @@ character-set=latin1 "Key reference and table reference don't match", "Operand should contain %d column(s)", "Subquery returns more than 1 row", -"Unknown prepared statement handler (%ld) given to %s", +"Unknown prepared statement handler (%.*s) given to %s", "Help database is corrupt or does not exist", "Cyclic reference on subqueries", "Converting column '%s' from %s to %s", diff --git a/sql/share/serbian/errmsg.txt b/sql/share/serbian/errmsg.txt index accf1926abb..adda7d7cf53 100644 --- a/sql/share/serbian/errmsg.txt +++ b/sql/share/serbian/errmsg.txt @@ -252,7 +252,7 @@ character-set=cp1250 "Key reference and table reference don't match", "Operand should contain %d column(s)", "Subquery returns more than 1 row", -"Unknown prepared statement handler (%ld) given to %s", +"Unknown prepared statement handler (%.*s) given to %s", "Help database is corrupt or does not exist", "Cyclic reference on subqueries", "Converting column '%s' from %s to %s", diff --git a/sql/spatial.cc b/sql/spatial.cc index bcfefd9dde8..1afb7bb7dec 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -96,6 +96,12 @@ static Geometry::Class_info geometrycollection_class("GEOMETRYCOLLECTION",Geometry::wkb_geometrycollection, create_geometrycollection); +static void get_point(double *x, double *y, const char *data) +{ + float8get(*x, data); + float8get(*y, data + SIZEOF_STORED_DOUBLE); +} + /***************************** Geometry *******************************/ Geometry::Class_info *Geometry::find_class(const char *name, uint32 len) @@ -266,14 +272,13 @@ const char *Geometry::append_points(String *txt, uint32 n_points, { while (n_points--) { - double d; + double x,y; data+= offset; - float8get(d, data); - txt->qs_append(d); - txt->qs_append(' '); - float8get(d, data + SIZEOF_STORED_DOUBLE); + get_point(&x, &y, data); data+= SIZEOF_STORED_DOUBLE * 2; - txt->qs_append(d); + txt->qs_append(x); + txt->qs_append(' '); + txt->qs_append(y); txt->qs_append(','); } return data; @@ -426,8 +431,7 @@ bool Gis_line_string::get_data_as_wkt(String *txt, const char **end) const while (n_points--) { double x, y; - float8get(x, data); - float8get(y, data + SIZEOF_STORED_DOUBLE); + get_point(&x, &y, data); data+= SIZEOF_STORED_DOUBLE * 2; txt->qs_append(x); txt->qs_append(' '); @@ -460,15 +464,13 @@ int Gis_line_string::length(double *len) const if (n_points < 1 || no_data(data, SIZEOF_STORED_DOUBLE * 2 * n_points)) return 1; - float8get(prev_x, data); - float8get(prev_y, data + SIZEOF_STORED_DOUBLE); + get_point(&prev_x, &prev_y, data); data+= SIZEOF_STORED_DOUBLE*2; while (--n_points) { double x, y; - float8get(x, data); - float8get(y, data + SIZEOF_STORED_DOUBLE); + get_point(&x, &y, data); data+= SIZEOF_STORED_DOUBLE * 2; *len+= sqrt(pow(prev_x-x,2)+pow(prev_y-y,2)); prev_x= x; @@ -497,13 +499,11 @@ int Gis_line_string::is_closed(int *closed) const return 1; /* Get first point */ - float8get(x1, data); - float8get(y1, data + SIZEOF_STORED_DOUBLE); + get_point(&x1, &y1, data); /* get last point */ data+= SIZEOF_STORED_DOUBLE*2 + (n_points-2)*POINT_DATA_SIZE; - float8get(x2, data); - float8get(y2, data + SIZEOF_STORED_DOUBLE); + get_point(&x2, &y2, data); *closed= (x1==x2) && (y1==y2); return 0; @@ -681,15 +681,13 @@ int Gis_polygon::area(double *ar, const char **end_of_data) const n_points= uint4korr(data); if (no_data(data, (SIZEOF_STORED_DOUBLE*2) * n_points)) return 1; - float8get(prev_x, data+4); - float8get(prev_y, data+(4+SIZEOF_STORED_DOUBLE)); + get_point(&prev_x, &prev_y, data+4); data+= (4+SIZEOF_STORED_DOUBLE*2); while (--n_points) // One point is already read { double x, y; - float8get(x, data); - float8get(y, data + SIZEOF_STORED_DOUBLE); + get_point(&x, &y, data); data+= (SIZEOF_STORED_DOUBLE*2); /* QQ: Is the following prev_x+x right ? */ lr_area+= (prev_x + x)* (prev_y - y); @@ -779,7 +777,8 @@ int Gis_polygon::interior_ring_n(uint32 num, String *result) const int Gis_polygon::centroid_xy(double *x, double *y) const { uint32 n_linear_rings; - double res_area, res_cx, res_cy; + double res_area; + double res_cx, res_cy; const char *data= m_data; bool first_loop= 1; LINT_INIT(res_area); @@ -805,15 +804,13 @@ int Gis_polygon::centroid_xy(double *x, double *y) const data+= 4; if (no_data(data, (SIZEOF_STORED_DOUBLE*2) * n_points)) return 1; - float8get(prev_x, data); - float8get(prev_y, data+SIZEOF_STORED_DOUBLE); + get_point(&prev_x, &prev_y, data); data+= (SIZEOF_STORED_DOUBLE*2); while (--n_points) // One point is already read { double x, y; - float8get(x, data); - float8get(y, data + SIZEOF_STORED_DOUBLE); + get_point(&x, &y, data); data+= (SIZEOF_STORED_DOUBLE*2); /* QQ: Is the following prev_x+x right ? */ cur_area+= (prev_x + x) * (prev_y - y); diff --git a/sql/sql_db.cc b/sql/sql_db.cc index c918480812c..ad6845572e1 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -946,7 +946,7 @@ bool mysql_change_db(THD *thd, const char *name) length=unpack_dirname(path,path); // Convert if not unix if (length && path[length-1] == FN_LIBCHAR) path[length-1]=0; // remove ending '\' - if (access(path,F_OK)) + if (my_access(path,F_OK)) { net_printf(thd,ER_BAD_DB_ERROR,dbname); my_free(dbname,MYF(0)); diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index a3a42ce385d..0258f2c3e07 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -682,7 +682,7 @@ int write_record(TABLE *table,COPY_INFO *info) err: if (key) - my_afree(key); + my_safe_afree(key,table->max_unique_length,MAX_KEY_LENGTH); info->last_errno= error; table->file->print_error(error,MYF(0)); DBUG_RETURN(1); diff --git a/sql/sql_list.h b/sql/sql_list.h index 45a6b5066eb..e799ecf3d6e 100644 --- a/sql/sql_list.h +++ b/sql/sql_list.h @@ -129,10 +129,32 @@ public: void remove(list_node **prev) { list_node *node=(*prev)->next; + if (&(*prev)->next == last) + { + /* + We're removing the last element from the list. Adjust "last" to point + to the previous element. + The other way to fix this would be to change this function to + remove_next() and have base_list_iterator save ptr to previous node + (one extra assignment in iterator++) but as the remove() of the last + element isn't a common operation it's faster to just walk through the + list from the beginning here. + */ + list_node *cur= first; + if (cur == *prev) + { + last= &first; + } + else + { + while (cur->next != *prev) + cur= cur->next; + last= &(cur->next); + } + } delete *prev; *prev=node; - if (!--elements) - last= &first; + elements--; } inline void concat(base_list *list) { @@ -162,6 +184,54 @@ public: friend class error_list; friend class error_list_iterator; +#ifdef LIST_EXTRA_DEBUG + /* + Check list invariants and print results into trace. Invariants are: + - (*last) points to end_of_list + - There are no NULLs in the list. + - base_list::elements is the number of elements in the list. + + SYNOPSIS + check_list() + name Name to print to trace file + + RETURN + 1 The list is Ok. + 0 List invariants are not met. + */ + + bool check_list(const char *name) + { + base_list *list= this; + list_node *node= first; + uint cnt= 0; + + while (node->next != &end_of_list) + { + if (!node->info) + { + DBUG_PRINT("list_invariants",("%s: error: NULL element in the list", + name)); + return FALSE; + } + node= node->next; + cnt++; + } + if (last != &(node->next)) + { + DBUG_PRINT("list_invariants", ("%s: error: wrong last pointer", name)); + return FALSE; + } + if (cnt+1 != elements) + { + DBUG_PRINT("list_invariants", ("%s: error: wrong element count", name)); + return FALSE; + } + DBUG_PRINT("list_invariants", ("%s: list is ok", name)); + return TRUE; + } +#endif // LIST_EXTRA_DEBUG + protected: void after(void *info,list_node *node) { diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index c5b429ec8fc..80c68dad247 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1992,6 +1992,10 @@ mysql_execute_command(THD *thd) #endif } #endif /* !HAVE_REPLICATION */ + + /* When subselects or time_zone info is used in a query + * we create a new TABLE_LIST containing all referenced tables + * and set local variable 'tables' to point to this list. */ if ((&lex->select_lex != lex->all_selects_list || lex->time_zone_tables_used) && lex->unit.create_total_list(thd, lex, &tables)) @@ -4141,6 +4145,7 @@ void mysql_init_multi_delete(LEX *lex) lex->select_lex.select_limit= lex->unit.select_limit_cnt= HA_POS_ERROR; lex->select_lex.table_list.save_and_clear(&lex->auxilliary_table_list); + lex->lock_option= using_update_log ? TL_READ_NO_INSERT : TL_READ; } @@ -5437,6 +5442,14 @@ int multi_delete_precheck(THD *thd, TABLE_LIST *tables, uint *table_count) } walk->lock_type= target_tbl->lock_type; target_tbl->table_list= walk; // Remember corresponding table + + /* in case of subselects, we need to set lock_type in + * corresponding table in list of all tables */ + if (walk->table_list) + { + target_tbl->table_list= walk->table_list; + walk->table_list->lock_type= walk->lock_type; + } } DBUG_RETURN(0); } diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index d02bb5ff0a3..24b78bc9a3d 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -1337,6 +1337,11 @@ int show_binlog_info(THD* thd) int show_binlogs(THD* thd) { IO_CACHE *index_file; + LOG_INFO cur; + IO_CACHE log; + File file; + const char *errmsg= 0; + MY_STAT stat_area; char fname[FN_REFLEN]; List field_list; uint length; @@ -1351,20 +1356,42 @@ int show_binlogs(THD* thd) } field_list.push_back(new Item_empty_string("Log_name", 255)); + field_list.push_back(new Item_return_int("File_size", 20, + MYSQL_TYPE_LONGLONG)); if (protocol->send_fields(&field_list, 1)) DBUG_RETURN(1); mysql_bin_log.lock_index(); index_file=mysql_bin_log.get_index_file(); - + + mysql_bin_log.get_current_log(&cur); + int cur_dir_len = dirname_length(cur.log_file_name); + reinit_io_cache(index_file, READ_CACHE, (my_off_t) 0, 0, 0); /* The file ends with EOF or empty line */ while ((length=my_b_gets(index_file, fname, sizeof(fname))) > 1) { + fname[--length] = '\0'; /* remove the newline */ + protocol->prepare_for_resend(); int dir_len = dirname_length(fname); - /* The -1 is for removing newline from fname */ - protocol->store(fname + dir_len, length-1-dir_len, &my_charset_bin); + protocol->store(fname + dir_len, length-dir_len, &my_charset_bin); + if(!(strncmp(fname+dir_len, cur.log_file_name+cur_dir_len, length-dir_len))) + { + /* this is the active log, use the active position */ + protocol->store((ulonglong) cur.pos); + } else { + /* this is an old log, open it and find the size */ + if ((file=open_binlog(&log, fname+dir_len, &errmsg)) >= 0) + { + protocol->store((ulonglong) my_b_filelength(&log)); + end_io_cache(&log); + my_close(file, MYF(0)); + } else { + /* the file wasn't openable, but 0 is an invalid value anyway */ + protocol->store((ulonglong) 0); + } + } if (protocol->write()) goto err; } diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 1ff3328b8a8..fb7f10abb52 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1181,7 +1181,7 @@ JOIN::exec() } curr_all_fields= &tmp_all_fields1; curr_fields_list= &tmp_fields_list1; - set_items_ref_array(items1); + curr_join->set_items_ref_array(items1); if (sort_and_group || curr_tmp_table->group) { @@ -1314,7 +1314,7 @@ JOIN::exec() } curr_fields_list= &curr_join->tmp_fields_list2; curr_all_fields= &curr_join->tmp_all_fields2; - set_items_ref_array(items2); + curr_join->set_items_ref_array(items2); curr_join->tmp_table_param.field_count+= curr_join->tmp_table_param.sum_func_count; curr_join->tmp_table_param.sum_func_count= 0; @@ -1375,7 +1375,7 @@ JOIN::exec() } curr_fields_list= &tmp_fields_list3; curr_all_fields= &tmp_all_fields3; - set_items_ref_array(items3); + curr_join->set_items_ref_array(items3); if (curr_join->make_sum_func_list(*curr_all_fields, *curr_fields_list, 1) || thd->is_fatal_error) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index c03edfdb012..67aade519f5 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -451,7 +451,7 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, const char *key_name; create_field *sql_field,*dup_field; uint field,null_fields,blob_columns; - ulong pos; + ulong record_offset= 0; KEY *key_info; KEY_PART_INFO *key_part_info; int timestamps= 0, timestamps_with_niladic= 0; @@ -629,10 +629,9 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, } it2.rewind(); } - /* If fixed row records, we need one bit to check for deleted rows */ - if (!(db_options & HA_OPTION_PACK_RECORD)) - null_fields++; - pos=(null_fields+7)/8; + + /* record_offset will be increased with 'length-of-null-bits' later */ + record_offset= 0; it.rewind(); while ((sql_field=it++)) @@ -737,10 +736,10 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, } if (!(sql_field->flags & NOT_NULL_FLAG)) sql_field->pack_flag|=FIELDFLAG_MAYBE_NULL; - sql_field->offset= pos; + sql_field->offset= record_offset; if (MTYP_TYPENR(sql_field->unireg_check) == Field::NEXT_NUMBER) auto_increment++; - pos+=sql_field->pack_length; + record_offset+= sql_field->pack_length; } if (timestamps_with_niladic > 1) { @@ -1048,6 +1047,7 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, /* Implicitly set primary key fields to NOT NULL for ISO conf. */ sql_field->flags|= NOT_NULL_FLAG; sql_field->pack_flag&= ~FIELDFLAG_MAYBE_NULL; + null_fields--; } else key_info->flags|= HA_NULL_PART_KEY; @@ -1205,6 +1205,7 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, /* Sort keys in optimized order */ qsort((gptr) key_info_buffer, *key_count, sizeof(KEY), (qsort_cmp) sort_keys); + create_info->null_bits= null_fields; DBUG_RETURN(0); } diff --git a/sql/sql_udf.cc b/sql/sql_udf.cc index 661bf6e8197..126d2e5d894 100644 --- a/sql/sql_udf.cc +++ b/sql/sql_udf.cc @@ -193,7 +193,9 @@ void udf_init() This is done to ensure that only approved dll from the system directories are used (to make this even remotely secure). */ - if (strchr(dl_name, '/') || name.length > NAME_LEN) + if (strchr(dl_name, '/') || + IF_WIN(strchr(dl_name, '\\'),0) || + strlen(name.str) > NAME_LEN) { sql_print_error("Invalid row in mysql.func table for function '%.64s'", name.str); @@ -222,7 +224,7 @@ void udf_init() } tmp->dlhandle = dl; { - char buf[MAX_FIELD_NAME+16], *missing; + char buf[NAME_LEN+16], *missing; if ((missing= init_syms(tmp, buf))) { sql_print_error(ER(ER_CANT_FIND_DL_ENTRY), missing); @@ -409,7 +411,7 @@ int mysql_create_function(THD *thd,udf_func *udf) This is done to ensure that only approved dll from the system directories are used (to make this even remotely secure). */ - if (strchr(udf->dl, '/')) + if (strchr(udf->dl, '/') || IF_WIN(strchr(udf->dl, '\\'),0)) { send_error(thd, ER_UDF_NO_PATHS,ER(ER_UDF_NO_PATHS)); DBUG_RETURN(1); @@ -439,7 +441,7 @@ int mysql_create_function(THD *thd,udf_func *udf) } udf->dlhandle=dl; { - char buf[MAX_FIELD_NAME+16], *missing; + char buf[NAME_LEN+16], *missing; if ((missing= init_syms(udf, buf))) { net_printf(thd, ER_CANT_FIND_DL_ENTRY, missing); diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index abe7a716a69..2edad446499 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2467,7 +2467,15 @@ select_from: select_options: /* empty*/ - | select_option_list; + | select_option_list + { + if (test_all_bits(Select->options, SELECT_ALL | SELECT_DISTINCT)) + { + net_printf(Lex->thd, ER_WRONG_USAGE, "ALL", "DISTINCT"); + YYABORT; + } + } + ; select_option_list: select_option_list select_option @@ -2481,15 +2489,7 @@ select_option: YYABORT; Lex->lock_option= TL_READ_HIGH_PRIORITY; } - | DISTINCT - { - if (Select->options & SELECT_ALL) - { - yyerror(ER(ER_SYNTAX_ERROR)); - YYABORT; - } - Select->options|= SELECT_DISTINCT; - } + | DISTINCT { Select->options|= SELECT_DISTINCT; } | SQL_SMALL_RESULT { Select->options|= SELECT_SMALL_RESULT; } | SQL_BIG_RESULT { Select->options|= SELECT_BIG_RESULT; } | SQL_BUFFER_RESULT @@ -2509,15 +2509,7 @@ select_option: { Lex->select_lex.options|= OPTION_TO_QUERY_CACHE; } - | ALL - { - if (Select->options & SELECT_DISTINCT) - { - yyerror(ER(ER_SYNTAX_ERROR)); - YYABORT; - } - Select->options|= SELECT_ALL; - } + | ALL { Select->options|= SELECT_ALL; } ; select_lock_type: diff --git a/sql/table.cc b/sql/table.cc index 012defa116d..d9000933ee0 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -688,7 +688,12 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag, set_if_bigger(outparam->max_key_length,keyinfo->key_length+ keyinfo->key_parts); outparam->total_key_length+= keyinfo->key_length; - if (keyinfo->flags & HA_NOSAME) + /* + MERGE tables do not have unique indexes. But every key could be + an unique index on the underlying MyISAM table. (Bug #10400) + */ + if ((keyinfo->flags & HA_NOSAME) || + (ha_option & HA_ANY_INDEX_MAY_BE_UNIQUE)) set_if_bigger(outparam->max_unique_length,keyinfo->key_length); } if (primary_key < MAX_KEY && diff --git a/sql/unireg.cc b/sql/unireg.cc index a550b06a466..e6484a9c1c2 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -27,23 +27,27 @@ #define USES_TYPES #include "mysql_priv.h" #include +#include #define FCOMP 17 /* Bytes for a packed field */ static uchar * pack_screens(List &create_fields, uint *info_length, uint *screens, bool small_file); -static uint pack_keys(uchar *keybuff,uint key_count, KEY *key_info); +static uint pack_keys(uchar *keybuff,uint key_count, KEY *key_info, + ulong data_offset); static bool pack_header(uchar *forminfo,enum db_type table_type, List &create_fields, uint info_length, uint screens, uint table_options, - handler *file); + ulong data_offset, handler *file); static uint get_interval_id(uint *int_count,List &create_fields, create_field *last_field); -static bool pack_fields(File file, List &create_fields); +static bool pack_fields(File file, List &create_fields, + ulong data_offset); static bool make_empty_rec(int file, enum db_type table_type, uint table_options, List &create_fields, - uint reclength,uint null_fields); + uint reclength, uint null_fields, + ulong data_offset); /* Create a frm (table definition) file @@ -71,7 +75,7 @@ bool mysql_create_frm(THD *thd, my_string file_name, { uint reclength,info_length,screens,key_info_length,maxlength,null_fields; File file; - ulong filepos; + ulong filepos, data_offset; uchar fileinfo[64],forminfo[288],*keybuff; TYPELIB formnames; uchar *screen_buff; @@ -81,9 +85,16 @@ bool mysql_create_frm(THD *thd, my_string file_name, if (!(screen_buff=pack_screens(create_fields,&info_length,&screens,0))) DBUG_RETURN(1); if (db_file == NULL) - db_file=get_new_handler((TABLE*) 0, create_info->db_type); + db_file= get_new_handler((TABLE*) 0, create_info->db_type); + + /* If fixed row records, we need one bit to check for deleted rows */ + if (!(create_info->table_options & HA_OPTION_PACK_RECORD)) + create_info->null_bits++; + data_offset= (create_info->null_bits + 7) / 8; + if (pack_header(forminfo, create_info->db_type,create_fields,info_length, - screens, create_info->table_options, db_file)) + screens, create_info->table_options, + data_offset, db_file)) { my_free((gptr) screen_buff,MYF(0)); if (thd->net.last_errno != ER_TOO_MANY_FIELDS) @@ -94,7 +105,7 @@ bool mysql_create_frm(THD *thd, my_string file_name, if (!(screen_buff=pack_screens(create_fields,&info_length,&screens,1))) DBUG_RETURN(1); if (pack_header(forminfo, create_info->db_type, create_fields,info_length, - screens, create_info->table_options, db_file)) + screens, create_info->table_options, data_offset, db_file)) { my_free((gptr) screen_buff,MYF(0)); DBUG_RETURN(1); @@ -112,7 +123,7 @@ bool mysql_create_frm(THD *thd, my_string file_name, uint key_buff_length=keys*(7+NAME_LEN+MAX_REF_PARTS*9)+16; keybuff=(uchar*) my_malloc(key_buff_length, MYF(0)); - key_info_length=pack_keys(keybuff,keys,key_info); + key_info_length= pack_keys(keybuff, keys, key_info, data_offset); VOID(get_form_pos(file,fileinfo,&formnames)); if (!(filepos=make_new_entry(file,fileinfo,&formnames,""))) goto err; @@ -135,13 +146,13 @@ bool mysql_create_frm(THD *thd, my_string file_name, (ulong) uint2korr(fileinfo+6)+ (ulong) key_buff_length, MY_SEEK_SET,MYF(0))); if (make_empty_rec(file,create_info->db_type,create_info->table_options, - create_fields,reclength,null_fields)) + create_fields,reclength, null_fields, data_offset)) goto err; VOID(my_seek(file,filepos,MY_SEEK_SET,MYF(0))); if (my_write(file,(byte*) forminfo,288,MYF_RW) || my_write(file,(byte*) screen_buff,info_length,MYF_RW) || - pack_fields(file,create_fields)) + pack_fields(file, create_fields, data_offset)) goto err; #ifdef HAVE_CRYPTED_FRM @@ -313,7 +324,8 @@ static uchar * pack_screens(List &create_fields, /* Pack keyinfo and keynames to keybuff for save in form-file. */ -static uint pack_keys(uchar *keybuff,uint key_count,KEY *keyinfo) +static uint pack_keys(uchar *keybuff, uint key_count, KEY *keyinfo, + ulong data_offset) { uint key_parts,length; uchar *pos, *keyname_pos; @@ -340,10 +352,13 @@ static uint pack_keys(uchar *keybuff,uint key_count,KEY *keyinfo) key_part++) { - DBUG_PRINT("loop",("field: %d startpos: %ld length: %ld", - key_part->fieldnr,key_part->offset,key_part->length)); + uint offset; + DBUG_PRINT("loop",("field: %d startpos: %lu length: %ld", + key_part->fieldnr, key_part->offset + data_offset, + key_part->length)); int2store(pos,key_part->fieldnr+1+FIELD_NAME_USED); - int2store(pos+2,key_part->offset+1); + offset= (uint) (key_part->offset+data_offset+1); + int2store(pos+2, offset); pos[4]=0; // Sort order int2store(pos+5,key_part->key_type); int2store(pos+7,key_part->length); @@ -384,8 +399,8 @@ static uint pack_keys(uchar *keybuff,uint key_count,KEY *keyinfo) static bool pack_header(uchar *forminfo, enum db_type table_type, List &create_fields, - uint info_length, uint screens,uint table_options, - handler *file) + uint info_length, uint screens, uint table_options, + ulong data_offset, handler *file) { uint length,int_count,int_length,no_empty, int_parts; uint time_stamp_pos,null_fields; @@ -425,10 +440,10 @@ static bool pack_header(uchar *forminfo, enum db_type table_type, if (field->sql_type == FIELD_TYPE_TIMESTAMP && MTYP_TYPENR(field->unireg_check) != Field::NONE && !time_stamp_pos) - time_stamp_pos=(int) field->offset+1; + time_stamp_pos= (uint) field->offset+ (uint) data_offset + 1; length=field->pack_length; - if ((int) field->offset+length > reclength) - reclength=(int) field->offset+length; + if ((uint) field->offset+ (uint) data_offset+ length > reclength) + reclength=(uint) (field->offset+ data_offset + length); n_length+= (ulong) strlen(field->field_name)+1; field->interval_id=0; if (field->interval) @@ -538,7 +553,8 @@ static uint get_interval_id(uint *int_count,List &create_fields, /* Save fields, fieldnames and intervals */ -static bool pack_fields(File file,List &create_fields) +static bool pack_fields(File file, List &create_fields, + ulong data_offset) { reg2 uint i; uint int_count, comment_length=0; @@ -553,11 +569,13 @@ static bool pack_fields(File file,List &create_fields) int_count=0; while ((field=it++)) { + uint recpos; buff[0]= (uchar) field->row; buff[1]= (uchar) field->col; buff[2]= (uchar) field->sc_length; int2store(buff+3, field->length); - uint recpos=(uint) field->offset+1; + /* The +1 is here becasue the col offset in .frm file have offset 1 */ + recpos= field->offset+1 + (uint) data_offset; int3store(buff+5,recpos); int2store(buff+8,field->pack_flag); int2store(buff+10,field->unireg_check); @@ -643,11 +661,12 @@ static bool pack_fields(File file,List &create_fields) static bool make_empty_rec(File file,enum db_type table_type, uint table_options, List &create_fields, - uint reclength, uint null_fields) + uint reclength, uint null_fields, + ulong data_offset) { int error; Field::utype type; - uint firstpos,null_count,null_length; + uint firstpos,null_count; uchar *buff,*null_pos; TABLE table; create_field *field; @@ -672,17 +691,16 @@ static bool make_empty_rec(File file,enum db_type table_type, firstpos=reclength; null_count=0; if (!(table_options & HA_OPTION_PACK_RECORD)) - { - null_fields++; // Need one bit for delete mark - null_count++; - } - bfill(buff,(null_length=(null_fields+7)/8),255); + null_count++; // Need one bit for delete mark + DBUG_ASSERT(data_offset == ((null_fields + null_count + 7) / 8)); + bfill(buff, (uint) data_offset, 255); null_pos=buff; List_iterator it(create_fields); while ((field=it++)) { - Field *regfield=make_field((char*) buff+field->offset,field->length, + Field *regfield=make_field((char*) buff+field->offset + data_offset, + field->length, field->flags & NOT_NULL_FLAG ? 0: null_pos+null_count/8, 1 << (null_count & 7), @@ -698,9 +716,9 @@ static bool make_empty_rec(File file,enum db_type table_type, if (!(field->flags & NOT_NULL_FLAG)) null_count++; - if ((uint) field->offset < firstpos && + if ((uint) (field->offset + data_offset) < firstpos && regfield->type() != FIELD_TYPE_NULL) - firstpos= field->offset; + firstpos= field->offset + data_offset; type= (Field::utype) MTYP_TYPENR(field->unireg_check); @@ -724,8 +742,8 @@ static bool make_empty_rec(File file,enum db_type table_type, } /* Fill not used startpos */ - bfill((byte*) buff+null_length,firstpos-null_length,255); - error=(int) my_write(file,(byte*) buff,(uint) reclength,MYF_RW); + bfill((byte*) buff+data_offset, firstpos- (uint) data_offset, 255); + error=(int) my_write(file,(byte*) buff, (uint) reclength,MYF_RW); my_free((gptr) buff,MYF(MY_FAE)); delete handler; DBUG_RETURN(error); diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c index f12cfe3256e..12c1ae905cf 100644 --- a/strings/ctype-ucs2.c +++ b/strings/ctype-ucs2.c @@ -1251,7 +1251,7 @@ static uint my_numchars_ucs2(CHARSET_INFO *cs __attribute__((unused)), const char *b, const char *e) { - return (e-b)/2; + return (uint) (e-b)/2; } @@ -1261,7 +1261,8 @@ uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)), const char *e __attribute__((unused)), uint pos) { - return pos > e - b ? e - b + 2 : pos * 2; + uint string_length= (uint) (e - b); + return pos > string_length ? string_length + 2 : pos * 2; } @@ -1270,7 +1271,8 @@ uint my_well_formed_len_ucs2(CHARSET_INFO *cs __attribute__((unused)), const char *b, const char *e, uint nchars, int *error) { - uint nbytes= (e-b) & ~ (uint)1; + /* Ensure string length is dividable with 2 */ + uint nbytes= ((uint) (e-b)) & ~(uint) 1; *error= 0; nchars*= 2; return min(nbytes, nchars); diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c index 268f7d18f2a..d0e529288f7 100644 --- a/strings/my_vsnprintf.c +++ b/strings/my_vsnprintf.c @@ -28,7 +28,7 @@ %#[l]u %#[l]x %#.#s Note first # is ignored - + RETURN length of result string */