summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-02-16 10:03:25 +0200
committerunknown <monty@mysql.com>2004-02-16 10:03:25 +0200
commita07e48eca04b1564da9868f229ba5d958994db69 (patch)
tree44dc172194086edaeef7da9c9ed059171579a886
parent5b2c3126277a8eedab5bcc8a9b0ce7386ccc3dbe (diff)
downloadmariadb-git-a07e48eca04b1564da9868f229ba5d958994db69.tar.gz
After merge fixes
Added more DBUG statements Ensure that we are comparing end space with BINARY strings Use 'any_db' instead of '' to mean any database. (For HANDLER command) Only strip ' ' when comparing CHAR, not other space-like characters (like \t) BitKeeper/deleted/.del-ctype_tis620.result-old~3578ceb0b8284685: Delete: mysql-test/r/ctype_tis620.result-old BitKeeper/deleted/.del-ctype_tis620.test-old~ffb1bbd2935d1aba: Delete: mysql-test/t/ctype_tis620.test-old client/mysqlbinlog.cc: Added DBUG statements Added call of my_end() to free all used memory on exit heap/hp_info.c: After merge fixes heap/hp_open.c: After merge fixes include/heap.h: After merge fixes include/m_ctype.h: Use pchar instead of 'int' for character parameters. Added 'my_binary_compare()' include/m_string.h: Fixed wrong define innobase/ibuf/ibuf0ibuf.c: After merge fixes innobase/srv/srv0start.c: After merge fixes mysql-test/r/alter_table.result: Fixed results after merge mysql-test/r/auto_increment.result: Fixed results after merge mysql-test/r/bdb.result: Fixed results after merge mysql-test/r/binary.result: Fixed results after merge mysql-test/r/create.result: Fixed results after merge mysql-test/r/ctype_mb.result: Fixed results after merge mysql-test/r/ctype_tis620.result: Fixed results after merge mysql-test/r/ctype_utf8.result: Fixed results after merge mysql-test/r/delete.result: Fixed results after merge mysql-test/r/func_compress.result: Fixed results after merge mysql-test/r/func_gconcat.result: Fixed results after merge mysql-test/r/func_group.result: Fixed results after merge mysql-test/r/func_str.result: Fixed results after merge mysql-test/r/innodb.result: Fixed results after merge mysql-test/r/insert.result: Fixed results after merge mysql-test/r/insert_select.result: Fixed results after merge mysql-test/r/key.result: Fixed results after merge mysql-test/r/loaddata.result: Fixed results after merge mysql-test/r/lock.result: Fixed results after merge mysql-test/r/myisam.result: Fixed results after merge mysql-test/r/null.result: Fixed results after merge mysql-test/r/null_key.result: Fixed results after merge mysql-test/r/order_by.result: Fixed results after merge mysql-test/r/query_cache.result: Fixed results after merge mysql-test/r/range.result: Fixed results after merge mysql-test/r/rpl_multi_delete.result: Fixed results after merge mysql-test/r/rpl_until.result: Fixed results after merge mysql-test/r/subselect.result: Fixed results after merge mysql-test/r/subselect_innodb.result: Fixed results after merge mysql-test/r/type_blob.result: Fixed results after merge mysql-test/r/type_datetime.result: Fixed results after merge mysql-test/r/type_decimal.result: Fixed results after merge mysql-test/r/type_enum.result: Fixed results after merge mysql-test/r/type_float.result: Fixed results after merge mysql-test/r/type_ranges.result: Fixed results after merge mysql-test/r/type_time.result: Fixed results after merge mysql-test/r/type_timestamp.result: Fixed results after merge mysql-test/r/type_uint.result: Fixed results after merge mysql-test/r/type_year.result: Fixed results after merge mysql-test/r/variables.result: Fixed results after merge mysql-test/r/warnings.result: Fixed results after merge mysql-test/t/case.test: Fixed shifted error messages mysql-test/t/create.test: Fixed shifted error messages mysql-test/t/ctype_collate.test: Fixed shifted error messages mysql-test/t/ctype_tis620.test: Merge with 4.0 ctype_tis620 test mysql-test/t/delete.test: Fixed shifted error messages mysql-test/t/derived.test: Fixed shifted error messages mysql-test/t/fulltext.test: Fixed shifted error messages mysql-test/t/func_in.test: Fixed shifted error messages mysql-test/t/func_str.test: Fixed shifted error messages mysql-test/t/func_test.test: Fixed shifted error messages mysql-test/t/grant.test: Fixed shifted error messages mysql-test/t/innodb.test: Change to 4.1 syntax mysql-test/t/key_cache.test: Fixed shifted error messages mysql-test/t/myisam.test: New test of blob and end space mysql-test/t/row.test: Fixed shifted error messages mysql-test/t/rpl_until.test: Fixed shifted error messages mysql-test/t/subselect.test: Fixed shifted error messages mysql-test/t/subselect_innodb.test: Fix test to take into account foreign key constraints mysql-test/t/union.test: Fixed shifted error messages mysql-test/t/user_var.test: Fixed shifted error messages mysql-test/t/variables.test: Fixed shifted error messages mysys/my_handler.c: Merge with 4.0 code sql/ha_heap.cc: After merge fixes sql/handler.cc: After merge fixes sql/item.cc: After merge fixes sql/item_cmpfunc.cc: Ensure that we are comparing end space with BINARY strings sql/item_cmpfunc.h: Ensure that we are comparing end space with BINARY strings sql/log_event.cc: More DBUG statements Ensure that we use all options to LOAD DATA in replication sql/opt_range.cc: After merge fixes sql/sql_db.cc: After merge fixes sql/sql_handler.cc: After merge fixes Use 'any_db' instead of '' to mean 'no database comparison' sql/sql_parse.cc: After merge fixes sql/sql_select.cc: After merge fixes Added function comment for setup_group() sql/sql_string.cc: Added stringcmp() for binary comparison. Added function comments for sortcmp() and stringcmp() sql/sql_string.h: Added stringcmp() sql/sql_table.cc: After merge fixes sql/sql_update.cc: After merge fixes sql/sql_yacc.yy: Use 'any_db' instead of '' to mean any database. Using "" causes a 'wrong db name' error. strings/ctype-big5.c: Strip only end space, not other space characters. strings/ctype-bin.c: Removed some not needed functions. Added function comments Don't remove end space in comparisons Change my_wildcmp_bin() to be 'identical' with other similar code strings/ctype-czech.c: Strip only end space, not other space characters. strings/ctype-gbk.c: Strip only end space, not other space characters. strings/ctype-latin1.c: Strip only end space, not other space characters. strings/ctype-mb.c: Strip only end space, not other space characters. strings/ctype-simple.c: Strip only end space, not other space characters. strings/ctype-sjis.c: Strip only end space, not other space characters. strings/ctype-tis620.c: Added usage of my_instr_simple. This needs to be cleaned up! strings/ctype-utf8.c: Strip only end space, not other space characters. strings/ctype-win1250ch.c: Strip only end space, not other space characters. Fixed indentation strings/strto.c: Code cleanup
-rw-r--r--client/mysqlbinlog.cc63
-rw-r--r--heap/hp_info.c1
-rw-r--r--heap/hp_open.c1
-rw-r--r--include/heap.h1
-rw-r--r--include/m_ctype.h5
-rw-r--r--include/m_string.h2
-rw-r--r--innobase/ibuf/ibuf0ibuf.c8
-rw-r--r--innobase/srv/srv0start.c25
-rw-r--r--mysql-test/r/alter_table.result26
-rw-r--r--mysql-test/r/auto_increment.result6
-rw-r--r--mysql-test/r/bdb.result12
-rw-r--r--mysql-test/r/binary.result2
-rw-r--r--mysql-test/r/create.result2
-rw-r--r--mysql-test/r/ctype_mb.result6
-rw-r--r--mysql-test/r/ctype_tis620.result120
-rw-r--r--mysql-test/r/ctype_tis620.result-old113
-rw-r--r--mysql-test/r/ctype_utf8.result2
-rw-r--r--mysql-test/r/delete.result8
-rw-r--r--mysql-test/r/func_compress.result4
-rw-r--r--mysql-test/r/func_gconcat.result4
-rw-r--r--mysql-test/r/func_group.result2
-rw-r--r--mysql-test/r/func_str.result352
-rw-r--r--mysql-test/r/innodb.result2
-rw-r--r--mysql-test/r/insert.result2
-rw-r--r--mysql-test/r/insert_select.result3
-rw-r--r--mysql-test/r/key.result12
-rw-r--r--mysql-test/r/loaddata.result34
-rw-r--r--mysql-test/r/lock.result2
-rw-r--r--mysql-test/r/myisam.result18
-rw-r--r--mysql-test/r/null.result22
-rw-r--r--mysql-test/r/null_key.result2
-rw-r--r--mysql-test/r/order_by.result8
-rw-r--r--mysql-test/r/query_cache.result8
-rw-r--r--mysql-test/r/range.result1
-rw-r--r--mysql-test/r/rpl_multi_delete.result4
-rw-r--r--mysql-test/r/rpl_until.result2
-rw-r--r--mysql-test/r/subselect.result40
-rw-r--r--mysql-test/r/subselect_innodb.result2
-rw-r--r--mysql-test/r/type_blob.result6
-rw-r--r--mysql-test/r/type_datetime.result10
-rw-r--r--mysql-test/r/type_decimal.result110
-rw-r--r--mysql-test/r/type_enum.result4
-rw-r--r--mysql-test/r/type_float.result4
-rw-r--r--mysql-test/r/type_ranges.result66
-rw-r--r--mysql-test/r/type_time.result6
-rw-r--r--mysql-test/r/type_timestamp.result36
-rw-r--r--mysql-test/r/type_uint.result2
-rw-r--r--mysql-test/r/type_year.result2
-rw-r--r--mysql-test/r/variables.result6
-rw-r--r--mysql-test/r/warnings.result98
-rw-r--r--mysql-test/t/case.test8
-rw-r--r--mysql-test/t/create.test6
-rw-r--r--mysql-test/t/ctype_collate.test14
-rw-r--r--mysql-test/t/ctype_tis620.test65
-rw-r--r--mysql-test/t/ctype_tis620.test-old64
-rw-r--r--mysql-test/t/delete.test4
-rw-r--r--mysql-test/t/derived.test6
-rw-r--r--mysql-test/t/fulltext.test4
-rw-r--r--mysql-test/t/func_in.test6
-rw-r--r--mysql-test/t/func_str.test48
-rw-r--r--mysql-test/t/func_test.test12
-rw-r--r--mysql-test/t/grant.test4
-rw-r--r--mysql-test/t/innodb.test4
-rw-r--r--mysql-test/t/key_cache.test4
-rw-r--r--mysql-test/t/myisam.test12
-rw-r--r--mysql-test/t/row.test14
-rw-r--r--mysql-test/t/rpl_until.test10
-rw-r--r--mysql-test/t/subselect.test58
-rw-r--r--mysql-test/t/subselect_innodb.test2
-rw-r--r--mysql-test/t/union.test4
-rw-r--r--mysql-test/t/user_var.test4
-rw-r--r--mysql-test/t/variables.test5
-rw-r--r--mysys/my_handler.c14
-rw-r--r--sql/ha_heap.cc4
-rw-r--r--sql/handler.cc4
-rw-r--r--sql/item.cc5
-rw-r--r--sql/item_cmpfunc.cc57
-rw-r--r--sql/item_cmpfunc.h2
-rw-r--r--sql/log_event.cc140
-rw-r--r--sql/opt_range.cc4
-rw-r--r--sql/sql_db.cc2
-rw-r--r--sql/sql_handler.cc4
-rw-r--r--sql/sql_parse.cc13
-rw-r--r--sql/sql_select.cc28
-rw-r--r--sql/sql_string.cc51
-rw-r--r--sql/sql_string.h1
-rw-r--r--sql/sql_table.cc4
-rw-r--r--sql/sql_update.cc9
-rw-r--r--sql/sql_yacc.yy4
-rw-r--r--strings/ctype-big5.c12
-rw-r--r--strings/ctype-bin.c154
-rw-r--r--strings/ctype-czech.c13
-rw-r--r--strings/ctype-gbk.c6
-rw-r--r--strings/ctype-latin1.c4
-rw-r--r--strings/ctype-mb.c10
-rw-r--r--strings/ctype-simple.c65
-rw-r--r--strings/ctype-sjis.c12
-rw-r--r--strings/ctype-tis620.c9
-rw-r--r--strings/ctype-utf8.c4
-rw-r--r--strings/ctype-win1250ch.c254
-rw-r--r--strings/strto.c2
101 files changed, 1489 insertions, 1037 deletions
diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc
index 9e30b1ae71e..27ad91c8e8a 100644
--- a/client/mysqlbinlog.cc
+++ b/client/mysqlbinlog.cc
@@ -233,15 +233,16 @@ int Load_log_processor::process(Create_file_log_event *ce)
int error= 0;
char *fname, *ptr;
File file;
+ DBUG_ENTER("Load_log_processor::process");
if (set_dynamic(&file_names,(gptr)&ce,ce->file_id))
{
sql_print_error("Could not construct local filename %s%s",
target_dir_name,bname);
- return -1;
+ DBUG_RETURN(-1);
}
if (!(fname= my_malloc(full_len,MYF(MY_WME))))
- return -1;
+ DBUG_RETURN(-1);
memcpy(fname, target_dir_name, target_dir_name_len);
ptr= fname + target_dir_name_len;
@@ -253,20 +254,21 @@ int Load_log_processor::process(Create_file_log_event *ce)
{
sql_print_error("Could not construct local filename %s%s",
target_dir_name,bname);
- return -1;
+ DBUG_RETURN(-1);
}
ce->set_fname_outside_temp_buf(fname,strlen(fname));
if (my_write(file,(byte*) ce->block,ce->block_len,MYF(MY_WME|MY_NABP)))
error= -1;
- if (my_close(file,MYF(MY_WME)))
+ if (my_close(file, MYF(MY_WME)))
error= -1;
- return error;
+ DBUG_RETURN(error);
}
int Load_log_processor::process(Append_block_log_event *ae)
{
+ DBUG_ENTER("Load_log_processor::process");
Create_file_log_event* ce= ((ae->file_id < file_names.elements) ?
*((Create_file_log_event**)file_names.buffer +
ae->file_id) :
@@ -278,12 +280,12 @@ int Load_log_processor::process(Append_block_log_event *ae)
int error= 0;
if (((file= my_open(ce->fname,
O_APPEND|O_BINARY|O_WRONLY,MYF(MY_WME))) < 0))
- return -1;
+ DBUG_RETURN(-1);
if (my_write(file,(byte*)ae->block,ae->block_len,MYF(MY_WME|MY_NABP)))
error= -1;
if (my_close(file,MYF(MY_WME)))
error= -1;
- return error;
+ DBUG_RETURN(error);
}
/*
@@ -293,7 +295,7 @@ int Load_log_processor::process(Append_block_log_event *ae)
*/
fprintf(stderr,"Warning: ignoring Append_block as there is no \
Create_file event for file_id: %u\n",ae->file_id);
- return -1;
+ DBUG_RETURN(-1);
}
@@ -304,6 +306,8 @@ int process_event(ulonglong *rec_count, char *last_db, Log_event *ev,
my_off_t pos, int old_format)
{
char ll_buff[21];
+ DBUG_ENTER("process_event");
+
if ((*rec_count) >= offset)
{
if (!short_form)
@@ -315,11 +319,7 @@ int process_event(ulonglong *rec_count, char *last_db, Log_event *ev,
{
const char * log_dbname = ((Query_log_event*)ev)->db;
if ((log_dbname != NULL) && (strcmp(log_dbname, database)))
- {
- (*rec_count)++;
- delete ev;
- return 0; // Time for next event
- }
+ goto end;
}
ev->print(result_file, short_form, last_db);
break;
@@ -336,11 +336,7 @@ int process_event(ulonglong *rec_count, char *last_db, Log_event *ev,
*/
const char * log_dbname = ce->db;
if ((log_dbname != NULL) && (strcmp(log_dbname, database)))
- {
- (*rec_count)++;
- delete ev;
- return 0; // next
- }
+ goto end; // Next event
}
/*
We print the event, but with a leading '#': this is just to inform
@@ -388,10 +384,12 @@ Create_file event for file_id: %u\n",exv->file_id);
ev->print(result_file, short_form, last_db);
}
}
+
+end:
(*rec_count)++;
if (ev)
delete ev;
- return 0;
+ DBUG_RETURN(0);
}
@@ -472,6 +470,7 @@ static void die(const char* fmt, ...)
fprintf(stderr, "\n");
va_end(args);
cleanup();
+ my_end(0);
exit(1);
}
@@ -645,6 +644,8 @@ static int dump_remote_log_entries(const char* logname)
uint len;
NET* net = &mysql->net;
int old_format;
+ DBUG_ENTER("dump_remote_log_entries");
+
old_format = check_master_version(mysql);
if (!position)
@@ -663,7 +664,7 @@ static int dump_remote_log_entries(const char* logname)
if (simple_command(mysql, COM_BINLOG_DUMP, buf, len + 10, 1))
{
fprintf(stderr,"Got fatal error sending the log dump command\n");
- return 1;
+ DBUG_RETURN(1);
}
my_off_t old_off= 0;
@@ -678,7 +679,7 @@ static int dump_remote_log_entries(const char* logname)
{
fprintf(stderr, "Got error reading packet from server: %s\n",
mysql_error(mysql));
- return 1;
+ DBUG_RETURN(1);
}
if (len < 8 && net->read_pos[0] == 254)
break; // end of data
@@ -689,14 +690,14 @@ static int dump_remote_log_entries(const char* logname)
if (!ev)
{
fprintf(stderr, "Could not construct log event object\n");
- return 1;
+ DBUG_RETURN(1);
}
Log_event_type type= ev->get_type_code();
if (!old_format || ( type != LOAD_EVENT && type != CREATE_FILE_EVENT))
{
if (process_event(&rec_count,last_db,ev,old_off,old_format))
- return 1;
+ DBUG_RETURN(1);
}
else
{
@@ -706,16 +707,17 @@ static int dump_remote_log_entries(const char* logname)
File file;
if ((file= load_processor.prepare_new_file_for_old_format(le,fname)) < 0)
- return 1;
+ DBUG_RETURN(1);
+
if (process_event(&rec_count,last_db,ev,old_off,old_format))
{
my_close(file,MYF(MY_WME));
- return 1;
+ DBUG_RETURN(1);
}
if (load_processor.load_old_format_file(net,old_fname,old_len,file))
{
my_close(file,MYF(MY_WME));
- return 1;
+ DBUG_RETURN(1);
}
my_close(file,MYF(MY_WME));
}
@@ -729,7 +731,7 @@ static int dump_remote_log_entries(const char* logname)
else
old_off= BIN_LOG_HEADER_SIZE;
}
- return 0;
+ DBUG_RETURN(0);
}
@@ -738,6 +740,7 @@ static int check_header(IO_CACHE* file)
byte header[BIN_LOG_HEADER_SIZE];
byte buf[PROBE_HEADER_LEN];
int old_format=0;
+ DBUG_ENTER("check_header");
my_off_t pos = my_b_tell(file);
my_b_seek(file, (my_off_t)0);
@@ -755,7 +758,7 @@ static int check_header(IO_CACHE* file)
}
}
my_b_seek(file, pos);
- return old_format;
+ DBUG_RETURN(old_format);
}
@@ -857,6 +860,8 @@ int main(int argc, char** argv)
static char **defaults_argv;
int exit_value;
MY_INIT(argv[0]);
+ DBUG_ENTER("main");
+ DBUG_PROCESS(argv[0]);
parse_args(&argc, (char***)&argv);
defaults_argv=argv;
@@ -905,7 +910,7 @@ int main(int argc, char** argv)
free_defaults(defaults_argv);
my_end(0);
exit(exit_value);
- return exit_value; // Keep compilers happy
+ DBUG_RETURN(exit_value); // Keep compilers happy
}
/*
diff --git a/heap/hp_info.c b/heap/hp_info.c
index a403ff9bb45..2e56d030234 100644
--- a/heap/hp_info.c
+++ b/heap/hp_info.c
@@ -54,7 +54,6 @@ int heap_info(reg1 HP_INFO *info,reg2 HEAPINFO *x, int flag )
x->index_length = info->s->index_length;
x->max_records = info->s->max_records;
x->errkey = info->errkey;
- x->implicit_emptied= info->implicit_emptied;
if (flag & HA_STATUS_AUTO)
x->auto_increment= info->s->auto_increment + 1;
DBUG_RETURN(0);
diff --git a/heap/hp_open.c b/heap/hp_open.c
index 497b3e4772d..1fa832208fb 100644
--- a/heap/hp_open.c
+++ b/heap/hp_open.c
@@ -63,7 +63,6 @@ HP_INFO *heap_open(const char *name, int mode)
#ifndef DBUG_OFF
info->opt_flag= READ_CHECK_USED; /* Check when changing */
#endif
- info->implicit_emptied= 0;
DBUG_PRINT("exit",("heap: %lx reclength: %d records_in_block: %d",
info,share->reclength,share->block.records_in_block));
DBUG_RETURN(info);
diff --git a/include/heap.h b/include/heap.h
index cb73b07cd41..c5f2be81fb7 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -51,7 +51,6 @@ typedef struct st_heapinfo /* Struct from heap_info */
uint reclength; /* Length of one record */
int errkey;
ulonglong auto_increment;
- my_bool implicit_emptied;
} HEAPINFO;
diff --git a/include/m_ctype.h b/include/m_ctype.h
index 88c3418fc0d..247b2220920 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -111,7 +111,7 @@ typedef struct my_collation_handler_st
uchar *, uint, const uchar *, uint);
my_bool (*like_range)(struct charset_info_st *,
const char *s, uint s_length,
- int w_prefix, int w_one, int w_many,
+ pchar w_prefix, pchar w_one, pchar w_many,
uint res_length,
char *min_str, char *max_str,
uint *min_len, uint *max_len);
@@ -300,7 +300,7 @@ void my_fill_8bit(CHARSET_INFO *cs, char* to, uint l, int fill);
my_bool my_like_range_simple(CHARSET_INFO *cs,
const char *ptr, uint ptr_length,
- int escape, int w_one, int w_many,
+ pbool escape, pbool w_one, pbool w_many,
uint res_length,
char *min_str, char *max_str,
uint *min_length, uint *max_length);
@@ -381,6 +381,7 @@ extern my_bool my_parse_charset_xml(const char *bug, uint len,
#define my_isvar(s,c) (my_isalnum(s,c) || (c) == '_')
#define my_isvar_start(s,c) (my_isalpha(s,c) || (c) == '_')
+#define my_binary_compare(s) ((s)->state & MY_CS_BINSORT)
#define use_strnxfrm(s) ((s)->state & MY_CS_STRNXFRM)
#define my_strnxfrm(s, a, b, c, d) ((s)->coll->strnxfrm((s), (a), (b), (c), (d)))
#define my_strnncoll(s, a, b, c, d) ((s)->coll->strnncoll((s), (a), (b), (c), (d)))
diff --git a/include/m_string.h b/include/m_string.h
index d72342fb3c1..5db7158f110 100644
--- a/include/m_string.h
+++ b/include/m_string.h
@@ -126,7 +126,7 @@ extern void bmove_align(gptr dst,const gptr src,uint len);
#include <assert.h>
#define memcpy_overlap(A,B,C) \
DBUG_ASSERT((A) == (B) || ((A)+(C)) <= (B) || ((B)+(C)) <= (A)); \
-bmove((byte*) key,(byte*) from,(size_t) length);
+bmove((byte*) (A),(byte*) (B),(size_t) (C));
#else
#define memcpy_overlap(A,B,C) memcpy((A), (B), (C))
#endif /* HAVE_purify */
diff --git a/innobase/ibuf/ibuf0ibuf.c b/innobase/ibuf/ibuf0ibuf.c
index 80128c3137d..805f08af361 100644
--- a/innobase/ibuf/ibuf0ibuf.c
+++ b/innobase/ibuf/ibuf0ibuf.c
@@ -3045,14 +3045,6 @@ loop:
goto reset_bit;
}
- /* Do NOT merge to the 4.1 code base! */
- if (trx_sys_downgrading_from_4_1_1) {
- fprintf(stderr,
-"InnoDB: Fatal error: you are downgrading from >= 4.1.1 to 4.0, but\n"
-"InnoDB: the insert buffer was not empty.\n");
- ut_a(0);
- }
-
if (corruption_noticed) {
rec_sprintf(err_buf, 450, ibuf_rec);
fprintf(stderr,
diff --git a/innobase/srv/srv0start.c b/innobase/srv/srv0start.c
index 7b9c7a4066e..e6fdc95fad0 100644
--- a/innobase/srv/srv0start.c
+++ b/innobase/srv/srv0start.c
@@ -1587,31 +1587,6 @@ NetWare. */
os_fast_mutex_free(&srv_os_test_mutex);
- /***********************************************************/
- /* Do NOT merge to the 4.1 code base! */
- if (trx_sys_downgrading_from_4_1_1) {
- fprintf(stderr,
-"InnoDB: You are downgrading from an InnoDB version which allows multiple\n"
-"InnoDB: tablespaces. Wait that purge and insert buffer merge run to\n"
-"InnoDB: completion...\n");
- for (;;) {
- os_thread_sleep(10000000);
-
- if (0 == strcmp(srv_main_thread_op_info,
- "waiting for server activity")) {
- break;
- }
- }
- fprintf(stderr,
-"InnoDB: Full purge and insert buffer merge completed.\n");
-
- trx_sys_mark_downgraded_from_4_1_1();
-
- fprintf(stderr,
-"InnoDB: Downgraded from >= 4.1.1 to 4.0\n");
- }
- /***********************************************************/
-
if (srv_print_verbose_log) {
ut_print_timestamp(stderr);
fprintf(stderr,
diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result
index 1891da73d85..703cc59d9a4 100644
--- a/mysql-test/r/alter_table.result
+++ b/mysql-test/r/alter_table.result
@@ -412,18 +412,6 @@ 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;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL default '0',
- `b` int(11) default NULL,
- UNIQUE KEY `b` (`b`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-ALTER TABLE t1 DROP PRIMARY KEY;
-ERROR 42000: Can't DROP 'PRIMARY'. Check that column/key exists
-DROP TABLE t1;
create table t1 (name char(15));
insert into t1 (name) values ("current");
create database mysqltest;
@@ -436,7 +424,7 @@ select * from mysqltest.t1;
name
mysqltest
alter table t1 rename mysqltest.t1;
-Table 't1' already exists
+ERROR 42S01: Table 't1' already exists
select * from t1;
name
current
@@ -445,3 +433,15 @@ name
mysqltest
drop table t1;
drop database mysqltest;
+CREATE TABLE t1 (a int PRIMARY KEY, b INT UNIQUE);
+ALTER TABLE t1 DROP PRIMARY KEY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) NOT NULL default '0',
+ `b` int(11) default NULL,
+ UNIQUE KEY `b` (`b`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ALTER TABLE t1 DROP PRIMARY KEY;
+ERROR 42000: Can't DROP 'PRIMARY'. Check that column/key exists
+DROP TABLE t1;
diff --git a/mysql-test/r/auto_increment.result b/mysql-test/r/auto_increment.result
index 7a7faf0db9a..8f77b306d3e 100644
--- a/mysql-test/r/auto_increment.result
+++ b/mysql-test/r/auto_increment.result
@@ -162,7 +162,7 @@ last_insert_id()
255
insert into t1 set i = null;
Warnings:
-Warning 1263 Data truncated, out of range for column 'i' at row 1
+Warning 1264 Data truncated, out of range for column 'i' at row 1
select last_insert_id();
last_insert_id()
255
@@ -213,7 +213,7 @@ a b
delete from t1 where a=0;
update t1 set a=NULL where b=6;
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'a' at row 4
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'a' at row 4
update t1 set a=300 where b=7;
SET SQL_MODE='';
insert into t1(a,b)values(NULL,8);
@@ -255,7 +255,7 @@ a b
delete from t1 where a=0;
update t1 set a=NULL where b=13;
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'a' at row 9
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'a' at row 9
update t1 set a=500 where b=14;
select * from t1 order by b;
a b
diff --git a/mysql-test/r/bdb.result b/mysql-test/r/bdb.result
index 44a7b4e03b2..bee40eac30d 100644
--- a/mysql-test/r/bdb.result
+++ b/mysql-test/r/bdb.result
@@ -1159,23 +1159,23 @@ drop table t1,t2;
create table t1 (a char(10), key(a), b int not null, key(b)) engine=bdb;
insert into t1 values ('a',1),('A',2);
explain select a from t1;
-table type possible_keys key key_len ref rows Extra
-t1 ALL NULL NULL NULL NULL 2
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2
select a from t1;
a
a
A
explain select b from t1;
-table type possible_keys key key_len ref rows Extra
-t1 index NULL b 4 NULL 2 Using index
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL b 4 NULL 2 Using index
select b from t1;
b
1
2
alter table t1 modify a char(10) binary;
explain select a from t1;
-table type possible_keys key key_len ref rows Extra
-t1 index NULL a 11 NULL 2 Using index
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL a 11 NULL 2 Using index
select a from t1;
a
A
diff --git a/mysql-test/r/binary.result b/mysql-test/r/binary.result
index d4576791aed..9c3174ec606 100644
--- a/mysql-test/r/binary.result
+++ b/mysql-test/r/binary.result
@@ -59,10 +59,8 @@ concat("-",a,"-",b,"-")
-hello-hello-
select concat("-",a,"-",b,"-") from t1 where b="hello ";
concat("-",a,"-",b,"-")
--hello-hello-
select concat("-",a,"-",b,"-") from t1 ignore index (b) where b="hello ";
concat("-",a,"-",b,"-")
--hello-hello-
alter table t1 modify b tinytext not null, drop key b, add key (b(100));
select concat("-",a,"-",b,"-") from t1 where b="hello ";
concat("-",a,"-",b,"-")
diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result
index 940c9e9a50b..e6a010a7542 100644
--- a/mysql-test/r/create.result
+++ b/mysql-test/r/create.result
@@ -11,7 +11,7 @@ create table t1 (b char(0) not null);
create table if not exists t1 (b char(0) not null);
insert into t1 values (""),(null);
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'b' at row 2
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'b' at row 2
select * from t1;
b
diff --git a/mysql-test/r/ctype_mb.result b/mysql-test/r/ctype_mb.result
index edccb047c85..5e273b3c800 100644
--- a/mysql-test/r/ctype_mb.result
+++ b/mysql-test/r/ctype_mb.result
@@ -17,9 +17,9 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES ('aaaabbbbccccdddd','aaaabbbbccccdddd','aaaabbbbccccdddd');
Warnings:
-Warning 1264 Data truncated for column 'c1' at row 1
-Warning 1264 Data truncated for column 'c2' at row 1
-Warning 1264 Data truncated for column 'c3' at row 1
+Warning 1265 Data truncated for column 'c1' at row 1
+Warning 1265 Data truncated for column 'c2' at row 1
+Warning 1265 Data truncated for column 'c3' at row 1
SELECT * FROM t1;
c1 c2 c3
aaaa aaaa aaaa
diff --git a/mysql-test/r/ctype_tis620.result b/mysql-test/r/ctype_tis620.result
index 811609d4ba9..77799717d44 100644
--- a/mysql-test/r/ctype_tis620.result
+++ b/mysql-test/r/ctype_tis620.result
@@ -1,9 +1,129 @@
drop table if exists t1;
+SET @pl0= _tis620 0x000102030405060708090A0B0C0D0E0F;
+SET @pl1= _tis620 0x101112131415161718191A1B1C1D1E1F;
+SET @pl2= _tis620 0x202122232425262728292A2B2C2D2E2F;
+SET @pl3= _tis620 0x303132333435363738393A3B3C3D3E3F;
+SET @pl4= _tis620 0x404142434445464748494A4B4C4D4E4F;
+SET @pl5= _tis620 0x505152535455565758595A5B5C5D5E5F;
+SET @pl6= _tis620 0x606162636465666768696A6B6C6D6E6F;
+SET @pl7= _tis620 0x707172737475767778797A7B7C7D7E7F;
+SET @pl8= _tis620 0x808182838485868788898A8B8C8D8E8F;
+SET @pl9= _tis620 0x909192939495969798999A9B9C9D9E9F;
+SET @plA= _tis620 0xA0A1A2A3A4A5A6A7A8A9AAABACADAEAF;
+SET @plB= _tis620 0xB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF;
+SET @plC= _tis620 0xC0C1C2C3C4C5C6C7C8C9CACBCCCDCECF;
+SET @plD= _tis620 0xD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF;
+SET @plE= _tis620 0xE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF;
+SET @plF= _tis620 0xF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF;
+SELECT hex(@u0:=convert(@pl0 using utf8));
+hex(@u0:=convert(@pl0 using utf8))
+000102030405060708090A0B0C0D0E0F
+SELECT hex(@u1:=convert(@pl1 using utf8));
+hex(@u1:=convert(@pl1 using utf8))
+101112131415161718191A1B1C1D1E1F
+SELECT hex(@u2:=convert(@pl2 using utf8));
+hex(@u2:=convert(@pl2 using utf8))
+202122232425262728292A2B2C2D2E2F
+SELECT hex(@u3:=convert(@pl3 using utf8));
+hex(@u3:=convert(@pl3 using utf8))
+303132333435363738393A3B3C3D3E3F
+SELECT hex(@u4:=convert(@pl4 using utf8));
+hex(@u4:=convert(@pl4 using utf8))
+404142434445464748494A4B4C4D4E4F
+SELECT hex(@u5:=convert(@pl5 using utf8));
+hex(@u5:=convert(@pl5 using utf8))
+505152535455565758595A5B5C5D5E5F
+SELECT hex(@u6:=convert(@pl6 using utf8));
+hex(@u6:=convert(@pl6 using utf8))
+606162636465666768696A6B6C6D6E6F
+SELECT hex(@u7:=convert(@pl7 using utf8));
+hex(@u7:=convert(@pl7 using utf8))
+707172737475767778797A7B7C7D7E7F
+SELECT hex(@u8:=convert(@pl8 using utf8));
+hex(@u8:=convert(@pl8 using utf8))
+C280C281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EC28F
+SELECT hex(@u9:=convert(@pl9 using utf8));
+hex(@u9:=convert(@pl9 using utf8))
+C290C291C292C293C294C295C296C297C298C299C29AC29BC29CC29DC29EC29F
+SELECT hex(@uA:=convert(@plA using utf8));
+hex(@uA:=convert(@plA using utf8))
+EFBFBDE0B881E0B882E0B883E0B884E0B885E0B886E0B887E0B888E0B889E0B88AE0B88BE0B88CE0B88DE0B88EE0B88F
+SELECT hex(@uB:=convert(@plB using utf8));
+hex(@uB:=convert(@plB using utf8))
+E0B890E0B891E0B892E0B893E0B894E0B895E0B896E0B897E0B898E0B899E0B89AE0B89BE0B89CE0B89DE0B89EE0B89F
+SELECT hex(@uC:=convert(@plC using utf8));
+hex(@uC:=convert(@plC using utf8))
+E0B8A0E0B8A1E0B8A2E0B8A3E0B8A4E0B8A5E0B8A6E0B8A7E0B8A8E0B8A9E0B8AAE0B8ABE0B8ACE0B8ADE0B8AEE0B8AF
+SELECT hex(@uD:=convert(@plD using utf8));
+hex(@uD:=convert(@plD using utf8))
+E0B8B0E0B8B1E0B8B2E0B8B3E0B8B4E0B8B5E0B8B6E0B8B7E0B8B8E0B8B9E0B8BAEFBFBDEFBFBDEFBFBDEFBFBDE0B8BF
+SELECT hex(@uE:=convert(@plE using utf8));
+hex(@uE:=convert(@plE using utf8))
+E0B980E0B981E0B982E0B983E0B984E0B985E0B986E0B987E0B988E0B989E0B98AE0B98BE0B98CE0B98DE0B98EE0B98F
+SELECT hex(@uF:=convert(@plF using utf8));
+hex(@uF:=convert(@plF using utf8))
+E0B990E0B991E0B992E0B993E0B994E0B995E0B996E0B997E0B998E0B999E0B99AE0B99BEFBFBDEFBFBDEFBFBDEFBFBD
+SELECT hex(convert(@u0 USING tis620));
+hex(convert(@u0 USING tis620))
+000102030405060708090A0B0C0D0E0F
+SELECT hex(convert(@u1 USING tis620));
+hex(convert(@u1 USING tis620))
+101112131415161718191A1B1C1D1E1F
+SELECT hex(convert(@u2 USING tis620));
+hex(convert(@u2 USING tis620))
+202122232425262728292A2B2C2D2E2F
+SELECT hex(convert(@u3 USING tis620));
+hex(convert(@u3 USING tis620))
+303132333435363738393A3B3C3D3E3F
+SELECT hex(convert(@u4 USING tis620));
+hex(convert(@u4 USING tis620))
+404142434445464748494A4B4C4D4E4F
+SELECT hex(convert(@u5 USING tis620));
+hex(convert(@u5 USING tis620))
+505152535455565758595A5B5C5D5E5F
+SELECT hex(convert(@u6 USING tis620));
+hex(convert(@u6 USING tis620))
+606162636465666768696A6B6C6D6E6F
+SELECT hex(convert(@u7 USING tis620));
+hex(convert(@u7 USING tis620))
+707172737475767778797A7B7C7D7E7F
+SELECT hex(convert(@u8 USING tis620));
+hex(convert(@u8 USING tis620))
+808182838485868788898A8B8C8D8E8F
+SELECT hex(convert(@u9 USING tis620));
+hex(convert(@u9 USING tis620))
+909192939495969798999A9B9C9D9E9F
+SELECT hex(convert(@uA USING tis620));
+hex(convert(@uA USING tis620))
+FFA1A2A3A4A5A6A7A8A9AAABACADAEAF
+SELECT hex(convert(@uB USING tis620));
+hex(convert(@uB USING tis620))
+B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
+SELECT hex(convert(@uC USING tis620));
+hex(convert(@uC USING tis620))
+C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
+SELECT hex(convert(@uD USING tis620));
+hex(convert(@uD USING tis620))
+D0D1D2D3D4D5D6D7D8D9DAFFFFFFFFDF
+SELECT hex(convert(@uE USING tis620));
+hex(convert(@uE USING tis620))
+E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+SELECT hex(convert(@uF USING tis620));
+hex(convert(@uF USING tis620))
+F0F1F2F3F4F5F6F7F8F9FAFBFFFFFFFF
+SET NAMES tis620;
CREATE TABLE t1 (
recid int(11) NOT NULL auto_increment,
dyninfo text,
PRIMARY KEY (recid)
) ENGINE=MyISAM;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `recid` int(11) NOT NULL auto_increment,
+ `dyninfo` text,
+ PRIMARY KEY (`recid`)
+) ENGINE=MyISAM DEFAULT CHARSET=tis620
INSERT INTO t1 VALUES (1,'color=\"STB,NPG\"\r\nengine=\"J30A13\"\r\nframe=\"MRHCG1640YP4\"\r\ngrade=\"V6\"\r\nmodel=\"ACCORD\"\r\nmodelcode=\"CG164YEN\"\r\ntype=\"VT6\"\r\n');
INSERT INTO t1 VALUES (2,'color=\"HTM,NPG,DEG,RGS\"\r\nengine=\"F23A5YP1\"\r\nframe=\"MRHCF8640YP3\"\r\ngrade=\"EXi AT\"\r\nmodel=\"ACCORD\"\r\nmodelcode=\"CF864YE\"\r\ntype=\"EXA\"\r\n');
SELECT DISTINCT
diff --git a/mysql-test/r/ctype_tis620.result-old b/mysql-test/r/ctype_tis620.result-old
deleted file mode 100644
index 10164cd07ef..00000000000
--- a/mysql-test/r/ctype_tis620.result-old
+++ /dev/null
@@ -1,113 +0,0 @@
-drop table if exists t1;
-SET @pl0= _tis620 0x000102030405060708090A0B0C0D0E0F;
-SET @pl1= _tis620 0x101112131415161718191A1B1C1D1E1F;
-SET @pl2= _tis620 0x202122232425262728292A2B2C2D2E2F;
-SET @pl3= _tis620 0x303132333435363738393A3B3C3D3E3F;
-SET @pl4= _tis620 0x404142434445464748494A4B4C4D4E4F;
-SET @pl5= _tis620 0x505152535455565758595A5B5C5D5E5F;
-SET @pl6= _tis620 0x606162636465666768696A6B6C6D6E6F;
-SET @pl7= _tis620 0x707172737475767778797A7B7C7D7E7F;
-SET @pl8= _tis620 0x808182838485868788898A8B8C8D8E8F;
-SET @pl9= _tis620 0x909192939495969798999A9B9C9D9E9F;
-SET @plA= _tis620 0xA0A1A2A3A4A5A6A7A8A9AAABACADAEAF;
-SET @plB= _tis620 0xB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF;
-SET @plC= _tis620 0xC0C1C2C3C4C5C6C7C8C9CACBCCCDCECF;
-SET @plD= _tis620 0xD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF;
-SET @plE= _tis620 0xE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF;
-SET @plF= _tis620 0xF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF;
-SELECT hex(@u0:=convert(@pl0 using utf8));
-hex(@u0:=convert(@pl0 using utf8))
-000102030405060708090A0B0C0D0E0F
-SELECT hex(@u1:=convert(@pl1 using utf8));
-hex(@u1:=convert(@pl1 using utf8))
-101112131415161718191A1B1C1D1E1F
-SELECT hex(@u2:=convert(@pl2 using utf8));
-hex(@u2:=convert(@pl2 using utf8))
-202122232425262728292A2B2C2D2E2F
-SELECT hex(@u3:=convert(@pl3 using utf8));
-hex(@u3:=convert(@pl3 using utf8))
-303132333435363738393A3B3C3D3E3F
-SELECT hex(@u4:=convert(@pl4 using utf8));
-hex(@u4:=convert(@pl4 using utf8))
-404142434445464748494A4B4C4D4E4F
-SELECT hex(@u5:=convert(@pl5 using utf8));
-hex(@u5:=convert(@pl5 using utf8))
-505152535455565758595A5B5C5D5E5F
-SELECT hex(@u6:=convert(@pl6 using utf8));
-hex(@u6:=convert(@pl6 using utf8))
-606162636465666768696A6B6C6D6E6F
-SELECT hex(@u7:=convert(@pl7 using utf8));
-hex(@u7:=convert(@pl7 using utf8))
-707172737475767778797A7B7C7D7E7F
-SELECT hex(@u8:=convert(@pl8 using utf8));
-hex(@u8:=convert(@pl8 using utf8))
-C280C281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EC28F
-SELECT hex(@u9:=convert(@pl9 using utf8));
-hex(@u9:=convert(@pl9 using utf8))
-C290C291C292C293C294C295C296C297C298C299C29AC29BC29CC29DC29EC29F
-SELECT hex(@uA:=convert(@plA using utf8));
-hex(@uA:=convert(@plA using utf8))
-EFBFBDE0B881E0B882E0B883E0B884E0B885E0B886E0B887E0B888E0B889E0B88AE0B88BE0B88CE0B88DE0B88EE0B88F
-SELECT hex(@uB:=convert(@plB using utf8));
-hex(@uB:=convert(@plB using utf8))
-E0B890E0B891E0B892E0B893E0B894E0B895E0B896E0B897E0B898E0B899E0B89AE0B89BE0B89CE0B89DE0B89EE0B89F
-SELECT hex(@uC:=convert(@plC using utf8));
-hex(@uC:=convert(@plC using utf8))
-E0B8A0E0B8A1E0B8A2E0B8A3E0B8A4E0B8A5E0B8A6E0B8A7E0B8A8E0B8A9E0B8AAE0B8ABE0B8ACE0B8ADE0B8AEE0B8AF
-SELECT hex(@uD:=convert(@plD using utf8));
-hex(@uD:=convert(@plD using utf8))
-E0B8B0E0B8B1E0B8B2E0B8B3E0B8B4E0B8B5E0B8B6E0B8B7E0B8B8E0B8B9E0B8BAEFBFBDEFBFBDEFBFBDEFBFBDE0B8BF
-SELECT hex(@uE:=convert(@plE using utf8));
-hex(@uE:=convert(@plE using utf8))
-E0B980E0B981E0B982E0B983E0B984E0B985E0B986E0B987E0B988E0B989E0B98AE0B98BE0B98CE0B98DE0B98EE0B98F
-SELECT hex(@uF:=convert(@plF using utf8));
-hex(@uF:=convert(@plF using utf8))
-E0B990E0B991E0B992E0B993E0B994E0B995E0B996E0B997E0B998E0B999E0B99AE0B99BEFBFBDEFBFBDEFBFBDEFBFBD
-SELECT hex(convert(@u0 USING tis620));
-hex(convert(@u0 USING tis620))
-000102030405060708090A0B0C0D0E0F
-SELECT hex(convert(@u1 USING tis620));
-hex(convert(@u1 USING tis620))
-101112131415161718191A1B1C1D1E1F
-SELECT hex(convert(@u2 USING tis620));
-hex(convert(@u2 USING tis620))
-202122232425262728292A2B2C2D2E2F
-SELECT hex(convert(@u3 USING tis620));
-hex(convert(@u3 USING tis620))
-303132333435363738393A3B3C3D3E3F
-SELECT hex(convert(@u4 USING tis620));
-hex(convert(@u4 USING tis620))
-404142434445464748494A4B4C4D4E4F
-SELECT hex(convert(@u5 USING tis620));
-hex(convert(@u5 USING tis620))
-505152535455565758595A5B5C5D5E5F
-SELECT hex(convert(@u6 USING tis620));
-hex(convert(@u6 USING tis620))
-606162636465666768696A6B6C6D6E6F
-SELECT hex(convert(@u7 USING tis620));
-hex(convert(@u7 USING tis620))
-707172737475767778797A7B7C7D7E7F
-SELECT hex(convert(@u8 USING tis620));
-hex(convert(@u8 USING tis620))
-808182838485868788898A8B8C8D8E8F
-SELECT hex(convert(@u9 USING tis620));
-hex(convert(@u9 USING tis620))
-909192939495969798999A9B9C9D9E9F
-SELECT hex(convert(@uA USING tis620));
-hex(convert(@uA USING tis620))
-FFA1A2A3A4A5A6A7A8A9AAABACADAEAF
-SELECT hex(convert(@uB USING tis620));
-hex(convert(@uB USING tis620))
-B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
-SELECT hex(convert(@uC USING tis620));
-hex(convert(@uC USING tis620))
-C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
-SELECT hex(convert(@uD USING tis620));
-hex(convert(@uD USING tis620))
-D0D1D2D3D4D5D6D7D8D9DAFFFFFFFFDF
-SELECT hex(convert(@uE USING tis620));
-hex(convert(@uE USING tis620))
-E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
-SELECT hex(convert(@uF USING tis620));
-hex(convert(@uF USING tis620))
-F0F1F2F3F4F5F6F7F8F9FAFBFFFFFFFF
diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result
index 815ab492fa4..4c699052113 100644
--- a/mysql-test/r/ctype_utf8.result
+++ b/mysql-test/r/ctype_utf8.result
@@ -83,7 +83,7 @@ set names koi8r;
create table t1 (s1 char(1) character set utf8);
insert into t1 values (_koi8r'ÁÂ');
Warnings:
-Warning 1264 Data truncated for column 's1' at row 1
+Warning 1265 Data truncated for column 's1' at row 1
select s1,hex(s1),char_length(s1),octet_length(s1) from t1;
s1 hex(s1) char_length(s1) octet_length(s1)
Á D0B0 1 2
diff --git a/mysql-test/r/delete.result b/mysql-test/r/delete.result
index 10f2c069429..f1acc5d2dfa 100644
--- a/mysql-test/r/delete.result
+++ b/mysql-test/r/delete.result
@@ -93,8 +93,8 @@ a b
2 12
delete ignore t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b <> (select b from t2 where t11.a < t2.a);
Warnings:
-Error 1241 Subquery returns more than 1 row
-Error 1241 Subquery returns more than 1 row
+Error 1242 Subquery returns more than 1 row
+Error 1242 Subquery returns more than 1 row
select * from t11;
a b
0 10
@@ -113,8 +113,8 @@ a b
2 12
delete ignore from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
Warnings:
-Error 1241 Subquery returns more than 1 row
-Error 1241 Subquery returns more than 1 row
+Error 1242 Subquery returns more than 1 row
+Error 1242 Subquery returns more than 1 row
select * from t11;
a b
0 10
diff --git a/mysql-test/r/func_compress.result b/mysql-test/r/func_compress.result
index 1fcda7748b3..35c1b6ae93f 100644
--- a/mysql-test/r/func_compress.result
+++ b/mysql-test/r/func_compress.result
@@ -65,6 +65,6 @@ NULL
50000
NULL
Warnings:
-Error 1258 ZLIB: Input data was corrupted for zlib
-Error 1255 Too big size of uncompressed data. The maximum size is 1048576. (probably, length of uncompressed data was corrupted)
+Error 1259 ZLIB: Input data was corrupted for zlib
+Error 1256 Too big size of uncompressed data. The maximum size is 1048576. (probably, length of uncompressed data was corrupted)
drop table t1;
diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result
index af6f7956fe3..5807bae6a06 100644
--- a/mysql-test/r/func_gconcat.result
+++ b/mysql-test/r/func_gconcat.result
@@ -163,10 +163,10 @@ grp group_concat(c)
4
5 NULL
Warnings:
-Warning 1259 1 line(s) was(were) cut by group_concat()
+Warning 1260 1 line(s) was(were) cut by group_concat()
show warnings;
Level Code Message
-Warning 1259 1 line(s) was(were) cut by group_concat()
+Warning 1260 1 line(s) was(were) cut by group_concat()
set group_concat_max_len = 1024;
select group_concat(sum(a)) from t1 group by grp;
ERROR HY000: Invalid use of group function
diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result
index 6a704f2847d..147d7776e4d 100644
--- a/mysql-test/r/func_group.result
+++ b/mysql-test/r/func_group.result
@@ -551,7 +551,7 @@ id select_type table type possible_keys key key_len ref rows Extra
explain
select min(a1) from t1 where a1 between a3 and 'KKK';
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 14 Using where
+1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 14 Using where
explain
select min(a4) from t1 where (a4 + 0.01) between 0.07 and 0.08;
id select_type table type possible_keys key key_len ref rows Extra
diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result
index ffa7191f4e5..c9eba2f2505 100644
--- a/mysql-test/r/func_str.result
+++ b/mysql-test/r/func_str.result
@@ -263,3 +263,355 @@ SELECT bugdesc, REPLACE(bugdesc, 'xxxxxxxxxxxxxxxxxxxx', 'bbbbbbbbbbbbbbbbbbbb')
bugdesc REPLACE(bugdesc, 'xxxxxxxxxxxxxxxxxxxx', 'bbbbbbbbbbbbbbbbbbbb')
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
drop table t1;
+CREATE TABLE t1 (id int(11) NOT NULL auto_increment, tmp text NOT NULL, KEY id (id)) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1, 'a545f661efdd1fb66fdee3aab79945bf');
+SELECT 1 FROM t1 WHERE tmp=AES_DECRYPT(tmp,"password");
+1
+DROP TABLE t1;
+CREATE TABLE t1 (
+wid int(10) unsigned NOT NULL auto_increment,
+data_podp date default NULL,
+status_wnio enum('nowy','podp','real','arch') NOT NULL default 'nowy',
+PRIMARY KEY(wid),
+);
+INSERT INTO t1 VALUES (8,NULL,'real');
+INSERT INTO t1 VALUES (9,NULL,'nowy');
+SELECT elt(status_wnio,data_podp) FROM t1 GROUP BY wid;
+elt(status_wnio,data_podp)
+NULL
+NULL
+DROP TABLE t1;
+CREATE TABLE t1 (title text) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('Congress reconvenes in September to debate welfare and adult education');
+INSERT INTO t1 VALUES ('House passes the CAREERS bill');
+SELECT CONCAT("</a>",RPAD("",(55 - LENGTH(title)),".")) from t1;
+CONCAT("</a>",RPAD("",(55 - LENGTH(title)),"."))
+NULL
+</a>..........................
+DROP TABLE t1;
+CREATE TABLE t1 (i int, j int);
+INSERT INTO t1 VALUES (1,1),(2,2);
+SELECT DISTINCT i, ELT(j, '345', '34') FROM t1;
+i ELT(j, '345', '34')
+1 345
+2 34
+DROP TABLE t1;
+select 1=_latin1'1';
+1=_latin1'1'
+1
+select _latin1'1'=1;
+_latin1'1'=1
+1
+select _latin2'1'=1;
+_latin2'1'=1
+1
+select 1=_latin2'1';
+1=_latin2'1'
+1
+select _latin1'1'=_latin2'1';
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation '='
+select row('a','b','c') = row('a','b','c');
+row('a','b','c') = row('a','b','c')
+1
+select row('A','b','c') = row('a','b','c');
+row('A','b','c') = row('a','b','c')
+1
+select row('A' COLLATE latin1_bin,'b','c') = row('a','b','c');
+row('A' COLLATE latin1_bin,'b','c') = row('a','b','c')
+0
+select row('A','b','c') = row('a' COLLATE latin1_bin,'b','c');
+row('A','b','c') = row('a' COLLATE latin1_bin,'b','c')
+0
+select row('A' COLLATE latin1_general_ci,'b','c') = row('a' COLLATE latin1_bin,'b','c');
+ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT) and (latin1_bin,EXPLICIT) for operation '='
+select concat(_latin1'a',_latin2'a');
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation 'concat'
+select concat(_latin1'a',_latin2'a',_latin5'a');
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE), (latin5_turkish_ci,COERCIBLE) for operation 'concat'
+select concat(_latin1'a',_latin2'a',_latin5'a',_latin7'a');
+ERROR HY000: Illegal mix of collations for operation 'concat'
+select FIELD('b','A','B');
+FIELD('b','A','B')
+2
+select FIELD('B','A','B');
+FIELD('B','A','B')
+2
+select FIELD('b' COLLATE latin1_bin,'A','B');
+FIELD('b' COLLATE latin1_bin,'A','B')
+0
+select FIELD('b','A' COLLATE latin1_bin,'B');
+FIELD('b','A' COLLATE latin1_bin,'B')
+0
+select FIELD(_latin2'b','A','B');
+ERROR HY000: Illegal mix of collations (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation 'field'
+select FIELD('b',_latin2'A','B');
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation 'field'
+select FIELD('b',_latin2'A','B',1);
+FIELD('b',_latin2'A','B',1)
+1
+select POSITION(_latin1'B' IN _latin1'abcd');
+POSITION(_latin1'B' IN _latin1'abcd')
+2
+select POSITION(_latin1'B' IN _latin1'abcd' COLLATE latin1_bin);
+POSITION(_latin1'B' IN _latin1'abcd' COLLATE latin1_bin)
+0
+select POSITION(_latin1'B' COLLATE latin1_bin IN _latin1'abcd');
+POSITION(_latin1'B' COLLATE latin1_bin IN _latin1'abcd')
+0
+select POSITION(_latin1'B' COLLATE latin1_general_ci IN _latin1'abcd' COLLATE latin1_bin);
+ERROR HY000: Illegal mix of collations (latin1_bin,EXPLICIT) and (latin1_general_ci,EXPLICIT) for operation 'locate'
+select POSITION(_latin1'B' IN _latin2'abcd');
+ERROR HY000: Illegal mix of collations (latin2_general_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation 'locate'
+select FIND_IN_SET(_latin1'B',_latin1'a,b,c,d');
+FIND_IN_SET(_latin1'B',_latin1'a,b,c,d')
+2
+select FIND_IN_SET(_latin1'B' COLLATE latin1_general_ci,_latin1'a,b,c,d' COLLATE latin1_bin);
+ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT) and (latin1_bin,EXPLICIT) for operation 'find_in_set'
+select FIND_IN_SET(_latin1'B',_latin2'a,b,c,d');
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation 'find_in_set'
+select SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin1'd',2);
+SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin1'd',2)
+abcdabc
+select SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin2'd',2);
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation 'substr_index'
+select SUBSTRING_INDEX(_latin1'abcdabcdabcd' COLLATE latin1_general_ci,_latin1'd' COLLATE latin1_bin,2);
+ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT) and (latin1_bin,EXPLICIT) for operation 'substr_index'
+select _latin1'B' between _latin1'a' and _latin1'c';
+_latin1'B' between _latin1'a' and _latin1'c'
+1
+select _latin1'B' collate latin1_bin between _latin1'a' and _latin1'c';
+_latin1'B' collate latin1_bin between _latin1'a' and _latin1'c'
+0
+select _latin1'B' between _latin1'a' collate latin1_bin and _latin1'c';
+_latin1'B' between _latin1'a' collate latin1_bin and _latin1'c'
+0
+select _latin1'B' between _latin1'a' and _latin1'c' collate latin1_bin;
+_latin1'B' between _latin1'a' and _latin1'c' collate latin1_bin
+0
+select _latin2'B' between _latin1'a' and _latin1'b';
+ERROR HY000: Illegal mix of collations (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation 'between'
+select _latin1'B' between _latin2'a' and _latin1'b';
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation 'between'
+select _latin1'B' between _latin1'a' and _latin2'b';
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE) for operation 'between'
+select _latin1'B' collate latin1_general_ci between _latin1'a' collate latin1_bin and _latin1'b';
+ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_bin,EXPLICIT), (latin1_swedish_ci,COERCIBLE) for operation 'between'
+select _latin1'B' in (_latin1'a',_latin1'b');
+_latin1'B' in (_latin1'a',_latin1'b')
+1
+select _latin1'B' collate latin1_bin in (_latin1'a',_latin1'b');
+_latin1'B' collate latin1_bin in (_latin1'a',_latin1'b')
+0
+select _latin1'B' in (_latin1'a' collate latin1_bin,_latin1'b');
+_latin1'B' in (_latin1'a' collate latin1_bin,_latin1'b')
+0
+select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin);
+_latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin)
+0
+select _latin2'B' in (_latin1'a',_latin1'b');
+ERROR HY000: Illegal mix of collations (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
+select _latin1'B' in (_latin2'a',_latin1'b');
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
+select _latin1'B' in (_latin1'a',_latin2'b');
+ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE) for operation ' IN '
+select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
+ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_bin,EXPLICIT), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
+select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
+ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_swedish_ci,COERCIBLE), (latin1_bin,EXPLICIT) for operation ' IN '
+select collation(bin(130)), coercibility(bin(130));
+collation(bin(130)) coercibility(bin(130))
+latin1_swedish_ci 3
+select collation(oct(130)), coercibility(oct(130));
+collation(oct(130)) coercibility(oct(130))
+latin1_swedish_ci 3
+select collation(conv(130,16,10)), coercibility(conv(130,16,10));
+collation(conv(130,16,10)) coercibility(conv(130,16,10))
+latin1_swedish_ci 3
+select collation(hex(130)), coercibility(hex(130));
+collation(hex(130)) coercibility(hex(130))
+latin1_swedish_ci 3
+select collation(char(130)), coercibility(hex(130));
+collation(char(130)) coercibility(hex(130))
+binary 3
+select collation(format(130,10)), coercibility(format(130,10));
+collation(format(130,10)) coercibility(format(130,10))
+latin1_swedish_ci 3
+select collation(lcase(_latin2'a')), coercibility(lcase(_latin2'a'));
+collation(lcase(_latin2'a')) coercibility(lcase(_latin2'a'))
+latin2_general_ci 3
+select collation(ucase(_latin2'a')), coercibility(ucase(_latin2'a'));
+collation(ucase(_latin2'a')) coercibility(ucase(_latin2'a'))
+latin2_general_ci 3
+select collation(left(_latin2'a',1)), coercibility(left(_latin2'a',1));
+collation(left(_latin2'a',1)) coercibility(left(_latin2'a',1))
+latin2_general_ci 3
+select collation(right(_latin2'a',1)), coercibility(right(_latin2'a',1));
+collation(right(_latin2'a',1)) coercibility(right(_latin2'a',1))
+latin2_general_ci 3
+select collation(substring(_latin2'a',1,1)), coercibility(substring(_latin2'a',1,1));
+collation(substring(_latin2'a',1,1)) coercibility(substring(_latin2'a',1,1))
+latin2_general_ci 3
+select collation(concat(_latin2'a',_latin2'b')), coercibility(concat(_latin2'a',_latin2'b'));
+collation(concat(_latin2'a',_latin2'b')) coercibility(concat(_latin2'a',_latin2'b'))
+latin2_general_ci 3
+select collation(lpad(_latin2'a',4,_latin2'b')), coercibility(lpad(_latin2'a',4,_latin2'b'));
+collation(lpad(_latin2'a',4,_latin2'b')) coercibility(lpad(_latin2'a',4,_latin2'b'))
+latin2_general_ci 3
+select collation(rpad(_latin2'a',4,_latin2'b')), coercibility(rpad(_latin2'a',4,_latin2'b'));
+collation(rpad(_latin2'a',4,_latin2'b')) coercibility(rpad(_latin2'a',4,_latin2'b'))
+latin2_general_ci 3
+select collation(concat_ws(_latin2'a',_latin2'b')), coercibility(concat_ws(_latin2'a',_latin2'b'));
+collation(concat_ws(_latin2'a',_latin2'b')) coercibility(concat_ws(_latin2'a',_latin2'b'))
+latin2_general_ci 3
+select collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')), coercibility(make_set(255,_latin2'a',_latin2'b',_latin2'c'));
+collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')) coercibility(make_set(255,_latin2'a',_latin2'b',_latin2'c'))
+latin2_general_ci 3
+select collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')), coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' '));
+collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')) coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' '))
+binary 3
+select collation(trim(_latin2' a ')), coercibility(trim(_latin2' a '));
+collation(trim(_latin2' a ')) coercibility(trim(_latin2' a '))
+latin2_general_ci 3
+select collation(ltrim(_latin2' a ')), coercibility(ltrim(_latin2' a '));
+collation(ltrim(_latin2' a ')) coercibility(ltrim(_latin2' a '))
+latin2_general_ci 3
+select collation(rtrim(_latin2' a ')), coercibility(rtrim(_latin2' a '));
+collation(rtrim(_latin2' a ')) coercibility(rtrim(_latin2' a '))
+latin2_general_ci 3
+select collation(trim(LEADING _latin2' ' FROM _latin2'a')), coercibility(trim(LEADING _latin2'a' FROM _latin2'a'));
+collation(trim(LEADING _latin2' ' FROM _latin2'a')) coercibility(trim(LEADING _latin2'a' FROM _latin2'a'))
+latin2_general_ci 3
+select collation(trim(TRAILING _latin2' ' FROM _latin2'a')), coercibility(trim(TRAILING _latin2'a' FROM _latin2'a'));
+collation(trim(TRAILING _latin2' ' FROM _latin2'a')) coercibility(trim(TRAILING _latin2'a' FROM _latin2'a'))
+latin2_general_ci 3
+select collation(trim(BOTH _latin2' ' FROM _latin2'a')), coercibility(trim(BOTH _latin2'a' FROM _latin2'a'));
+collation(trim(BOTH _latin2' ' FROM _latin2'a')) coercibility(trim(BOTH _latin2'a' FROM _latin2'a'))
+latin2_general_ci 3
+select collation(repeat(_latin2'a',10)), coercibility(repeat(_latin2'a',10));
+collation(repeat(_latin2'a',10)) coercibility(repeat(_latin2'a',10))
+latin2_general_ci 3
+select collation(reverse(_latin2'ab')), coercibility(reverse(_latin2'ab'));
+collation(reverse(_latin2'ab')) coercibility(reverse(_latin2'ab'))
+latin2_general_ci 3
+select collation(quote(_latin2'ab')), coercibility(quote(_latin2'ab'));
+collation(quote(_latin2'ab')) coercibility(quote(_latin2'ab'))
+latin2_general_ci 3
+select collation(soundex(_latin2'ab')), coercibility(soundex(_latin2'ab'));
+collation(soundex(_latin2'ab')) coercibility(soundex(_latin2'ab'))
+latin2_general_ci 3
+select collation(substring(_latin2'ab',1)), coercibility(substring(_latin2'ab',1));
+collation(substring(_latin2'ab',1)) coercibility(substring(_latin2'ab',1))
+latin2_general_ci 3
+select collation(insert(_latin2'abcd',2,3,_latin2'ef')), coercibility(insert(_latin2'abcd',2,3,_latin2'ef'));
+collation(insert(_latin2'abcd',2,3,_latin2'ef')) coercibility(insert(_latin2'abcd',2,3,_latin2'ef'))
+latin2_general_ci 3
+select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
+collation(replace(_latin2'abcd',_latin2'b',_latin2'B')) coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'))
+latin2_general_ci 3
+create table t1
+select
+bin(130),
+oct(130),
+conv(130,16,10),
+hex(130),
+char(130),
+format(130,10),
+left(_latin2'a',1),
+right(_latin2'a',1),
+lcase(_latin2'a'),
+ucase(_latin2'a'),
+substring(_latin2'a',1,1),
+concat(_latin2'a',_latin2'b'),
+lpad(_latin2'a',4,_latin2'b'),
+rpad(_latin2'a',4,_latin2'b'),
+concat_ws(_latin2'a',_latin2'b'),
+make_set(255,_latin2'a',_latin2'b',_latin2'c'),
+export_set(255,_latin2'y',_latin2'n',_latin2' '),
+trim(_latin2' a '),
+ltrim(_latin2' a '),
+rtrim(_latin2' a '),
+trim(LEADING _latin2' ' FROM _latin2' a '),
+trim(TRAILING _latin2' ' FROM _latin2' a '),
+trim(BOTH _latin2' ' FROM _latin2' a '),
+repeat(_latin2'a',10),
+reverse(_latin2'ab'),
+quote(_latin2'ab'),
+soundex(_latin2'ab'),
+substring(_latin2'ab',1),
+insert(_latin2'abcd',2,3,_latin2'ef'),
+replace(_latin2'abcd',_latin2'b',_latin2'B')
+;
+Warnings:
+Warning 1265 Data truncated for column 'format(130,10)' at row 1
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `bin(130)` char(64) NOT NULL default '',
+ `oct(130)` char(64) NOT NULL default '',
+ `conv(130,16,10)` char(64) NOT NULL default '',
+ `hex(130)` char(6) NOT NULL default '',
+ `char(130)` char(1) NOT NULL default '',
+ `format(130,10)` char(4) NOT NULL default '',
+ `left(_latin2'a',1)` char(1) character set latin2 NOT NULL default '',
+ `right(_latin2'a',1)` char(1) character set latin2 NOT NULL default '',
+ `lcase(_latin2'a')` char(1) character set latin2 NOT NULL default '',
+ `ucase(_latin2'a')` char(1) character set latin2 NOT NULL default '',
+ `substring(_latin2'a',1,1)` char(1) character set latin2 NOT NULL default '',
+ `concat(_latin2'a',_latin2'b')` char(2) character set latin2 NOT NULL default '',
+ `lpad(_latin2'a',4,_latin2'b')` char(4) character set latin2 NOT NULL default '',
+ `rpad(_latin2'a',4,_latin2'b')` char(4) character set latin2 NOT NULL default '',
+ `concat_ws(_latin2'a',_latin2'b')` char(1) character set latin2 NOT NULL default '',
+ `make_set(255,_latin2'a',_latin2'b',_latin2'c')` char(5) character set latin2 NOT NULL default '',
+ `export_set(255,_latin2'y',_latin2'n',_latin2' ')` char(127) character set latin2 NOT NULL default '',
+ `trim(_latin2' a ')` char(3) character set latin2 NOT NULL default '',
+ `ltrim(_latin2' a ')` char(3) character set latin2 NOT NULL default '',
+ `rtrim(_latin2' a ')` char(3) character set latin2 NOT NULL default '',
+ `trim(LEADING _latin2' ' FROM _latin2' a ')` char(3) character set latin2 NOT NULL default '',
+ `trim(TRAILING _latin2' ' FROM _latin2' a ')` char(3) character set latin2 NOT NULL default '',
+ `trim(BOTH _latin2' ' FROM _latin2' a ')` char(3) character set latin2 NOT NULL default '',
+ `repeat(_latin2'a',10)` char(10) character set latin2 NOT NULL default '',
+ `reverse(_latin2'ab')` char(2) character set latin2 NOT NULL default '',
+ `quote(_latin2'ab')` char(6) character set latin2 NOT NULL default '',
+ `soundex(_latin2'ab')` char(4) character set latin2 NOT NULL default '',
+ `substring(_latin2'ab',1)` char(2) character set latin2 NOT NULL default '',
+ `insert(_latin2'abcd',2,3,_latin2'ef')` char(6) character set latin2 NOT NULL default '',
+ `replace(_latin2'abcd',_latin2'b',_latin2'B')` char(4) character set latin2 NOT NULL default ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+drop table t1;
+select SUBSTR('abcdefg',3,2);
+SUBSTR('abcdefg',3,2)
+cd
+select SUBSTRING('abcdefg',3,2);
+SUBSTRING('abcdefg',3,2)
+cd
+select SUBSTR('abcdefg',-3,2) FROM DUAL;
+SUBSTR('abcdefg',-3,2)
+ef
+select SUBSTR('abcdefg',-1,5) FROM DUAL;
+SUBSTR('abcdefg',-1,5)
+g
+select SUBSTR('abcdefg',0,0) FROM DUAL;
+SUBSTR('abcdefg',0,0)
+
+select SUBSTR('abcdefg',-1,-1) FROM DUAL;
+SUBSTR('abcdefg',-1,-1)
+
+select SUBSTR('abcdefg',1,-1) FROM DUAL;
+SUBSTR('abcdefg',1,-1)
+
+create table t7 (s1 char);
+select * from t7
+where concat(s1 collate latin1_general_ci,s1 collate latin1_swedish_ci) = 'AA';
+ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT) and (latin1_swedish_ci,EXPLICIT) for operation 'concat'
+drop table t7;
+select substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2),substring_index("1abcd;2abcd;3abcd;4abcd", ';', -2);
+substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2) substring_index("1abcd;2abcd;3abcd;4abcd", ';', -2)
+1abcd;2abcd 3abcd;4abcd
+explain extended select md5('hello'), sha('abc'), sha1('abc'), soundex(''), 'mood' sounds like 'mud', aes_decrypt(aes_encrypt('abc','1'),'1'),concat('*',space(5),'*'), reverse('abc'), rpad('a',4,'1'), lpad('a',4,'1'), concat_ws(',','',NULL,'a'),make_set(255,_latin2'a',_latin2'b',_latin2'c'),elt(2,1),locate("a","b",2),format(130,10),char(0),conv(130,16,10),hex(130),binary 'HE', export_set(255,_latin2'y',_latin2'n',_latin2' '),FIELD('b' COLLATE latin1_bin,'A','B'),FIND_IN_SET(_latin1'B',_latin1'a,b,c,d'),collation(conv(130,16,10)), coercibility(conv(130,16,10)),length('\n\t\r\b\0\_\%\\'),bit_length('\n\t\r\b\0\_\%\\'),bit_length('\n\t\r\b\0\_\%\\'),concat('monty',' was here ','again'),length('hello'),char(ascii('h')),ord('h'),quote(1/0),crc32("123"),replace('aaaa','a','b'),insert('txs',2,1,'hi'),left(_latin2'a',1),right(_latin2'a',1),lcase(_latin2'a'),ucase(_latin2'a'),SUBSTR('abcdefg',3,2),substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2),trim(_latin2' a '),ltrim(_latin2' a '),rtrim(_latin2' a '), decode(encode(repeat("a",100000),"monty"),"monty");
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 select high_priority md5(_latin1'hello') AS `md5('hello')`,sha(_latin1'abc') AS `sha('abc')`,sha(_latin1'abc') AS `sha1('abc')`,soundex(_latin1'') AS `soundex('')`,(soundex(_latin1'mood') = soundex(_latin1'mud')) AS `'mood' sounds like 'mud'`,aes_decrypt(aes_encrypt(_latin1'abc',_latin1'1'),_latin1'1') AS `aes_decrypt(aes_encrypt('abc','1'),'1')`,concat(_latin1'*',repeat(_latin1' ',5),_latin1'*') AS `concat('*',space(5),'*')`,reverse(_latin1'abc') AS `reverse('abc')`,rpad(_latin1'a',4,_latin1'1') AS `rpad('a',4,'1')`,lpad(_latin1'a',4,_latin1'1') AS `lpad('a',4,'1')`,concat_ws(_latin1',',_latin1'',NULL,_latin1'a') AS `concat_ws(',','',NULL,'a')`,make_set(255,_latin2'a',_latin2'b',_latin2'c') AS `make_set(255,_latin2'a',_latin2'b',_latin2'c')`,elt(2,1) AS `elt(2,1)`,locate(_latin1'a',_latin1'b',2) AS `locate("a","b",2)`,format(130,10) AS `format(130,10)`,char(0) AS `char(0)`,conv(130,16,10) AS `conv(130,16,10)`,hex(130) AS `hex(130)`,(_latin1'HE' collate _latin1'BINARY') AS `binary 'HE'`,export_set(255,_latin2'y',_latin2'n',_latin2' ') AS `export_set(255,_latin2'y',_latin2'n',_latin2' ')`,field((_latin1'b' collate _latin1'latin1_bin'),_latin1'A',_latin1'B') AS `FIELD('b' COLLATE latin1_bin,'A','B')`,find_in_set(_latin1'B',_latin1'a,b,c,d') AS `FIND_IN_SET(_latin1'B',_latin1'a,b,c,d')`,collation(conv(130,16,10)) AS `collation(conv(130,16,10))`,coercibility(conv(130,16,10)) AS `coercibility(conv(130,16,10))`,length(_latin1'\n \r\0\\_\\%\\') AS `length('\n\t\r\b\0\_\%\\')`,bit_length(_latin1'\n \r\0\\_\\%\\') AS `bit_length('\n\t\r\b\0\_\%\\')`,bit_length(_latin1'\n \r\0\\_\\%\\') AS `bit_length('\n\t\r\b\0\_\%\\')`,concat(_latin1'monty',_latin1' was here ',_latin1'again') AS `concat('monty',' was here ','again')`,length(_latin1'hello') AS `length('hello')`,char(ascii(_latin1'h')) AS `char(ascii('h'))`,ord(_latin1'h') AS `ord('h')`,quote((1 / 0)) AS `quote(1/0)`,crc32(_latin1'123') AS `crc32("123")`,replace(_latin1'aaaa',_latin1'a',_latin1'b') AS `replace('aaaa','a','b')`,insert(_latin1'txs',2,1,_latin1'hi') AS `insert('txs',2,1,'hi')`,left(_latin2'a',1) AS `left(_latin2'a',1)`,right(_latin2'a',1) AS `right(_latin2'a',1)`,lcase(_latin2'a') AS `lcase(_latin2'a')`,ucase(_latin2'a') AS `ucase(_latin2'a')`,substr(_latin1'abcdefg',3,2) AS `SUBSTR('abcdefg',3,2)`,substr_index(_latin1'1abcd;2abcd;3abcd;4abcd',_latin1';',2) AS `substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2)`,trim(_latin2' a ') AS `trim(_latin2' a ')`,ltrim(_latin2' a ') AS `ltrim(_latin2' a ')`,rtrim(_latin2' a ') AS `rtrim(_latin2' a ')`,decode(encode(repeat(_latin1'a',100000))) AS `decode(encode(repeat("a",100000),"monty"),"monty")`
+SELECT lpad(12345, 5, "#");
+lpad(12345, 5, "#")
+12345
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
index 1c48f5f9048..95dc2ca3a2a 100644
--- a/mysql-test/r/innodb.result
+++ b/mysql-test/r/innodb.result
@@ -1338,7 +1338,7 @@ CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx
insert into t1 values (1),(2),(3);
insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 ),(5,20020204230000);
Warnings:
-Warning 1264 Data truncated for column 'stamp' at row 3
+Warning 1265 Data truncated for column 'stamp' at row 3
SELECT col1 FROM t1 UNION SELECT col1 FROM t2 WHERE stamp <
'20020204120000' GROUP BY col1;
col1
diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result
index ff5111c552e..38e08d7fbc5 100644
--- a/mysql-test/r/insert.result
+++ b/mysql-test/r/insert.result
@@ -63,7 +63,7 @@ insert into t1 values(NULL);
ERROR 23000: Column 'id' cannot be null
insert into t1 values (1), (NULL), (2);
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'id' at row 2
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'id' at row 2
select * from t1;
id
1
diff --git a/mysql-test/r/insert_select.result b/mysql-test/r/insert_select.result
index 93007a325ba..2e90f8b2d81 100644
--- a/mysql-test/r/insert_select.result
+++ b/mysql-test/r/insert_select.result
@@ -621,6 +621,9 @@ NULL 1 100
NULL 2 100
create table t2(No int not null, Field int not null, Count int not null);
insert into t2 Select null, Field, Count From t1 Where Month=20030901 and Type=2;
+Warnings:
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'No' at row 1
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'No' at row 2
select * from t2;
No Field Count
0 1 100
diff --git a/mysql-test/r/key.result b/mysql-test/r/key.result
index d8e10fd20c7..dca7b580378 100644
--- a/mysql-test/r/key.result
+++ b/mysql-test/r/key.result
@@ -34,10 +34,10 @@ INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','N','N','N','N');
INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','N','N','N','N');
INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','','','','');
Warnings:
-Warning 1264 Data truncated for column 'transityes' at row 1
-Warning 1264 Data truncated for column 'shopsyes' at row 1
-Warning 1264 Data truncated for column 'schoolsyes' at row 1
-Warning 1264 Data truncated for column 'petsyes' at row 1
+Warning 1265 Data truncated for column 'transityes' at row 1
+Warning 1265 Data truncated for column 'shopsyes' at row 1
+Warning 1265 Data truncated for column 'schoolsyes' at row 1
+Warning 1265 Data truncated for column 'petsyes' at row 1
INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
@@ -156,8 +156,8 @@ CREATE TABLE t1 (c CHAR(10) NOT NULL,i INT NOT NULL AUTO_INCREMENT,
UNIQUE (c,i));
INSERT INTO t1 (c) VALUES (NULL),(NULL);
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'c' at row 1
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'c' at row 2
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'c' at row 1
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'c' at row 2
SELECT * FROM t1;
c i
1
diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result
index 0547596dfbd..368055fed99 100644
--- a/mysql-test/r/loaddata.result
+++ b/mysql-test/r/loaddata.result
@@ -2,12 +2,12 @@ drop table if exists t1;
create table t1 (a date, b date, c date not null, d date);
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',';
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
-Warning 1264 Data truncated for column 'c' at row 1
-Warning 1264 Data truncated for column 'd' at row 1
-Warning 1264 Data truncated for column 'a' at row 2
-Warning 1264 Data truncated for column 'b' at row 2
-Warning 1264 Data truncated for column 'd' at row 2
+Warning 1265 Data truncated for column 'a' at row 1
+Warning 1265 Data truncated for column 'c' at row 1
+Warning 1265 Data truncated for column 'd' at row 1
+Warning 1265 Data truncated for column 'a' at row 2
+Warning 1265 Data truncated for column 'b' at row 2
+Warning 1265 Data truncated for column 'd' at row 2
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' IGNORE 2 LINES;
SELECT * from t1;
a b c d
@@ -18,10 +18,10 @@ a b c d
truncate table t1;
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' LINES STARTING BY ',' (b,c,d);
Warnings:
-Warning 1264 Data truncated for column 'c' at row 1
-Warning 1264 Data truncated for column 'd' at row 1
-Warning 1264 Data truncated for column 'b' at row 2
-Warning 1264 Data truncated for column 'd' at row 2
+Warning 1265 Data truncated for column 'c' at row 1
+Warning 1265 Data truncated for column 'd' at row 1
+Warning 1265 Data truncated for column 'b' at row 2
+Warning 1265 Data truncated for column 'd' at row 2
SELECT * from t1;
a b c d
NULL NULL 0000-00-00 0000-00-00
@@ -31,7 +31,7 @@ drop table t1;
create table t1 (a text, b text);
load data infile '../../std_data/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''';
Warnings:
-Warning 1260 Row 3 doesn't contain data for all columns
+Warning 1261 Row 3 doesn't contain data for all columns
select concat('|',a,'|'), concat('|',b,'|') from t1;
concat('|',a,'|') concat('|',b,'|')
|Field A| |Field B|
@@ -43,10 +43,10 @@ drop table t1;
create table t1 (a int, b char(10));
load data infile '../../std_data/loaddata3.dat' into table t1 fields terminated by '' enclosed by '' ignore 1 lines;
Warnings:
-Warning 1264 Data truncated for column 'a' at row 3
-Warning 1261 Row 3 was truncated; It contained more data than there where input columns
-Warning 1264 Data truncated for column 'a' at row 5
-Warning 1261 Row 5 was truncated; It contained more data than there where input columns
+Warning 1265 Data truncated for column 'a' at row 3
+Warning 1262 Row 3 was truncated; It contained more data than there where input columns
+Warning 1265 Data truncated for column 'a' at row 5
+Warning 1262 Row 5 was truncated; It contained more data than there where input columns
select * from t1;
a b
1 row 1
@@ -57,8 +57,8 @@ a b
truncate table t1;
load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated by '' enclosed by '' lines terminated by '' ignore 1 lines;
Warnings:
-Warning 1264 Data truncated for column 'a' at row 4
-Warning 1260 Row 4 doesn't contain data for all columns
+Warning 1265 Data truncated for column 'a' at row 4
+Warning 1261 Row 4 doesn't contain data for all columns
select * from t1;
a b
1 row 1
diff --git a/mysql-test/r/lock.result b/mysql-test/r/lock.result
index 2e95c25fd9c..429bc5ed352 100644
--- a/mysql-test/r/lock.result
+++ b/mysql-test/r/lock.result
@@ -42,7 +42,7 @@ check table t2;
Table Op Msg_type Msg_text
test.t2 check error Table 't2' was not locked with LOCK TABLES
insert into t1 select nr from t1;
-Table 't1' was not locked with LOCK TABLES
+ERROR HY000: Table 't1' was not locked with LOCK TABLES
unlock tables;
lock tables t1 write, t1 as t1_alias read;
insert into t1 select index1,nr from t1 as t1_alias;
diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result
index 4ab9a3dc8fe..278b9f41480 100644
--- a/mysql-test/r/myisam.result
+++ b/mysql-test/r/myisam.result
@@ -428,6 +428,22 @@ select * from t1 where a='807780' and b='477' and c='165';
a b c
807780 477 165
drop table t1;
+create table t1 (a blob);
+insert into t1 values('a '),('a');
+select concat(a,'.') from t1 where a='a';
+concat(a,'.')
+a.
+select concat(a,'.') from t1 where a='a ';
+concat(a,'.')
+a .
+alter table t1 add key(a(2));
+select concat(a,'.') from t1 where a='a';
+concat(a,'.')
+a.
+select concat(a,'.') from t1 where a='a ';
+concat(a,'.')
+a .
+drop table t1;
create table t1 (a int not null auto_increment primary key, b text not null, unique b (b(20)));
insert into t1 (b) values ('a'),('a '),('a ');
select concat(b,'.') from t1;
@@ -437,7 +453,7 @@ a .
a .
update t1 set b='b ' where a=2;
update t1 set b='b ' where a > 1;
-Duplicate entry 'b ' for key 2
+ERROR 23000: Duplicate entry 'b ' for key 2
delete from t1 where b='b';
select a,concat(b,'.') from t1;
a concat(b,'.')
diff --git a/mysql-test/r/null.result b/mysql-test/r/null.result
index aa56bce6453..cbd949d6e72 100644
--- a/mysql-test/r/null.result
+++ b/mysql-test/r/null.result
@@ -91,45 +91,45 @@ drop table t1;
CREATE TABLE t1 (a varchar(16) NOT NULL, b smallint(6) NOT NULL, c datetime NOT NULL, d smallint(6) NOT NULL);
INSERT INTO t1 SET a = "", d= "2003-01-14 03:54:55";
Warnings:
-Warning 1264 Data truncated for column 'd' at row 1
+Warning 1265 Data truncated for column 'd' at row 1
UPDATE t1 SET d=1/NULL;
Warnings:
-Warning 1264 Data truncated for column 'd' at row 1
+Warning 1265 Data truncated for column 'd' at row 1
UPDATE t1 SET d=NULL;
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'd' at row 1
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'd' at row 1
INSERT INTO t1 (a) values (null);
ERROR 23000: Column 'a' cannot be null
INSERT INTO t1 (a) values (1/null);
ERROR 23000: Column 'a' cannot be null
INSERT INTO t1 (a) values (null),(null);
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'a' at row 1
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'a' at row 2
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'a' at row 1
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'a' at row 2
INSERT INTO t1 (b) values (null);
ERROR 23000: Column 'b' cannot be null
INSERT INTO t1 (b) values (1/null);
ERROR 23000: Column 'b' cannot be null
INSERT INTO t1 (b) values (null),(null);
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'b' at row 1
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'b' at row 2
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'b' at row 1
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'b' at row 2
INSERT INTO t1 (c) values (null);
ERROR 23000: Column 'c' cannot be null
INSERT INTO t1 (c) values (1/null);
ERROR 23000: Column 'c' cannot be null
INSERT INTO t1 (c) values (null),(null);
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'c' at row 1
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'c' at row 2
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'c' at row 1
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'c' at row 2
INSERT INTO t1 (d) values (null);
ERROR 23000: Column 'd' cannot be null
INSERT INTO t1 (d) values (1/null);
ERROR 23000: Column 'd' cannot be null
INSERT INTO t1 (d) values (null),(null);
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'd' at row 1
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'd' at row 2
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'd' at row 1
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'd' at row 2
select * from t1;
a b c d
0 0000-00-00 00:00:00 0
diff --git a/mysql-test/r/null_key.result b/mysql-test/r/null_key.result
index 385108216bf..4dfd17991cc 100644
--- a/mysql-test/r/null_key.result
+++ b/mysql-test/r/null_key.result
@@ -337,7 +337,7 @@ index (id2)
);
insert into t1 values(null,null),(1,1);
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'id2' at row 1
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'id2' at row 1
select * from t1;
id id2
NULL 0
diff --git a/mysql-test/r/order_by.result b/mysql-test/r/order_by.result
index c1053087603..4033996b239 100644
--- a/mysql-test/r/order_by.result
+++ b/mysql-test/r/order_by.result
@@ -333,10 +333,10 @@ a b c
1 NULL NULL
alter table t1 modify b int not null, modify c varchar(10) not null;
Warnings:
-Warning 1264 Data truncated for column 'b' at row 1
-Warning 1264 Data truncated for column 'c' at row 1
-Warning 1264 Data truncated for column 'b' at row 2
-Warning 1264 Data truncated for column 'c' at row 3
+Warning 1265 Data truncated for column 'b' at row 1
+Warning 1265 Data truncated for column 'c' at row 1
+Warning 1265 Data truncated for column 'b' at row 2
+Warning 1265 Data truncated for column 'c' at row 3
explain select * from t1 order by a, b, c;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL a 18 NULL 11 Using index
diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result
index 04bcb56d48d..5bbf0bad445 100644
--- a/mysql-test/r/query_cache.result
+++ b/mysql-test/r/query_cache.result
@@ -593,7 +593,7 @@ select * from t1;
a
set GLOBAL query_cache_size=1024;
Warnings:
-Warning 1281 Query cache failed to set size 1024, new query cache size is 0
+Warning 1282 Query cache failed to set size 1024, new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
@@ -601,7 +601,7 @@ select * from t1;
a
set GLOBAL query_cache_size=10240;
Warnings:
-Warning 1281 Query cache failed to set size 10240, new query cache size is 0
+Warning 1282 Query cache failed to set size 10240, new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
@@ -609,7 +609,7 @@ select * from t1;
a
set GLOBAL query_cache_size=20480;
Warnings:
-Warning 1281 Query cache failed to set size 20480, new query cache size is 0
+Warning 1282 Query cache failed to set size 20480, new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
@@ -617,7 +617,7 @@ select * from t1;
a
set GLOBAL query_cache_size=40960;
Warnings:
-Warning 1281 Query cache failed to set size 40960, new query cache size is 0
+Warning 1282 Query cache failed to set size 40960, new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result
index 6d924ff9f2e..ab66d786833 100644
--- a/mysql-test/r/range.result
+++ b/mysql-test/r/range.result
@@ -302,6 +302,7 @@ WHERE
a b
15 1
47 1
+DROP TABLE t1;
create table t1 (id int(10) primary key);
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
select id from t1 where id in (2,5,9) ;
diff --git a/mysql-test/r/rpl_multi_delete.result b/mysql-test/r/rpl_multi_delete.result
index fa254d76393..e94a4e7947e 100644
--- a/mysql-test/r/rpl_multi_delete.result
+++ b/mysql-test/r/rpl_multi_delete.result
@@ -1,9 +1,9 @@
-slave stop;
+stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
-slave start;
+start slave;
create table t1 (a int);
create table t2 (a int);
insert into t1 values (1);
diff --git a/mysql-test/r/rpl_until.result b/mysql-test/r/rpl_until.result
index 82b1ed233ec..120c3d7a57f 100644
--- a/mysql-test/r/rpl_until.result
+++ b/mysql-test/r/rpl_until.result
@@ -69,4 +69,4 @@ ERROR HY000: Wrong parameter or combination of parameters for START SLAVE UNTIL
start slave sql_thread;
start slave until master_log_file='master-bin.000001', master_log_pos=561;
Warnings:
-Note 1253 Slave is already running
+Note 1254 Slave is already running
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result
index b5ebc8d80db..f8a3251b6f9 100644
--- a/mysql-test/r/subselect.result
+++ b/mysql-test/r/subselect.result
@@ -6,7 +6,7 @@ explain extended select (select 2);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
-Note 1248 Select 2 was reduced during optimisation
+Note 1249 Select 2 was reduced during optimisation
Note 1003 select high_priority 2 AS `(select 2)`
SELECT (SELECT 1) UNION SELECT (SELECT 2);
(SELECT 1)
@@ -17,8 +17,8 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
-Note 1248 Select 2 was reduced during optimisation
-Note 1248 Select 4 was reduced during optimisation
+Note 1249 Select 2 was reduced during optimisation
+Note 1249 Select 4 was reduced during optimisation
Note 1003 select high_priority 1 AS `(SELECT 1)` union select 2 AS `(SELECT 2)`
SELECT (SELECT (SELECT 0 UNION SELECT 0));
(SELECT (SELECT 0 UNION SELECT 0))
@@ -29,7 +29,7 @@ id select_type table type possible_keys key key_len ref rows Extra
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
4 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
-Note 1248 Select 2 was reduced during optimisation
+Note 1249 Select 2 was reduced during optimisation
Note 1003 select high_priority (select 0 AS `0` union select 0 AS `0`) AS `(SELECT (SELECT 0 UNION SELECT 0))`
SELECT (SELECT 1 FROM (SELECT 1) as b HAVING a=1) as a;
ERROR 42S22: Reference 'a' not supported (forward reference in item list)
@@ -46,8 +46,8 @@ id select_type table type possible_keys key key_len ref rows Extra
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
2 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
-Note 1275 Field or reference 'a' of SELECT #3 was resolved in SELECT #1
-Note 1275 Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
+Note 1276 Field or reference 'a' of SELECT #3 was resolved in SELECT #1
+Note 1276 Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
Note 1003 select high_priority 1 AS `1` from (select 1 AS `a`) b having ((select b.a AS `a`) = 1)
SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
1
@@ -219,7 +219,7 @@ id select_type table type possible_keys key key_len ref rows Extra
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 Using where
Warnings:
-Note 1275 Field or reference 't4.a' of SELECT #3 was resolved in SELECT #1
+Note 1276 Field or reference 't4.a' of SELECT #3 was resolved in SELECT #1
Note 1003 select high_priority test.t4.b AS `b`,(select avg((test.t2.a + (select min(test.t3.a) AS `min(t3.a)` from test.t3 where (test.t3.a >= test.t4.a)))) AS `avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a))` from test.t2) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from test.t4
select * from t3 where exists (select * from t2 where t2.b=t3.a);
a
@@ -307,8 +307,8 @@ id select_type table type possible_keys key key_len ref rows Extra
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1
3 DEPENDENT UNION t5 ALL NULL NULL NULL NULL 2 Using where
Warnings:
-Note 1275 Field or reference 't2.a' of SELECT #2 was resolved in SELECT #1
-Note 1275 Field or reference 't2.a' of SELECT #3 was resolved in SELECT #1
+Note 1276 Field or reference 't2.a' of SELECT #2 was resolved in SELECT #1
+Note 1276 Field or reference 't2.a' of SELECT #3 was resolved in SELECT #1
Note 1003 select high_priority (select test.t1.a AS `a` from test.t1 where (test.t1.a = test.t2.a) union select test.t5.a AS `a` from test.t5 where (test.t5.a = test.t2.a)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,test.t2.a AS `a` from test.t2
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
ERROR 21000: Subquery returns more than 1 row
@@ -326,7 +326,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t6 ALL NULL NULL NULL NULL 4 Using where
2 DEPENDENT SUBQUERY t7 eq_ref PRIMARY PRIMARY 4 test.t6.clinic_uq 1
Warnings:
-Note 1275 Field or reference 'clinic_uq' of SELECT #2 was resolved in SELECT #1
+Note 1276 Field or reference 'clinic_uq' of SELECT #2 was resolved in SELECT #1
Note 1003 select high_priority test.t6.patient_uq AS `patient_uq`,test.t6.clinic_uq AS `clinic_uq` from test.t6 where exists(select test.t7.uq AS `uq`,test.t7.name AS `name` from test.t7 where (test.t7.uq = test.t6.clinic_uq) limit 1)
select * from t1 where a= (select a from t2,t4 where t2.b=t4.b);
ERROR 23000: Column: 'a' in field list is ambiguous
@@ -707,7 +707,7 @@ EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 ref id id 5 const 1 Using where; Using index
Warnings:
-Note 1248 Select 2 was reduced during optimisation
+Note 1249 Select 2 was reduced during optimisation
Note 1003 select high_priority test.t2.id AS `id` from test.t2 where (test.t2.id = 1)
SELECT * FROM t2 WHERE id IN (SELECT 1 UNION SELECT 3);
id
@@ -719,8 +719,8 @@ EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1+(select 1));
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 ref id id 5 const 1 Using where; Using index
Warnings:
-Note 1248 Select 3 was reduced during optimisation
-Note 1248 Select 2 was reduced during optimisation
+Note 1249 Select 3 was reduced during optimisation
+Note 1249 Select 2 was reduced during optimisation
Note 1003 select high_priority test.t2.id AS `id` from test.t2 where (test.t2.id = (1 + 1))
EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1 UNION SELECT 3);
id select_type table type possible_keys key key_len ref rows Extra
@@ -852,8 +852,8 @@ explain extended select (select a+1) from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
Warnings:
-Note 1275 Field or reference 'a' of SELECT #2 was resolved in SELECT #1
-Note 1248 Select 2 was reduced during optimisation
+Note 1276 Field or reference 'a' of SELECT #2 was resolved in SELECT #1
+Note 1249 Select 2 was reduced during optimisation
Note 1003 select high_priority (test.t1.a + 1) AS `(select a+1)` from test.t1
select (select a+1) from t1;
(select a+1)
@@ -1041,12 +1041,12 @@ UNIQUE KEY `maxnumrep` (`maxnumrep`)
) ENGINE=MyISAM CHARSET=latin1;
INSERT INTO t1 VALUES ('joce','1','','joce'),('test','2','','test');
Warnings:
-Warning 1264 Data truncated for column 'date' at row 1
-Warning 1264 Data truncated for column 'date' at row 2
+Warning 1265 Data truncated for column 'date' at row 1
+Warning 1265 Data truncated for column 'date' at row 2
INSERT INTO t2 VALUES ('joce','1','','joce'),('test','2','','test');
Warnings:
-Warning 1264 Data truncated for column 'date' at row 1
-Warning 1264 Data truncated for column 'date' at row 2
+Warning 1265 Data truncated for column 'date' at row 1
+Warning 1265 Data truncated for column 'date' at row 2
INSERT INTO t3 VALUES (1,1);
SELECT DISTINCT topic FROM t2 WHERE NOT EXISTS(SELECT * FROM t3 WHERE
numeropost=topic);
@@ -1238,7 +1238,7 @@ insert into t1 values (1,0), (2,0), (3,0);
insert into t2 values (1,1), (2,1), (3,1), (2,2);
update ignore t1 set b=(select b from t2 where t1.a=t2.a);
Warnings:
-Error 1241 Subquery returns more than 1 row
+Error 1242 Subquery returns more than 1 row
select * from t1;
a b
1 1
diff --git a/mysql-test/r/subselect_innodb.result b/mysql-test/r/subselect_innodb.result
index b2a055fa72c..9c1816e295c 100644
--- a/mysql-test/r/subselect_innodb.result
+++ b/mysql-test/r/subselect_innodb.result
@@ -62,7 +62,7 @@ processor_id (SELECT y.yod_id FROM t1 p2, t2 y WHERE p2.processor_id = p1.proces
1 1
2 2
3 3
-drop table t1,t2,t3;
+drop table t2,t1,t3;
CREATE TABLE t1 (
id int(11) NOT NULL default '0',
b int(11) default NULL,
diff --git a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result
index 8538263f7d6..330464fe669 100644
--- a/mysql-test/r/type_blob.result
+++ b/mysql-test/r/type_blob.result
@@ -9,9 +9,9 @@ d mediumtext YES NULL
e longtext YES NULL
CREATE TABLE t2 (a char(257), b varchar(70000) binary, c varchar(70000000));
Warnings:
-Warning 1245 Converting column 'a' from CHAR to TEXT
-Warning 1245 Converting column 'b' from CHAR to BLOB
-Warning 1245 Converting column 'c' from CHAR to TEXT
+Warning 1246 Converting column 'a' from CHAR to TEXT
+Warning 1246 Converting column 'b' from CHAR to BLOB
+Warning 1246 Converting column 'c' from CHAR to TEXT
show columns from t2;
Field Type Null Key Default Extra
a text YES NULL
diff --git a/mysql-test/r/type_datetime.result b/mysql-test/r/type_datetime.result
index c1ee621697d..cc29c676283 100644
--- a/mysql-test/r/type_datetime.result
+++ b/mysql-test/r/type_datetime.result
@@ -2,11 +2,11 @@ drop table if exists t1;
create table t1 (t datetime);
insert into t1 values(101),(691231),(700101),(991231),(10000101),(99991231),(101000000),(691231000000),(700101000000),(991231235959),(10000101000000),(99991231235959),(20030102030460),(20030102036301),(20030102240401),(20030132030401),(20031302030460);
Warnings:
-Warning 1264 Data truncated for column 't' at row 13
-Warning 1264 Data truncated for column 't' at row 14
-Warning 1264 Data truncated for column 't' at row 15
-Warning 1264 Data truncated for column 't' at row 16
-Warning 1264 Data truncated for column 't' at row 17
+Warning 1265 Data truncated for column 't' at row 13
+Warning 1265 Data truncated for column 't' at row 14
+Warning 1265 Data truncated for column 't' at row 15
+Warning 1265 Data truncated for column 't' at row 16
+Warning 1265 Data truncated for column 't' at row 17
select * from t1;
t
2000-01-01 00:00:00
diff --git a/mysql-test/r/type_decimal.result b/mysql-test/r/type_decimal.result
index fa4cd231129..dc78369f583 100644
--- a/mysql-test/r/type_decimal.result
+++ b/mysql-test/r/type_decimal.result
@@ -158,17 +158,17 @@ insert into t1 values ("00000000000001"),("+0000000000001"),("-0000000000001");
insert into t1 values ("+111111111.11"),("111111111.11"),("-11111111.11");
insert into t1 values ("-111111111.11"),("+1111111111.11"),("1111111111.11");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("1e+1000"),("1e-1000"),("-1e+1000");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1264 Data truncated for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("123.4e"),("123.4e+2"),("123.4e-2"),("123e1"),("123e+0");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 3
+Warning 1265 Data truncated for column 'a' at row 3
select * from t1;
a
0.00
@@ -201,32 +201,32 @@ drop table t1;
create table t1 (a decimal(10,2) unsigned);
insert into t1 values ("0.0"),("-0.0"),("+0.0"),("01.0"),("+01.0"),("-01.0");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 6
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 6
insert into t1 values ("-.1"),("+.1"),(".1");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 1
insert into t1 values ("00000000000001"),("+0000000000001"),("-0000000000001");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("+111111111.11"),("111111111.11"),("-11111111.11");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("-111111111.11"),("+1111111111.11"),("1111111111.11");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("1e+1000"),("1e-1000"),("-1e+1000");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1264 Data truncated for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("123.4e"),("123.4e+2"),("123.4e-2"),("123e1"),("123e+0");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 3
+Warning 1265 Data truncated for column 'a' at row 3
select * from t1;
a
0.00
@@ -259,32 +259,32 @@ drop table t1;
create table t1 (a decimal(10,2) zerofill);
insert into t1 values ("0.0"),("-0.0"),("+0.0"),("01.0"),("+01.0"),("-01.0");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 6
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 6
insert into t1 values ("-.1"),("+.1"),(".1");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 1
insert into t1 values ("00000000000001"),("+0000000000001"),("-0000000000001");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("+111111111.11"),("111111111.11"),("-11111111.11");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("-111111111.11"),("+1111111111.11"),("1111111111.11");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("1e+1000"),("1e-1000"),("-1e+1000");
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1264 Data truncated for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values ("123.4e"),("123.4e+2"),("123.4e-2"),("123e1"),("123e+0");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 3
+Warning 1265 Data truncated for column 'a' at row 3
select * from t1;
a
00000000.00
@@ -321,13 +321,13 @@ insert into t1 values (00000000000001),(+0000000000001),(-0000000000001);
insert into t1 values (+111111111.11),(111111111.11),(-11111111.11);
insert into t1 values (-111111111.11),(+1111111111.11),(1111111111.11);
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values (1e+100),(1e-100),(-1e+100);
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 3
insert into t1 values (123.4e0),(123.4e+2),(123.4e-2),(123e1),(123e+0);
select * from t1;
a
@@ -361,8 +361,8 @@ drop table t1;
create table t1 (a decimal);
insert into t1 values (-99999999999999),(-1),('+1'),('01'),('+00000000000001'),('+12345678901'),(99999999999999);
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 7
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 7
select * from t1;
a
-9999999999
@@ -376,9 +376,9 @@ drop table t1;
create table t1 (a decimal unsigned);
insert into t1 values (-99999999999999),(-1),('+1'),('01'),('+00000000000001'),('+1234567890'),(99999999999999);
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 7
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 7
select * from t1;
a
0
@@ -392,9 +392,9 @@ drop table t1;
create table t1 (a decimal zerofill);
insert into t1 values (-99999999999999),(-1),('+1'),('01'),('+00000000000001'),('+1234567890'),(99999999999999);
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 7
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 7
select * from t1;
a
0000000000
@@ -408,9 +408,9 @@ drop table t1;
create table t1 (a decimal unsigned zerofill);
insert into t1 values (-99999999999999),(-1),('+1'),('01'),('+00000000000001'),('+1234567890'),(99999999999999);
Warnings:
-Warning 1263 Data truncated, out of range for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 7
+Warning 1264 Data truncated, out of range for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 7
select * from t1;
a
0000000000
@@ -424,16 +424,16 @@ drop table t1;
create table t1(a decimal(10,0));
insert into t1 values ("1e4294967295");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 1
select * from t1;
a
99999999999
delete from t1;
insert into t1 values("1e4294967297");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'a' at row 1
select * from t1;
a
99999999999
diff --git a/mysql-test/r/type_enum.result b/mysql-test/r/type_enum.result
index fe8f78453b7..976c484dabf 100644
--- a/mysql-test/r/type_enum.result
+++ b/mysql-test/r/type_enum.result
@@ -1639,13 +1639,13 @@ drop table t1;
create table t1 (a enum ('0','1'));
insert into t1 set a='foobar';
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 1
select * from t1;
a
update t1 set a = replace(a,'x','y');
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 1
select * from t1;
a
diff --git a/mysql-test/r/type_float.result b/mysql-test/r/type_float.result
index 2a461942853..a0c0e0f5503 100644
--- a/mysql-test/r/type_float.result
+++ b/mysql-test/r/type_float.result
@@ -15,8 +15,8 @@ f1 float NULL YES NULL select,insert,update,references
f2 double NULL YES NULL select,insert,update,references
insert into t1 values(10,10),(1e+5,1e+5),(1234567890,1234567890),(1e+10,1e+10),(1e+15,1e+15),(1e+20,1e+20),(1e+50,1e+50),(1e+150,1e+150);
Warnings:
-Warning 1263 Data truncated, out of range for column 'f1' at row 7
-Warning 1263 Data truncated, out of range for column 'f1' at row 8
+Warning 1264 Data truncated, out of range for column 'f1' at row 7
+Warning 1264 Data truncated, out of range for column 'f1' at row 8
insert into t1 values(-10,-10),(1e-5,1e-5),(1e-10,1e-10),(1e-15,1e-15),(1e-20,1e-20),(1e-50,1e-50),(1e-150,1e-150);
select * from t1;
f1 f2
diff --git a/mysql-test/r/type_ranges.result b/mysql-test/r/type_ranges.result
index 512df8fbaa9..4a3206005dd 100644
--- a/mysql-test/r/type_ranges.result
+++ b/mysql-test/r/type_ranges.result
@@ -89,34 +89,34 @@ insert into t1 values (NULL,2,2,2,2,2,2,2,2,2,2,2,2,2,NULL,NULL,NULL,NULL,NULL,N
insert into t1 values (0,1/3,3,3,3,3,3,3,3,3,3,3,3,3,NULL,'19970303','10:10:10','19970303101010','','','','3',3,3);
insert into t1 values (0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,NULL,19970807,080706,19970403090807,-1,-1,-1,'-1',-1,-1);
Warnings:
-Warning 1263 Data truncated, out of range for column 'utiny' at row 1
-Warning 1263 Data truncated, out of range for column 'ushort' at row 1
-Warning 1263 Data truncated, out of range for column 'umedium' at row 1
-Warning 1263 Data truncated, out of range for column 'ulong' at row 1
-Warning 1264 Data truncated for column 'options' at row 1
-Warning 1264 Data truncated for column 'flags' at row 1
+Warning 1264 Data truncated, out of range for column 'utiny' at row 1
+Warning 1264 Data truncated, out of range for column 'ushort' at row 1
+Warning 1264 Data truncated, out of range for column 'umedium' at row 1
+Warning 1264 Data truncated, out of range for column 'ulong' at row 1
+Warning 1265 Data truncated for column 'options' at row 1
+Warning 1265 Data truncated for column 'flags' at row 1
insert into t1 values (0,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,-4294967295,NULL,0,0,0,-4294967295,-4294967295,-4294967295,'-4294967295',0,"one,two,tree");
Warnings:
-Warning 1264 Data truncated for column 'string' at row 1
-Warning 1263 Data truncated, out of range for column 'tiny' at row 1
-Warning 1263 Data truncated, out of range for column 'short' at row 1
-Warning 1263 Data truncated, out of range for column 'medium' at row 1
-Warning 1263 Data truncated, out of range for column 'long_int' at row 1
-Warning 1263 Data truncated, out of range for column 'utiny' at row 1
-Warning 1263 Data truncated, out of range for column 'ushort' at row 1
-Warning 1263 Data truncated, out of range for column 'umedium' at row 1
-Warning 1263 Data truncated, out of range for column 'ulong' at row 1
-Warning 1264 Data truncated for column 'options' at row 1
+Warning 1265 Data truncated for column 'string' at row 1
+Warning 1264 Data truncated, out of range for column 'tiny' at row 1
+Warning 1264 Data truncated, out of range for column 'short' at row 1
+Warning 1264 Data truncated, out of range for column 'medium' at row 1
+Warning 1264 Data truncated, out of range for column 'long_int' at row 1
+Warning 1264 Data truncated, out of range for column 'utiny' at row 1
+Warning 1264 Data truncated, out of range for column 'ushort' at row 1
+Warning 1264 Data truncated, out of range for column 'umedium' at row 1
+Warning 1264 Data truncated, out of range for column 'ulong' at row 1
+Warning 1265 Data truncated for column 'options' at row 1
insert into t1 values (0,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,NULL,0,0,0,4294967295,4294967295,4294967295,'4294967295',0,0);
Warnings:
-Warning 1263 Data truncated, out of range for column 'tiny' at row 1
-Warning 1263 Data truncated, out of range for column 'short' at row 1
-Warning 1263 Data truncated, out of range for column 'medium' at row 1
-Warning 1263 Data truncated, out of range for column 'long_int' at row 1
-Warning 1263 Data truncated, out of range for column 'utiny' at row 1
-Warning 1263 Data truncated, out of range for column 'ushort' at row 1
-Warning 1263 Data truncated, out of range for column 'umedium' at row 1
-Warning 1264 Data truncated for column 'options' at row 1
+Warning 1264 Data truncated, out of range for column 'tiny' at row 1
+Warning 1264 Data truncated, out of range for column 'short' at row 1
+Warning 1264 Data truncated, out of range for column 'medium' at row 1
+Warning 1264 Data truncated, out of range for column 'long_int' at row 1
+Warning 1264 Data truncated, out of range for column 'utiny' at row 1
+Warning 1264 Data truncated, out of range for column 'ushort' at row 1
+Warning 1264 Data truncated, out of range for column 'umedium' at row 1
+Warning 1265 Data truncated for column 'options' at row 1
insert into t1 (tiny) values (1);
select auto,string,tiny,short,medium,long_int,longlong,real_float,real_double,utiny,ushort,umedium,ulong,ulonglong,mod(floor(time_stamp/1000000),1000000)-mod(curdate(),1000000),date_field,time_field,date_time,blob_col,tinyblob_col,mediumblob_col,longblob_col from t1;
auto string tiny short medium long_int longlong real_float real_double utiny ushort umedium ulong ulonglong mod(floor(time_stamp/1000000),1000000)-mod(curdate(),1000000) date_field time_field date_time blob_col tinyblob_col mediumblob_col longblob_col
@@ -165,12 +165,12 @@ PRIMARY KEY (auto)
);
INSERT INTO t2 (string,mediumblob_col,new_field) SELECT string,mediumblob_col,new_field from t1 where auto > 10;
Warnings:
-Warning 1264 Data truncated for column 'new_field' at row 2
-Warning 1264 Data truncated for column 'new_field' at row 3
-Warning 1264 Data truncated for column 'new_field' at row 4
-Warning 1264 Data truncated for column 'new_field' at row 5
-Warning 1264 Data truncated for column 'new_field' at row 6
-Warning 1264 Data truncated for column 'new_field' at row 7
+Warning 1265 Data truncated for column 'new_field' at row 2
+Warning 1265 Data truncated for column 'new_field' at row 3
+Warning 1265 Data truncated for column 'new_field' at row 4
+Warning 1265 Data truncated for column 'new_field' at row 5
+Warning 1265 Data truncated for column 'new_field' at row 6
+Warning 1265 Data truncated for column 'new_field' at row 7
select * from t2;
auto string mediumblob_col new_field
1 2 2 ne
@@ -202,9 +202,9 @@ one one
drop table t2;
create table t2 select * from t1;
Warnings:
-Warning 1264 Data truncated for column 'options' at row 4
-Warning 1264 Data truncated for column 'options' at row 5
-Warning 1264 Data truncated for column 'options' at row 6
+Warning 1265 Data truncated for column 'options' at row 4
+Warning 1265 Data truncated for column 'options' at row 5
+Warning 1265 Data truncated for column 'options' at row 6
update t2 set string="changed" where auto=16;
show full columns from t1;
Field Type Collation Null Key Default Extra Privileges Comment
diff --git a/mysql-test/r/type_time.result b/mysql-test/r/type_time.result
index 5666e865518..0830179902d 100644
--- a/mysql-test/r/type_time.result
+++ b/mysql-test/r/type_time.result
@@ -25,9 +25,9 @@ t
36:30:31
insert into t1 values("10.22.22"),(1234567),(123456789),(123456789.10),("10 22:22"),("12.45a");
Warnings:
-Warning 1263 Data truncated, out of range for column 't' at row 2
-Warning 1263 Data truncated, out of range for column 't' at row 3
-Warning 1263 Data truncated, out of range for column 't' at row 4
+Warning 1264 Data truncated, out of range for column 't' at row 2
+Warning 1264 Data truncated, out of range for column 't' at row 3
+Warning 1264 Data truncated, out of range for column 't' at row 4
select * from t1;
t
10:22:33
diff --git a/mysql-test/r/type_timestamp.result b/mysql-test/r/type_timestamp.result
index f704add4ebc..72640a4a802 100644
--- a/mysql-test/r/type_timestamp.result
+++ b/mysql-test/r/type_timestamp.result
@@ -45,11 +45,11 @@ drop table t1;
create table t1 (ix timestamp);
insert into t1 values (19991101000000),(19990102030405),(19990630232922),(19990601000000),(19990930232922),(19990531232922),(19990501000000),(19991101000000),(19990501000000),(20030101010160),(20030101016001),(20030101240101),(20030132010101),(20031301010101);
Warnings:
-Warning 1264 Data truncated for column 'ix' at row 10
-Warning 1264 Data truncated for column 'ix' at row 11
-Warning 1264 Data truncated for column 'ix' at row 12
-Warning 1264 Data truncated for column 'ix' at row 13
-Warning 1264 Data truncated for column 'ix' at row 14
+Warning 1265 Data truncated for column 'ix' at row 10
+Warning 1265 Data truncated for column 'ix' at row 11
+Warning 1265 Data truncated for column 'ix' at row 12
+Warning 1265 Data truncated for column 'ix' at row 13
+Warning 1265 Data truncated for column 'ix' at row 14
select ix+0 from t1;
ix+0
19991101000000
@@ -138,31 +138,31 @@ t1 t2
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `t1` timestamp(14) NOT NULL,
- `t2` timestamp(14) NOT NULL default '2003-01-01 00:00:00'
-) TYPE=MyISAM
+ `t1` timestamp NOT NULL,
+ `t2` timestamp NOT NULL default '2003-01-01 00:00:00'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
show columns from t1;
Field Type Null Key Default Extra
-t1 timestamp(14) YES NULL
-t2 timestamp(14) YES 2003-01-01 00:00:00
+t1 timestamp YES NULL
+t2 timestamp YES 2003-01-01 00:00:00
show columns from t1 like 't2';
Field Type Null Key Default Extra
-t2 timestamp(14) YES 2003-01-01 00:00:00
+t2 timestamp YES 2003-01-01 00:00:00
create table t2 (select * from t1);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `t1` timestamp(14) NOT NULL,
- `t2` timestamp(14) NOT NULL default '2003-01-01 00:00:00'
-) TYPE=MyISAM
+ `t1` timestamp NOT NULL,
+ `t2` timestamp NOT NULL default '2003-01-01 00:00:00'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
alter table t1 add column t0 timestamp first;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `t0` timestamp(14) NOT NULL,
- `t1` timestamp(14) NOT NULL default '2003-01-01 00:00:00',
- `t2` timestamp(14) NOT NULL default '2003-01-01 00:00:00'
-) TYPE=MyISAM
+ `t0` timestamp NOT NULL,
+ `t1` timestamp NOT NULL default '2003-01-01 00:00:00',
+ `t2` timestamp NOT NULL default '2003-01-01 00:00:00'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1,t2;
create table t1 (ts1 timestamp, ts2 timestamp);
set TIMESTAMP=1000000000;
diff --git a/mysql-test/r/type_uint.result b/mysql-test/r/type_uint.result
index d948ca47972..f312e9b7f64 100644
--- a/mysql-test/r/type_uint.result
+++ b/mysql-test/r/type_uint.result
@@ -4,7 +4,7 @@ create table t1 (this int unsigned);
insert into t1 values (1);
insert into t1 values (-1);
Warnings:
-Warning 1263 Data truncated, out of range for column 'this' at row 1
+Warning 1264 Data truncated, out of range for column 'this' at row 1
select * from t1;
this
1
diff --git a/mysql-test/r/type_year.result b/mysql-test/r/type_year.result
index 5ef3c1bba81..84b688429db 100644
--- a/mysql-test/r/type_year.result
+++ b/mysql-test/r/type_year.result
@@ -28,6 +28,8 @@ y y2
drop table t1;
create table t1 (y year);
insert into t1 values (now());
+Warnings:
+Warning 1265 Data truncated for column 'y' at row 1
select if(y = now(), 1, 0) from t1;
if(y = now(), 1, 0)
1
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result
index 801b9ccf80f..5355e7ffadc 100644
--- a/mysql-test/r/variables.result
+++ b/mysql-test/r/variables.result
@@ -236,7 +236,7 @@ ERROR HY000: Unknown collation: 'UNKNOWN_COLLATION'
set global autocommit=1;
ERROR HY000: Variable 'autocommit' is a LOCAL variable and can't be used with SET GLOBAL
select @@global.timestamp;
-ERROR HY000: Variable 'timestamp' is a LOCAL variable and can't be used with SET GLOBAL
+ERROR HY000: Variable 'timestamp' is a LOCAL variable
set @@version='';
ERROR HY000: Unknown system variable 'version'
set @@concurrent_insert=1;
@@ -244,7 +244,7 @@ ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set
set @@global.sql_auto_is_null=1;
ERROR HY000: Variable 'sql_auto_is_null' is a LOCAL variable and can't be used with SET GLOBAL
select @@global.sql_auto_is_null;
-ERROR HY000: Variable 'sql_auto_is_null' is a LOCAL variable and can't be used with SET GLOBAL
+ERROR HY000: Variable 'sql_auto_is_null' is a LOCAL variable
set myisam_max_sort_file_size=100;
ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL
set myisam_max_extra_sort_file_size=100;
@@ -381,7 +381,7 @@ select 1;
1
1
select @@session.key_buffer_size;
-Variable 'key_buffer_size' is a GLOBAL variable
+ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable
select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@session.max_join_size
100 200
diff --git a/mysql-test/r/warnings.result b/mysql-test/r/warnings.result
index b675d189d30..bff950584a1 100644
--- a/mysql-test/r/warnings.result
+++ b/mysql-test/r/warnings.result
@@ -4,19 +4,19 @@ create table t1 (a int);
insert into t1 values (1);
insert into t1 values ("hej");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 1
insert into t1 values ("hej"),("då");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
-Warning 1264 Data truncated for column 'a' at row 2
+Warning 1265 Data truncated for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 2
set SQL_WARNINGS=1;
insert into t1 values ("hej");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 1
insert into t1 values ("hej"),("då");
Warnings:
-Warning 1264 Data truncated for column 'a' at row 1
-Warning 1264 Data truncated for column 'a' at row 2
+Warning 1265 Data truncated for column 'a' at row 1
+Warning 1265 Data truncated for column 'a' at row 2
drop table t1;
set SQL_WARNINGS=0;
drop temporary table if exists not_exists;
@@ -43,13 +43,13 @@ drop table t1;
create table t1(a tinyint, b int not null, c date, d char(5));
load data infile '../../std_data/warnings_loaddata.dat' into table t1 fields terminated by ',';
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'b' at row 2
-Warning 1264 Data truncated for column 'd' at row 3
-Warning 1264 Data truncated for column 'c' at row 4
-Warning 1260 Row 5 doesn't contain data for all columns
-Warning 1264 Data truncated for column 'b' at row 6
-Warning 1261 Row 7 was truncated; It contained more data than there where input columns
-Warning 1263 Data truncated, out of range for column 'a' at row 8
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'b' at row 2
+Warning 1265 Data truncated for column 'd' at row 3
+Warning 1265 Data truncated for column 'c' at row 4
+Warning 1261 Row 5 doesn't contain data for all columns
+Warning 1265 Data truncated for column 'b' at row 6
+Warning 1262 Row 7 was truncated; It contained more data than there where input columns
+Warning 1264 Data truncated, out of range for column 'a' at row 8
select @@warning_count;
@@warning_count
7
@@ -57,44 +57,44 @@ drop table t1;
create table t1(a tinyint NOT NULL, b tinyint unsigned, c char(5));
insert into t1 values(NULL,100,'mysql'),(10,-1,'mysql ab'),(500,256,'open source'),(20,NULL,'test');
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'a' at row 1
-Warning 1263 Data truncated, out of range for column 'b' at row 2
-Warning 1264 Data truncated for column 'c' at row 2
-Warning 1263 Data truncated, out of range for column 'a' at row 3
-Warning 1263 Data truncated, out of range for column 'b' at row 3
-Warning 1264 Data truncated for column 'c' at row 3
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'a' at row 1
+Warning 1264 Data truncated, out of range for column 'b' at row 2
+Warning 1265 Data truncated for column 'c' at row 2
+Warning 1264 Data truncated, out of range for column 'a' at row 3
+Warning 1264 Data truncated, out of range for column 'b' at row 3
+Warning 1265 Data truncated for column 'c' at row 3
alter table t1 modify c char(4);
Warnings:
-Warning 1264 Data truncated for column 'c' at row 1
-Warning 1264 Data truncated for column 'c' at row 2
+Warning 1265 Data truncated for column 'c' at row 1
+Warning 1265 Data truncated for column 'c' at row 2
alter table t1 add d char(2);
update t1 set a=NULL where a=10;
Warnings:
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'a' at row 2
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'a' at row 2
update t1 set c='mysql ab' where c='test';
Warnings:
-Warning 1264 Data truncated for column 'c' at row 4
+Warning 1265 Data truncated for column 'c' at row 4
update t1 set d=c;
Warnings:
-Warning 1264 Data truncated for column 'd' at row 1
-Warning 1264 Data truncated for column 'd' at row 2
-Warning 1264 Data truncated for column 'd' at row 3
-Warning 1264 Data truncated for column 'd' at row 4
+Warning 1265 Data truncated for column 'd' at row 1
+Warning 1265 Data truncated for column 'd' at row 2
+Warning 1265 Data truncated for column 'd' at row 3
+Warning 1265 Data truncated for column 'd' at row 4
create table t2(a tinyint NOT NULL, b char(3));
insert into t2 select b,c from t1;
Warnings:
-Warning 1264 Data truncated for column 'b' at row 1
-Warning 1264 Data truncated for column 'b' at row 2
-Warning 1264 Data truncated for column 'b' at row 3
-Warning 1262 Data truncated, NULL supplied to NOT NULL column 'a' at row 4
-Warning 1264 Data truncated for column 'b' at row 4
+Warning 1265 Data truncated for column 'b' at row 1
+Warning 1265 Data truncated for column 'b' at row 2
+Warning 1265 Data truncated for column 'b' at row 3
+Warning 1263 Data truncated, NULL supplied to NOT NULL column 'a' at row 4
+Warning 1265 Data truncated for column 'b' at row 4
insert into t2(b) values('mysqlab');
Warnings:
-Warning 1264 Data truncated for column 'b' at row 1
+Warning 1265 Data truncated for column 'b' at row 1
set sql_warnings=1;
insert into t2(b) values('mysqlab');
Warnings:
-Warning 1264 Data truncated for column 'b' at row 1
+Warning 1265 Data truncated for column 'b' at row 1
set sql_warnings=0;
drop table t1, t2;
create table t1(a char(10));
@@ -102,34 +102,34 @@ alter table t1 add b char;
set max_error_count=10;
update t1 set b=a;
Warnings:
-Warning 1264 Data truncated for column 'b' at row 1
-Warning 1264 Data truncated for column 'b' at row 2
-Warning 1264 Data truncated for column 'b' at row 3
-Warning 1264 Data truncated for column 'b' at row 4
-Warning 1264 Data truncated for column 'b' at row 5
-Warning 1264 Data truncated for column 'b' at row 6
-Warning 1264 Data truncated for column 'b' at row 7
-Warning 1264 Data truncated for column 'b' at row 8
-Warning 1264 Data truncated for column 'b' at row 9
-Warning 1264 Data truncated for column 'b' at row 10
+Warning 1265 Data truncated for column 'b' at row 1
+Warning 1265 Data truncated for column 'b' at row 2
+Warning 1265 Data truncated for column 'b' at row 3
+Warning 1265 Data truncated for column 'b' at row 4
+Warning 1265 Data truncated for column 'b' at row 5
+Warning 1265 Data truncated for column 'b' at row 6
+Warning 1265 Data truncated for column 'b' at row 7
+Warning 1265 Data truncated for column 'b' at row 8
+Warning 1265 Data truncated for column 'b' at row 9
+Warning 1265 Data truncated for column 'b' at row 10
select @@warning_count;
@@warning_count
50
drop table t1;
create table t1 (id int) engine=isam;
Warnings:
-Warning 1265 Using storage engine MyISAM for table 't1'
+Warning 1266 Using storage engine MyISAM for table 't1'
alter table t1 engine=isam;
Warnings:
-Warning 1265 Using storage engine MyISAM for table 't1'
+Warning 1266 Using storage engine MyISAM for table 't1'
drop table t1;
create table t1 (id int) type=heap;
Warnings:
-Warning 1286 'TYPE=storage_engine' is deprecated. Use 'ENGINE=storage_engine' instead.
+Warning 1287 'TYPE=storage_engine' is deprecated. Use 'ENGINE=storage_engine' instead.
alter table t1 type=myisam;
Warnings:
-Warning 1286 'TYPE=storage_engine' is deprecated. Use 'ENGINE=storage_engine' instead.
+Warning 1287 'TYPE=storage_engine' is deprecated. Use 'ENGINE=storage_engine' instead.
drop table t1;
set table_type=MYISAM;
Warnings:
-Warning 1286 'table_type' is deprecated. Use 'storage_engine' instead.
+Warning 1287 'table_type' is deprecated. Use 'storage_engine' instead.
diff --git a/mysql-test/t/case.test b/mysql-test/t/case.test
index 9377c6c4aef..87e456baba7 100644
--- a/mysql-test/t/case.test
+++ b/mysql-test/t/case.test
@@ -63,14 +63,14 @@ CREATE TABLE t1 SELECT
SHOW CREATE TABLE t1;
DROP TABLE t1;
---error 1266
+--error 1267
SELECT CASE
WHEN 1
THEN _latin1'a' COLLATE latin1_danish_ci
ELSE _latin1'a' COLLATE latin1_swedish_ci
END;
---error 1269
+--error 1270
SELECT CASE _latin1'a' COLLATE latin1_general_ci
WHEN _latin1'a' COLLATE latin1_danish_ci THEN 1
WHEN _latin1'a' COLLATE latin1_swedish_ci THEN 2
@@ -93,9 +93,9 @@ CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_bin THEN '1' ELSE 2 END
#
# Check COALESCE argument types aggregation
---error 1266
+--error 1267
CREATE TABLE t1 SELECT COALESCE(_latin1'a',_latin2'a');
---error 1266
+--error 1267
CREATE TABLE t1 SELECT COALESCE('a' COLLATE latin1_swedish_ci,'b' COLLATE latin1_bin);
CREATE TABLE t1 SELECT
COALESCE(1), COALESCE(1.0),COALESCE('a'),
diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test
index 64134fe9990..70fa4173c76 100644
--- a/mysql-test/t/create.test
+++ b/mysql-test/t/create.test
@@ -74,7 +74,7 @@ create table `` (a int);
drop table if exists ``;
--error 1166
create table t1 (`` int);
---error 1279
+--error 1280
create table t1 (i int, index `` (i));
#
@@ -157,7 +157,7 @@ SELECT @@storage_engine;
CREATE TABLE t1 (a int not null);
show create table t1;
drop table t1;
---error 1285
+--error 1286
SET SESSION storage_engine="gemini";
SELECT @@storage_engine;
CREATE TABLE t1 (a int not null);
@@ -277,7 +277,7 @@ SELECT @@storage_engine;
CREATE TABLE t1 (a int not null);
show create table t1;
drop table t1;
---error 1285
+--error 1286
SET SESSION storage_engine="gemini";
SELECT @@storage_engine;
CREATE TABLE t1 (a int not null);
diff --git a/mysql-test/t/ctype_collate.test b/mysql-test/t/ctype_collate.test
index 5916e3da241..3599beeacc4 100644
--- a/mysql-test/t/ctype_collate.test
+++ b/mysql-test/t/ctype_collate.test
@@ -7,12 +7,12 @@ CREATE TABLE t1 (
latin1_f CHAR(32) CHARACTER SET latin1 NOT NULL
);
---error 1252
+--error 1253
CREATE TABLE t2 (
latin1_f CHAR(32) CHARACTER SET latin1 COLLATE koi8r_general_ci NOT NULL
);
---error 1272
+--error 1273
CREATE TABLE t2 (
latin1_f CHAR(32) CHARACTER SET latin1 COLLATE some_non_existing_col NOT NULL
);
@@ -66,7 +66,7 @@ SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_swedish_ci;
SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_german2_ci;
SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_general_ci;
SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_bin;
---error 1252
+--error 1253
SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE koi8r_general_ci;
--SELECT latin1_f COLLATE koi8r FROM t1 ;
@@ -76,7 +76,7 @@ SELECT latin1_f COLLATE latin1_swedish_ci AS latin1_f_as FROM t1 ORDER BY latin1
SELECT latin1_f COLLATE latin1_german2_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
SELECT latin1_f COLLATE latin1_general_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
SELECT latin1_f COLLATE latin1_bin AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
---error 1252
+--error 1253
SELECT latin1_f COLLATE koi8r_general_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
@@ -87,7 +87,7 @@ SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_swedish_ci;
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_german2_ci;
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_general_ci;
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_bin;
---error 1252
+--error 1253
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE koi8r_general_ci;
@@ -98,7 +98,7 @@ SELECT DISTINCT latin1_f COLLATE latin1_swedish_ci FROM t1;
SELECT DISTINCT latin1_f COLLATE latin1_german2_ci FROM t1;
SELECT DISTINCT latin1_f COLLATE latin1_general_ci FROM t1;
SELECT DISTINCT latin1_f COLLATE latin1_bin FROM t1;
---error 1272
+--error 1273
SELECT DISTINCT latin1_f COLLATE koi8r FROM t1;
@@ -153,7 +153,7 @@ DROP TABLE t1;
CREATE TABLE t1
(s1 CHAR(5) COLLATE latin1_german1_ci,
s2 CHAR(5) COLLATE latin1_swedish_ci);
---error 1266
+--error 1267
SELECT * FROM t1 WHERE s1 = s2;
DROP TABLE t1;
diff --git a/mysql-test/t/ctype_tis620.test b/mysql-test/t/ctype_tis620.test
index 7314b52e301..b30a5fbc95a 100644
--- a/mysql-test/t/ctype_tis620.test
+++ b/mysql-test/t/ctype_tis620.test
@@ -1,13 +1,78 @@
+-- source include/have_tis620.inc
+
+#
+# Tests with the big5 character set
+#
--disable_warnings
drop table if exists t1;
--enable_warnings
+#
+# Bug 1552: tis620 <-> unicode conversion crashed
+# Check tis620 -> utf8 -> tis620 round trip conversion
+#
+
+SET @pl0= _tis620 0x000102030405060708090A0B0C0D0E0F;
+SET @pl1= _tis620 0x101112131415161718191A1B1C1D1E1F;
+SET @pl2= _tis620 0x202122232425262728292A2B2C2D2E2F;
+SET @pl3= _tis620 0x303132333435363738393A3B3C3D3E3F;
+SET @pl4= _tis620 0x404142434445464748494A4B4C4D4E4F;
+SET @pl5= _tis620 0x505152535455565758595A5B5C5D5E5F;
+SET @pl6= _tis620 0x606162636465666768696A6B6C6D6E6F;
+SET @pl7= _tis620 0x707172737475767778797A7B7C7D7E7F;
+SET @pl8= _tis620 0x808182838485868788898A8B8C8D8E8F;
+SET @pl9= _tis620 0x909192939495969798999A9B9C9D9E9F;
+SET @plA= _tis620 0xA0A1A2A3A4A5A6A7A8A9AAABACADAEAF;
+SET @plB= _tis620 0xB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF;
+SET @plC= _tis620 0xC0C1C2C3C4C5C6C7C8C9CACBCCCDCECF;
+SET @plD= _tis620 0xD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF;
+SET @plE= _tis620 0xE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF;
+SET @plF= _tis620 0xF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF;
+
+SELECT hex(@u0:=convert(@pl0 using utf8));
+SELECT hex(@u1:=convert(@pl1 using utf8));
+SELECT hex(@u2:=convert(@pl2 using utf8));
+SELECT hex(@u3:=convert(@pl3 using utf8));
+SELECT hex(@u4:=convert(@pl4 using utf8));
+SELECT hex(@u5:=convert(@pl5 using utf8));
+SELECT hex(@u6:=convert(@pl6 using utf8));
+SELECT hex(@u7:=convert(@pl7 using utf8));
+SELECT hex(@u8:=convert(@pl8 using utf8));
+SELECT hex(@u9:=convert(@pl9 using utf8));
+SELECT hex(@uA:=convert(@plA using utf8));
+SELECT hex(@uB:=convert(@plB using utf8));
+SELECT hex(@uC:=convert(@plC using utf8));
+SELECT hex(@uD:=convert(@plD using utf8));
+SELECT hex(@uE:=convert(@plE using utf8));
+SELECT hex(@uF:=convert(@plF using utf8));
+
+SELECT hex(convert(@u0 USING tis620));
+SELECT hex(convert(@u1 USING tis620));
+SELECT hex(convert(@u2 USING tis620));
+SELECT hex(convert(@u3 USING tis620));
+SELECT hex(convert(@u4 USING tis620));
+SELECT hex(convert(@u5 USING tis620));
+SELECT hex(convert(@u6 USING tis620));
+SELECT hex(convert(@u7 USING tis620));
+SELECT hex(convert(@u8 USING tis620));
+SELECT hex(convert(@u9 USING tis620));
+SELECT hex(convert(@uA USING tis620));
+SELECT hex(convert(@uB USING tis620));
+SELECT hex(convert(@uC USING tis620));
+SELECT hex(convert(@uD USING tis620));
+SELECT hex(convert(@uE USING tis620));
+SELECT hex(convert(@uF USING tis620));
+
+SET NAMES tis620;
+
CREATE TABLE t1 (
recid int(11) NOT NULL auto_increment,
dyninfo text,
PRIMARY KEY (recid)
) ENGINE=MyISAM;
+show create table t1;
+
INSERT INTO t1 VALUES (1,'color=\"STB,NPG\"\r\nengine=\"J30A13\"\r\nframe=\"MRHCG1640YP4\"\r\ngrade=\"V6\"\r\nmodel=\"ACCORD\"\r\nmodelcode=\"CG164YEN\"\r\ntype=\"VT6\"\r\n');
INSERT INTO t1 VALUES (2,'color=\"HTM,NPG,DEG,RGS\"\r\nengine=\"F23A5YP1\"\r\nframe=\"MRHCF8640YP3\"\r\ngrade=\"EXi AT\"\r\nmodel=\"ACCORD\"\r\nmodelcode=\"CF864YE\"\r\ntype=\"EXA\"\r\n');
diff --git a/mysql-test/t/ctype_tis620.test-old b/mysql-test/t/ctype_tis620.test-old
deleted file mode 100644
index 82c660dfea0..00000000000
--- a/mysql-test/t/ctype_tis620.test-old
+++ /dev/null
@@ -1,64 +0,0 @@
--- source include/have_tis620.inc
-
-#
-# Tests with the big5 character set
-#
---disable_warnings
-drop table if exists t1;
---enable_warnings
-
-#
-# Bug 1552: tis620 <-> unicode conversion crashed
-# Check tis620 -> utf8 -> tis620 round trip conversion
-#
-
-SET @pl0= _tis620 0x000102030405060708090A0B0C0D0E0F;
-SET @pl1= _tis620 0x101112131415161718191A1B1C1D1E1F;
-SET @pl2= _tis620 0x202122232425262728292A2B2C2D2E2F;
-SET @pl3= _tis620 0x303132333435363738393A3B3C3D3E3F;
-SET @pl4= _tis620 0x404142434445464748494A4B4C4D4E4F;
-SET @pl5= _tis620 0x505152535455565758595A5B5C5D5E5F;
-SET @pl6= _tis620 0x606162636465666768696A6B6C6D6E6F;
-SET @pl7= _tis620 0x707172737475767778797A7B7C7D7E7F;
-SET @pl8= _tis620 0x808182838485868788898A8B8C8D8E8F;
-SET @pl9= _tis620 0x909192939495969798999A9B9C9D9E9F;
-SET @plA= _tis620 0xA0A1A2A3A4A5A6A7A8A9AAABACADAEAF;
-SET @plB= _tis620 0xB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF;
-SET @plC= _tis620 0xC0C1C2C3C4C5C6C7C8C9CACBCCCDCECF;
-SET @plD= _tis620 0xD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF;
-SET @plE= _tis620 0xE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF;
-SET @plF= _tis620 0xF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF;
-
-SELECT hex(@u0:=convert(@pl0 using utf8));
-SELECT hex(@u1:=convert(@pl1 using utf8));
-SELECT hex(@u2:=convert(@pl2 using utf8));
-SELECT hex(@u3:=convert(@pl3 using utf8));
-SELECT hex(@u4:=convert(@pl4 using utf8));
-SELECT hex(@u5:=convert(@pl5 using utf8));
-SELECT hex(@u6:=convert(@pl6 using utf8));
-SELECT hex(@u7:=convert(@pl7 using utf8));
-SELECT hex(@u8:=convert(@pl8 using utf8));
-SELECT hex(@u9:=convert(@pl9 using utf8));
-SELECT hex(@uA:=convert(@plA using utf8));
-SELECT hex(@uB:=convert(@plB using utf8));
-SELECT hex(@uC:=convert(@plC using utf8));
-SELECT hex(@uD:=convert(@plD using utf8));
-SELECT hex(@uE:=convert(@plE using utf8));
-SELECT hex(@uF:=convert(@plF using utf8));
-
-SELECT hex(convert(@u0 USING tis620));
-SELECT hex(convert(@u1 USING tis620));
-SELECT hex(convert(@u2 USING tis620));
-SELECT hex(convert(@u3 USING tis620));
-SELECT hex(convert(@u4 USING tis620));
-SELECT hex(convert(@u5 USING tis620));
-SELECT hex(convert(@u6 USING tis620));
-SELECT hex(convert(@u7 USING tis620));
-SELECT hex(convert(@u8 USING tis620));
-SELECT hex(convert(@u9 USING tis620));
-SELECT hex(convert(@uA USING tis620));
-SELECT hex(convert(@uB USING tis620));
-SELECT hex(convert(@uC USING tis620));
-SELECT hex(convert(@uD USING tis620));
-SELECT hex(convert(@uE USING tis620));
-SELECT hex(convert(@uF USING tis620));
diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test
index bd5d9e5c0d9..e370b545eff 100644
--- a/mysql-test/t/delete.test
+++ b/mysql-test/t/delete.test
@@ -84,7 +84,7 @@ insert into t2 values (1, 21),(2, 12),(3, 23);
select * from t11;
select * from t12;
select * from t2;
--- error 1241
+-- error 1242
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b <> (select b from t2 where t11.a < t2.a);
select * from t11;
select * from t12;
@@ -92,7 +92,7 @@ delete ignore t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b <> (select
select * from t11;
select * from t12;
insert into t11 values (2, 12);
--- error 1241
+-- error 1242
delete from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
select * from t11;
delete ignore from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
diff --git a/mysql-test/t/derived.test b/mysql-test/t/derived.test
index a9341ada416..0ef56191b7c 100644
--- a/mysql-test/t/derived.test
+++ b/mysql-test/t/derived.test
@@ -116,7 +116,7 @@ select mail_id, if(folder.f_description!='', folder.f_description, folder.f_nam
#
create table t1 (a int);
insert into t1 values (1),(2),(3);
--- error 1287
+-- error 1288
update (select * from t1) as t1 set a = 5;
-- error 1064
delete from (select * from t1);
@@ -151,13 +151,13 @@ CREATE TABLE `t1` (
INSERT INTO `t1` (N, M) VALUES (1, 0),(1, 0),(1, 0),(2, 0),(2, 0),(3, 0);
UPDATE `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2;
select * from t1;
--- error 1287
+-- error 1288
UPDATE `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2, P2.N = 2;
-- error 1054
UPDATE `t1` AS P1 INNER JOIN (SELECT aaaa FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2;
delete P1.* from `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
select * from t1;
--- error 1287
+-- error 1288
delete P1.*,P2.* from `t1` AS P1 INNER JOIN (SELECT N FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
-- error 1054
delete P1.* from `t1` AS P1 INNER JOIN (SELECT aaa FROM `t1` GROUP BY N HAVING Count(M) > 1) AS P2 ON P1.N = P2.N;
diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test
index be75d5ee7cc..98b9eb114ab 100644
--- a/mysql-test/t/fulltext.test
+++ b/mysql-test/t/fulltext.test
@@ -145,9 +145,9 @@ select * from t2 having MATCH inhalt AGAINST ('foobar');
# check of fulltext errors
#
---error 1282
+--error 1283
CREATE TABLE t3 (t int(11),i text,fulltext tix (t,i));
---error 1282
+--error 1283
CREATE TABLE t3 (t int(11),i text,
j varchar(200) CHARACTER SET latin2,
fulltext tix (i,j));
diff --git a/mysql-test/t/func_in.test b/mysql-test/t/func_in.test
index 9ff768ec76b..855a7cbd28f 100644
--- a/mysql-test/t/func_in.test
+++ b/mysql-test/t/func_in.test
@@ -61,11 +61,11 @@ c char(1) character set latin1 collate latin1_danish_ci
);
insert into t1 values ('A','B','C');
insert into t1 values ('a','c','c');
---error 1266
+--error 1267
select * from t1 where a in (b);
---error 1269
-select * from t1 where a in (b,c);
--error 1270
+select * from t1 where a in (b,c);
+--error 1271
select * from t1 where 'a' in (a,b,c);
select * from t1 where 'a' in (a);
select * from t1 where a in ('a');
diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test
index 233b58ea9b6..a9c2895206d 100644
--- a/mysql-test/t/func_str.test
+++ b/mysql-test/t/func_str.test
@@ -177,23 +177,22 @@ select 1=_latin1'1';
select _latin1'1'=1;
select _latin2'1'=1;
select 1=_latin2'1';
---error 1266
+--error 1267
select _latin1'1'=_latin2'1';
select row('a','b','c') = row('a','b','c');
select row('A','b','c') = row('a','b','c');
select row('A' COLLATE latin1_bin,'b','c') = row('a','b','c');
select row('A','b','c') = row('a' COLLATE latin1_bin,'b','c');
---error 1266
+--error 1267
select row('A' COLLATE latin1_general_ci,'b','c') = row('a' COLLATE latin1_bin,'b','c');
---error 1266
+--error 1267
select concat(_latin1'a',_latin2'a');
---error 1269
-select concat(_latin1'a',_latin2'a',_latin5'a');
--error 1270
+select concat(_latin1'a',_latin2'a',_latin5'a');
+--error 1271
select concat(_latin1'a',_latin2'a',_latin5'a',_latin7'a');
-
#
# Test FIELD() and collations
#
@@ -201,65 +200,64 @@ select FIELD('b','A','B');
select FIELD('B','A','B');
select FIELD('b' COLLATE latin1_bin,'A','B');
select FIELD('b','A' COLLATE latin1_bin,'B');
---error 1269
+--error 1270
select FIELD(_latin2'b','A','B');
---error 1269
+--error 1270
select FIELD('b',_latin2'A','B');
select FIELD('b',_latin2'A','B',1);
-
select POSITION(_latin1'B' IN _latin1'abcd');
select POSITION(_latin1'B' IN _latin1'abcd' COLLATE latin1_bin);
select POSITION(_latin1'B' COLLATE latin1_bin IN _latin1'abcd');
---error 1266
+--error 1267
select POSITION(_latin1'B' COLLATE latin1_general_ci IN _latin1'abcd' COLLATE latin1_bin);
---error 1266
+--error 1267
select POSITION(_latin1'B' IN _latin2'abcd');
select FIND_IN_SET(_latin1'B',_latin1'a,b,c,d');
--fix this:
--select FIND_IN_SET(_latin1'B',_latin1'a,b,c,d' COLLATE latin1_bin);
--select FIND_IN_SET(_latin1'B' COLLATE latin1_bin,_latin1'a,b,c,d');
---error 1266
+--error 1267
select FIND_IN_SET(_latin1'B' COLLATE latin1_general_ci,_latin1'a,b,c,d' COLLATE latin1_bin);
---error 1266
+--error 1267
select FIND_IN_SET(_latin1'B',_latin2'a,b,c,d');
select SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin1'd',2);
--fix this:
--select SUBSTRING_INDEX(_latin1'abcdabcdabcd' COLLATE latin1_bin,_latin1'd',2);
--select SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin1'd' COLLATE latin1_bin,2);
---error 1266
+--error 1267
select SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin2'd',2);
---error 1266
+--error 1267
select SUBSTRING_INDEX(_latin1'abcdabcdabcd' COLLATE latin1_general_ci,_latin1'd' COLLATE latin1_bin,2);
select _latin1'B' between _latin1'a' and _latin1'c';
select _latin1'B' collate latin1_bin between _latin1'a' and _latin1'c';
select _latin1'B' between _latin1'a' collate latin1_bin and _latin1'c';
select _latin1'B' between _latin1'a' and _latin1'c' collate latin1_bin;
---error 1269
+--error 1270
select _latin2'B' between _latin1'a' and _latin1'b';
---error 1269
+--error 1270
select _latin1'B' between _latin2'a' and _latin1'b';
---error 1269
+--error 1270
select _latin1'B' between _latin1'a' and _latin2'b';
---error 1269
+--error 1270
select _latin1'B' collate latin1_general_ci between _latin1'a' collate latin1_bin and _latin1'b';
select _latin1'B' in (_latin1'a',_latin1'b');
select _latin1'B' collate latin1_bin in (_latin1'a',_latin1'b');
select _latin1'B' in (_latin1'a' collate latin1_bin,_latin1'b');
select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin);
---error 1269
+--error 1270
select _latin2'B' in (_latin1'a',_latin1'b');
---error 1269
+--error 1270
select _latin1'B' in (_latin2'a',_latin1'b');
---error 1269
+--error 1270
select _latin1'B' in (_latin1'a',_latin2'b');
---error 1269
+--error 1270
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
---error 1269
+--error 1270
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
select collation(bin(130)), coercibility(bin(130));
@@ -345,7 +343,7 @@ select SUBSTR('abcdefg',1,-1) FROM DUAL;
# when an error on a lower level (in concat) has accured:
#
create table t7 (s1 char);
---error 1266
+--error 1267
select * from t7
where concat(s1 collate latin1_general_ci,s1 collate latin1_swedish_ci) = 'AA';
drop table t7;
diff --git a/mysql-test/t/func_test.test b/mysql-test/t/func_test.test
index 0d055549866..44047491862 100644
--- a/mysql-test/t/func_test.test
+++ b/mysql-test/t/func_test.test
@@ -51,9 +51,9 @@ explain extended select _koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci;
select _koi8r'a' = _koi8r'A' COLLATE koi8r_bin;
select _koi8r'a' COLLATE koi8r_general_ci = _koi8r'A';
select _koi8r'a' COLLATE koi8r_bin = _koi8r'A';
---error 1266
+--error 1267
select _koi8r'a' COLLATE koi8r_bin = _koi8r'A' COLLATE koi8r_general_ci;
---error 1266
+--error 1267
select _koi8r'a' = _latin1'A';
select strcmp(_koi8r'a', _koi8r'A');
@@ -61,9 +61,9 @@ select strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_general_ci);
select strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_bin);
select strcmp(_koi8r'a' COLLATE koi8r_general_ci, _koi8r'A');
select strcmp(_koi8r'a' COLLATE koi8r_bin, _koi8r'A');
---error 1266
+--error 1267
select strcmp(_koi8r'a' COLLATE koi8r_general_ci, _koi8r'A' COLLATE koi8r_bin);
---error 1266
+--error 1267
select strcmp(_koi8r'a', _latin1'A');
select _koi8r'a' LIKE _koi8r'A';
@@ -71,9 +71,9 @@ select _koi8r'a' LIKE _koi8r'A' COLLATE koi8r_general_ci;
select _koi8r'a' LIKE _koi8r'A' COLLATE koi8r_bin;
select _koi8r'a' COLLATE koi8r_general_ci LIKE _koi8r'A';
select _koi8r'a' COLLATE koi8r_bin LIKE _koi8r'A';
---error 1266
+--error 1267
select _koi8r'a' COLLATE koi8r_general_ci LIKE _koi8r'A' COLLATE koi8r_bin;
---error 1266
+--error 1267
select _koi8r'a' LIKE _latin1'A';
#
diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test
index 78221fa4e40..5cf3e10f972 100644
--- a/mysql-test/t/grant.test
+++ b/mysql-test/t/grant.test
@@ -110,14 +110,14 @@ show grants for drop_user@localhost;
revoke all privileges, grant from drop_user@localhost;
show grants for drop_user@localhost;
drop user drop_user@localhost;
---error 1268
+--error 1269
revoke all privileges, grant from drop_user@localhost;
grant select(a) on test.t1 to drop_user1@localhost;
grant select on test.t1 to drop_user2@localhost;
grant select on test.* to drop_user3@localhost;
grant select on *.* to drop_user4@localhost;
---error 1267
+--error 1268
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
drop_user4@localhost;
revoke all privileges, grant from drop_user1@localhost, drop_user2@localhost,
diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test
index 92ab6008840..ada2771fdc2 100644
--- a/mysql-test/t/innodb.test
+++ b/mysql-test/t/innodb.test
@@ -936,8 +936,8 @@ drop table t1;
# Test dictionary handling with spaceand quoting
#
-CREATE TABLE t1 (`id 1` INT NOT NULL, PRIMARY KEY (`id 1`)) TYPE=INNODB;
-CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (`t1_id`) REFERENCES `t1`(`id 1`) ON DELETE CASCADE ) TYPE=INNODB;
+CREATE TABLE t1 (`id 1` INT NOT NULL, PRIMARY KEY (`id 1`)) ENGINE=INNODB;
+CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (`t1_id`) REFERENCES `t1`(`id 1`) ON DELETE CASCADE ) ENGINE=INNODB;
#show create table t2;
drop table t2,t1;
diff --git a/mysql-test/t/key_cache.test b/mysql-test/t/key_cache.test
index d9a2200a636..2bf5cdbcf6f 100644
--- a/mysql-test/t/key_cache.test
+++ b/mysql-test/t/key_cache.test
@@ -41,7 +41,7 @@ SET @@global.key_buffer_size=@save_key_buffer;
--error 1064
SELECT @@default.key_buffer_size;
---error 1271
+--error 1272
SELECT @@skr.storage_engine="test";
select @@keycache1.key_cache_block_size;
@@ -99,7 +99,7 @@ explain select a from t2;
select a from t2;
# Test some error conditions
---error 1283
+--error 1284
cache index t1 in unknown_key_cache;
cache index t1 key (unknown_key) in keycache1;
diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test
index 6ced608344b..c407cba4800 100644
--- a/mysql-test/t/myisam.test
+++ b/mysql-test/t/myisam.test
@@ -423,6 +423,18 @@ select * from t1 where a='807780' and b='477' and c='165';
drop table t1;
#
+# Verify blob handling
+#
+create table t1 (a blob);
+insert into t1 values('a '),('a');
+select concat(a,'.') from t1 where a='a';
+select concat(a,'.') from t1 where a='a ';
+alter table t1 add key(a(2));
+select concat(a,'.') from t1 where a='a';
+select concat(a,'.') from t1 where a='a ';
+drop table t1;
+
+#
# Test text and unique
#
create table t1 (a int not null auto_increment primary key, b text not null, unique b (b(20)));
diff --git a/mysql-test/t/row.test b/mysql-test/t/row.test
index ecb0c6adfc1..62e8eb7991c 100644
--- a/mysql-test/t/row.test
+++ b/mysql-test/t/row.test
@@ -15,7 +15,7 @@ select row('b',1.5,3) IN (row(3,NULL,3), row('a',1.5,3), row(1,3,3));
select row('b',1.5,3) IN (row('b',NULL,3), row('a',1.5,3), row(1,3,3));
select row('b',1.5,3) IN (row('b',NULL,4), row('a',1.5,3), row(1,3,3));
select (1,2,(3,4)) IN ((3,2,(3,4)), (1,2,(3,4)));
--- error 1240
+-- error 1241
select row(1,2,row(3,4)) IN (row(3,2,row(3,4)), row(1,2,4));
select row(1,2,row(3,4)) IN (row(3,2,row(3,4)), row(1,2,row(3,NULL)));
explain extended select row(1,2,row(3,4)) IN (row(3,2,row(3,4)), row(1,2,row(3,NULL)));
@@ -37,12 +37,12 @@ SELECT ROW(NULL,2,3)=ROW(NULL,2,3);
SELECT ROW(NULL,2,3)<=>ROW(NULL,2,3);
SELECT ROW(1,2,ROW(3,4,5))=ROW(1,2,ROW(3,4,5));
SELECT ROW('test',2,3.33)=ROW('test',2,3.33);
--- error 1240
+-- error 1241
SELECT ROW('test',2,3.33)=ROW('test',2,3.33,4);
SELECT ROW('test',2,ROW(3,33))=ROW('test',2,ROW(3,33));
SELECT ROW('test',2,ROW(3,33))=ROW('test',2,ROW(3,3));
SELECT ROW('test',2,ROW(3,33))=ROW('test',2,ROW(3,NULL));
--- error 1240
+-- error 1241
SELECT ROW('test',2,ROW(3,33))=ROW('test',2,4);
create table t1 ( a int, b int, c int);
@@ -56,15 +56,15 @@ select ROW(a,b,c) IN(row(1,2,3), row(3,2,1)) from t1;
select ROW(1,2,3) IN(row(a,b,c), row(1,2,3)) from t1;
drop table t1;
--- error 1240
+-- error 1241
select ROW(1,1);
create table t1 (i int);
--- error 1240
+-- error 1241
select 1 from t1 where ROW(1,1);
--- error 1240
+-- error 1241
select count(*) from t1 order by ROW(1,1);
--- error 1240
+-- error 1241
select count(*) from t1 having (1,1) order by i;
drop table t1;
diff --git a/mysql-test/t/rpl_until.test b/mysql-test/t/rpl_until.test
index 40d36110296..5eaec0727b6 100644
--- a/mysql-test/t/rpl_until.test
+++ b/mysql-test/t/rpl_until.test
@@ -67,15 +67,15 @@ real_sleep 4
show slave status;
#testing various error conditions
---error 1276
+--error 1277
start slave until master_log_file='master-bin', master_log_pos=561;
---error 1276
+--error 1277
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
---error 1276
+--error 1277
start slave until master_log_file='master-bin.000001';
---error 1276
+--error 1277
start slave until relay_log_file='slave-relay-bin.000002';
---error 1276
+--error 1277
start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
start slave sql_thread;
diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test
index 6c53c70c9a0..c5e4ce42ffe 100644
--- a/mysql-test/t/subselect.test
+++ b/mysql-test/t/subselect.test
@@ -9,12 +9,12 @@ SELECT (SELECT 1) UNION SELECT (SELECT 2);
explain extended SELECT (SELECT 1) UNION SELECT (SELECT 2);
SELECT (SELECT (SELECT 0 UNION SELECT 0));
explain extended SELECT (SELECT (SELECT 0 UNION SELECT 0));
--- error 1246
+-- error 1247
SELECT (SELECT 1 FROM (SELECT 1) as b HAVING a=1) as a;
--- error 1246
+-- error 1247
SELECT (SELECT 1 FROM (SELECT 1) as b HAVING b=1) as a,(SELECT 1 FROM (SELECT 1) as c HAVING a=1) as b;
SELECT (SELECT 1),MAX(1) FROM (SELECT 1) as a;
--- error 1246
+-- error 1247
SELECT (SELECT a) as a;
EXPLAIN EXTENDED SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
@@ -24,7 +24,7 @@ SELECT 1 as a FROM (SELECT 1) as b HAVING (SELECT a)=1;
-- error 1054
SELECT 1 FROM (SELECT (SELECT a) b) c;
SELECT * FROM (SELECT 1 as id) b WHERE id IN (SELECT * FROM (SELECT 1 as id) c ORDER BY id);
--- error 1240
+-- error 1241
SELECT * FROM (SELECT 1) a WHERE 1 IN (SELECT 1,1);
SELECT 1 IN (SELECT 1);
SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
@@ -51,7 +51,7 @@ SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'c','a');
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
--- error 1240
+-- error 1241
SELECT (SELECT * FROM (SELECT 'test' a,'test' b) a);
SELECT 1 as a,(SELECT a+a) b,(SELECT b);
@@ -63,7 +63,7 @@ create table t4 (a int not null, b int not null);
insert into t1 values (2);
insert into t2 values (1,7),(2,7);
insert into t4 values (4,8),(3,8),(5,9);
--- error 1246
+-- error 1247
select (select a from t1 where t1.a = a1) as a2, (select b from t2 where t2.b=a2) as a1;
select (select a from t1 where t1.a=t2.a), a from t2;
select (select a from t1 where t1.a=t2.b), a from t2;
@@ -103,9 +103,9 @@ select * from t3 where a >= any (select b from t2);
explain extended select * from t3 where a >= any (select b from t2);
select * from t3 where a >= all (select b from t2);
delete from t2 where a=100;
--- error 1240
+-- error 1241
select * from t3 where a in (select a,b from t2);
--- error 1240
+-- error 1241
select * from t3 where a in (select * from t2);
insert into t4 values (12,7),(1,7),(10,9),(9,6),(7,6),(3,9),(1,10);
-- empty set
@@ -121,7 +121,7 @@ select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)
insert into t5 values (2);
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
--- error 1241
+-- error 1242
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
create table t7( uq int primary key, name char(25));
@@ -158,14 +158,14 @@ INSERT INTO t8 (pseudo,email) VALUES ('joce','test');
INSERT INTO t8 (pseudo,email) VALUES ('joce1','test1');
INSERT INTO t8 (pseudo,email) VALUES ('2joce1','2test1');
EXPLAIN EXTENDED SELECT pseudo,(SELECT email FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce')) FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce');
--- error 1240
+-- error 1241
SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo,email FROM
t8 WHERE pseudo='joce');
--- error 1240
+-- error 1241
SELECT pseudo FROM t8 WHERE pseudo=(SELECT * FROM t8 WHERE
pseudo='joce');
SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce');
--- error 1241
+-- error 1242
SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo LIKE '%joce%');
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8;
@@ -185,7 +185,7 @@ EXPLAIN EXTENDED SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');
SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';
SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');
SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1) UNION ALL SELECT 1;
--- error 1241
+-- error 1242
SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1) UNION SELECT 1;
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1);
drop table t1;
@@ -242,9 +242,9 @@ CREATE TABLE `t1` (
) ENGINE=MyISAM ROW_FORMAT=FIXED;
INSERT INTO t1 (numeropost,maxnumrep) VALUES (1,0),(2,1);
--- error 1241
+-- error 1242
select numeropost as a FROM t1 GROUP BY (SELECT 1 FROM t1 HAVING a=1);
--- error 1241
+-- error 1242
select numeropost as a FROM t1 ORDER BY (SELECT 1 FROM t1 HAVING a=1);
drop table t1;
@@ -256,7 +256,7 @@ drop table t1;
#iftest
CREATE TABLE t1 (field char(1) NOT NULL DEFAULT 'b');
INSERT INTO t1 VALUES ();
--- error 1241
+-- error 1242
SELECT field FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1 FROM (SELECT 1) a HAVING field='b');
drop table t1;
@@ -269,13 +269,13 @@ CREATE TABLE `t1` (
UNIQUE KEY `numreponse` (`numreponse`),
KEY `pseudo` (`pseudo`,`numeropost`)
) ENGINE=MyISAM;
--- error 1246
+-- error 1247
SELECT (SELECT numeropost FROM t1 HAVING numreponse=a),numreponse FROM (SELECT * FROM t1) as a;
-- error 1054
SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=a) FROM (SELECT * FROM t1) as a;
SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=1) FROM (SELECT * FROM t1) as a;
INSERT INTO t1 (numeropost,numreponse,pseudo) VALUES (1,1,'joce'),(1,2,'joce'),(1,3,'test');
--- error 1241
+-- error 1242
EXPLAIN EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT 1 FROM t1 WHERE numeropost='1');
EXPLAIN EXTENDED SELECT MAX(numreponse) FROM t1 WHERE numeropost='1';
EXPLAIN EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT MAX(numreponse) FROM t1 WHERE numeropost='1');
@@ -294,7 +294,7 @@ insert into t2 values (1, 21),(2, 22),(3, 23);
select * from t1;
-- error 1093
update t1 set b= (select b from t1);
--- error 1241
+-- error 1242
update t1 set b= (select b from t2);
update t1 set b= (select b from t2 where t1.a = t2.a);
select * from t1;
@@ -309,7 +309,7 @@ select * from t1;
select * from t1 where b = (select b from t2 where t1.a = t2.a);
-- error 1093
delete from t1 where b = (select b from t1);
--- error 1241
+-- error 1242
delete from t1 where b = (select b from t2);
delete from t1 where b = (select b from t2 where t1.a = t2.a);
select * from t1;
@@ -327,7 +327,7 @@ select * from t11;
select * from t12;
-- error 1093
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t12 where t11.a = t12.a);
--- error 1241
+-- error 1242
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t2);
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t2 where t11.a = t2.a);
select * from t11;
@@ -342,7 +342,7 @@ insert into t2 values (1);
insert into t3 values (1),(2);
-- error 1093
INSERT INTO t1 (x) VALUES ((SELECT x FROM t1));
--- error 1241
+-- error 1242
INSERT INTO t1 (x) VALUES ((SELECT b FROM t3));
INSERT INTO t1 (x) VALUES ((SELECT a FROM t2));
select * from t1;
@@ -373,7 +373,7 @@ insert into t3 values (1),(2);
select * from t1;
-- error 1093
replace into t1 (x, y) VALUES ((SELECT x FROM t1), (SELECT a+1 FROM t2));
--- error 1241
+-- error 1242
replace into t1 (x, y) VALUES ((SELECT a FROM t3), (SELECT a+1 FROM t2));
replace into t1 (x, y) VALUES ((SELECT a FROM t2), (SELECT a+1 FROM t2));
select * from t1;
@@ -409,7 +409,7 @@ INSERT INTO t2 VALUES ((SELECT id FROM t2));
SELECT * FROM t2;
CREATE TABLE t1 (id int(11) default NULL, KEY id (id)) ENGINE=MyISAM CHARSET=latin1;
INSERT INTO t1 values (1),(1);
--- error 1241
+-- error 1242
UPDATE t2 SET id=(SELECT * FROM t1);
drop table t2, t1;
@@ -867,9 +867,9 @@ DROP TABLE t1, t2;
CREATE TABLE t1 (s1 CHAR(5) COLLATE latin1_german1_ci,
s2 CHAR(5) COLLATE latin1_swedish_ci);
INSERT INTO t1 VALUES ('z','?');
--- error 1266
+-- error 1267
select * from t1 where s1 > (select max(s2) from t1);
--- error 1266
+-- error 1267
select * from t1 where s1 > any (select max(s2) from t1);
drop table t1;
@@ -887,7 +887,7 @@ drop table t1, t2;
# row union
#
create table t1 (s1 char(5));
--- error 1240
+-- error 1241
select (select 'a','b' from t1 union select 'a','b' from t1) from t1;
insert into t1 values ('tttt');
select * from t1 where ('a','b')=(select 'a','b' from t1 union select 'a','b' from t1);
@@ -952,7 +952,7 @@ CREATE TABLE t1 (id int(11) default NULL) ENGINE=MyISAM CHARSET=latin1;
INSERT INTO t1 VALUES (1),(5);
CREATE TABLE t2 (id int(11) default NULL) ENGINE=MyISAM CHARSET=latin1;
INSERT INTO t2 VALUES (2),(6);
--- error 1240
+-- error 1241
select * from t1 where (1,2,6) in (select * from t2);
DROP TABLE t1,t2;
@@ -962,7 +962,7 @@ DROP TABLE t1,t2;
create table t1 (s1 int);
insert into t1 values (1);
insert into t1 values (2);
--- error 1241
+-- error 1242
set sort_buffer_size = (select s1 from t1);
do (select * from t1);
drop table t1;
diff --git a/mysql-test/t/subselect_innodb.test b/mysql-test/t/subselect_innodb.test
index 8e8d41f7653..47642832158 100644
--- a/mysql-test/t/subselect_innodb.test
+++ b/mysql-test/t/subselect_innodb.test
@@ -67,7 +67,7 @@ INSERT INTO t1 VALUES (1),(2),(3);
INSERT INTO t3 VALUES (1,1),(2,2),(3,3);
INSERT INTO t2 VALUES (1,1),(2,2),(3,3);
SELECT distinct p1.processor_id, (SELECT y.yod_id FROM t1 p2, t2 y WHERE p2.processor_id = p1.processor_id and p2.processor_id = y.processor_id) FROM t1 p1;
-drop table t1,t2,t3;
+drop table t2,t1,t3;
#
# innodb locking
diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test
index 8ce4aa997fc..55f53fb4c17 100644
--- a/mysql-test/t/union.test
+++ b/mysql-test/t/union.test
@@ -23,7 +23,7 @@ select 't1',b,count(*) from t1 group by b UNION select 't2',b,count(*) from t2 g
(select a,b from t1 limit 2) union all (select a,b from t2 order by a) limit 4;
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1);
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by b desc;
---error 1249
+--error 1250
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by t1.b;
explain extended (select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by b desc;
(select sql_calc_found_rows a,b from t1 limit 2) union all (select a,b from t2 order by a) limit 2;
@@ -420,7 +420,7 @@ create table t1 select 1 union select -1;
select * from t1;
show create table t1;
drop table t1;
--- error 1266
+-- error 1267
create table t1 select _latin1"test" union select _latin2"testt" ;
create table t1 select _latin2"test" union select _latin2"testt" ;
show create table t1;
diff --git a/mysql-test/t/user_var.test b/mysql-test/t/user_var.test
index 32ed6fe33db..a28b327cf58 100644
--- a/mysql-test/t/user_var.test
+++ b/mysql-test/t/user_var.test
@@ -84,7 +84,7 @@ select @a=_latin2'TEST' collate latin2_bin;
set @a=_latin2'test' collate latin2_general_ci;
select charset(@a),collation(@a),coercibility(@a);
select @a=_latin2'TEST';
---error 1266
+--error 1267
select @a=_latin2'TEST' collate latin2_bin;
#
@@ -97,5 +97,5 @@ select collation(@a:=_latin2'test' collate latin2_bin);
select coercibility(@a:=_latin2'test' collate latin2_bin);
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
select charset(@a),collation(@a),coercibility(@a);
---error 1266
+--error 1267
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test
index 2fec3535739..05ac0427a92 100644
--- a/mysql-test/t/variables.test
+++ b/mysql-test/t/variables.test
@@ -124,7 +124,7 @@ set big_tables="OFFF";
set unknown_variable=1;
--error 1232
set max_join_size="hello";
---error 1285
+--error 1286
set storage_engine=UNKNOWN_TABLE_TYPE;
--error 1231
set storage_engine=INNODB, big_tables=2;
@@ -135,7 +135,7 @@ set SESSION query_cache_size=10000;
set GLOBAL storage_engine=DEFAULT;
--error 1115
set character_set_client=UNKNOWN_CHARACTER_SET;
---error 1272
+--error 1273
set collation_connection=UNKNOWN_COLLATION;
--error 1228
set global autocommit=1;
@@ -285,4 +285,3 @@ select @@global.max_user_connections,@@local.max_join_size;
set @a=1, @b=2;
set @a=@b, @b=@a;
select @a, @b;
-
diff --git a/mysys/my_handler.c b/mysys/my_handler.c
index 6ee6167d3c1..190c279aadf 100644
--- a/mysys/my_handler.c
+++ b/mysys/my_handler.c
@@ -9,7 +9,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
-
+
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
@@ -184,12 +184,14 @@ int ha_key_cmp(register HA_KEYSEG *keyseg, register uchar *a,
break;
case HA_KEYTYPE_VARTEXT:
{
- int a_length,b_length,pack_length;
+ int a_length,full_a_length,b_length,full_b_length,pack_length;
get_key_length(a_length,a);
get_key_pack_length(b_length,pack_length,b);
+ full_a_length= a_length;
+ full_b_length= b_length;
next_key_length=key_length-b_length-pack_length;
- if (!(nextflag & (SEARCH_PREFIX | SEARCH_UPDATE)))
+ if ((nextflag & (SEARCH_FIND | SEARCH_UPDATE)) == SEARCH_FIND)
{
while (a_length && a[a_length-1] == ' ')
a_length--;
@@ -202,8 +204,8 @@ int ha_key_cmp(register HA_KEYSEG *keyseg, register uchar *a,
(my_bool) ((nextflag & SEARCH_PREFIX) &&
next_key_length <= 0))))
return ((keyseg->flag & HA_REVERSE_SORT) ? -flag : flag);
- a+=a_length;
- b+=b_length;
+ a+= full_a_length;
+ b+= full_b_length;
break;
}
break;
@@ -308,7 +310,7 @@ int ha_key_cmp(register HA_KEYSEG *keyseg, register uchar *a,
if (keyseg->flag & HA_REVERSE_SORT)
{
- swap(uchar*,a,b);
+ swap(uchar*,a,b);
swap_flag=1; /* Remember swap of a & b */
end= a+ (int) (end-b);
}
diff --git a/sql/ha_heap.cc b/sql/ha_heap.cc
index 656224d4a7a..807b6e35a29 100644
--- a/sql/ha_heap.cc
+++ b/sql/ha_heap.cc
@@ -38,7 +38,10 @@ int ha_heap::open(const char *name, int mode, uint test_if_locked)
HA_CREATE_INFO create_info;
bzero(&create_info, sizeof(create_info));
if (!create(name, table, &create_info))
+ {
file= heap_open(name, mode);
+ implicit_emptied= 1;
+ }
}
ref_length= sizeof(HEAP_PTR);
return (file ? 0 : 1);
@@ -174,7 +177,6 @@ void ha_heap::info(uint flag)
index_file_length=info.index_length;
max_data_file_length= info.max_records* info.reclength;
delete_length= info.deleted * info.reclength;
- implicit_emptied= info.implicit_emptied;
if (flag & HA_STATUS_AUTO)
auto_increment_value= info.auto_increment;
}
diff --git a/sql/handler.cc b/sql/handler.cc
index afeec26f034..5aa3967edb6 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -657,7 +657,7 @@ int ha_delete_table(enum db_type table_type, const char *path)
{
/* Ensure that table handler get path in lower case */
strmov(tmp_path, path);
- casedn_str(tmp_path);
+ my_casedn_str(system_charset_info, tmp_path);
path= tmp_path;
}
int error=file->delete_table(path);
@@ -1159,7 +1159,7 @@ int ha_create_table(const char *name, HA_CREATE_INFO *create_info,
{
/* Ensure that handler gets name in lower case */
strmov(name_buff, name);
- casedn_str(name_buff);
+ my_casedn_str(system_charset_info, name_buff);
name= name_buff;
}
diff --git a/sql/item.cc b/sql/item.cc
index 4d06d0d7765..b9a6a164a86 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -175,12 +175,13 @@ bool Item::eq(const Item *item, bool binary_cmp) const
!my_strcasecmp(system_charset_info,name,item->name);
}
+
bool Item_string::eq(const Item *item, bool binary_cmp) const
{
if (type() == item->type())
{
if (binary_cmp)
- return !sortcmp(&str_value, &item->str_value, &my_charset_bin);
+ return !stringcmp(&str_value, &item->str_value);
return !sortcmp(&str_value, &item->str_value, collation.collation);
}
return 0;
@@ -1823,7 +1824,7 @@ bool field_is_equal_to_item(Field *field,Item *item)
if (item->null_value)
return 1; // This must be true
field->val_str(&field_tmp,&field_tmp);
- return !sortcmp(&field_tmp,item_result,&my_charset_bin);
+ return !stringcmp(&field_tmp,item_result);
}
if (res_type == INT_RESULT)
return 1; // Both where of type int
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 4046a4d6414..1bba934cf8f 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -293,6 +293,17 @@ int Arg_comparator::set_compare_func(Item_bool_func2 *item, Item_result type)
my_coll_agg_error((*a)->collation, (*b)->collation, owner->func_name());
return 1;
}
+ if (my_binary_compare(cmp_collation.collation))
+ {
+ /*
+ We are using binary collation, change to compare byte by byte,
+ without removing end space
+ */
+ if (func == &Arg_comparator::compare_string)
+ func= &Arg_comparator::compare_binary_string;
+ else if (func == &Arg_comparator::compare_e_string)
+ func= &Arg_comparator::compare_e_binary_string;
+ }
}
return 0;
}
@@ -313,6 +324,39 @@ int Arg_comparator::compare_string()
return -1;
}
+
+/*
+ Compare strings byte by byte. End spaces are also compared.
+
+ RETURN
+ < 0 *a < *b
+ 0 *b == *b
+ > 0 *a > *b
+*/
+
+int Arg_comparator::compare_binary_string()
+{
+ String *res1,*res2;
+ if ((res1= (*a)->val_str(&owner->tmp_value1)))
+ {
+ if ((res2= (*b)->val_str(&owner->tmp_value2)))
+ {
+ owner->null_value= 0;
+ uint res1_length= res1->length();
+ uint res2_length= res2->length();
+ int cmp= memcmp(res1->ptr(), res2->ptr(), min(res1_length,res2_length));
+ return cmp ? cmp : (int) (res1_length - res2_length);
+ }
+ }
+ owner->null_value= 1;
+ return -1;
+}
+
+
+/*
+ Compare strings, but take into account that NULL == NULL
+*/
+
int Arg_comparator::compare_e_string()
{
String *res1,*res2;
@@ -324,6 +368,17 @@ int Arg_comparator::compare_e_string()
}
+int Arg_comparator::compare_e_binary_string()
+{
+ String *res1,*res2;
+ res1= (*a)->val_str(&owner->tmp_value1);
+ res2= (*b)->val_str(&owner->tmp_value2);
+ if (!res1 || !res2)
+ return test(res1 == res2);
+ return test(stringcmp(res1, res2) == 0);
+}
+
+
int Arg_comparator::compare_real()
{
double val1= (*a)->val();
@@ -2132,7 +2187,7 @@ longlong Item_func_regex::val_int()
null_value=1;
return 0;
}
- if (!regex_compiled || sortcmp(res2,&prev_regexp,&my_charset_bin))
+ if (!regex_compiled || stringcmp(res2,&prev_regexp))
{
prev_regexp.copy(*res2);
if (regex_compiled)
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index 4e9628c8db9..3c70a50502a 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -63,10 +63,12 @@ public:
inline int compare() { return (this->*func)(); }
int compare_string(); // compare args[0] & args[1]
+ int compare_binary_string(); // compare args[0] & args[1]
int compare_real(); // compare args[0] & args[1]
int compare_int(); // compare args[0] & args[1]
int compare_row(); // compare args[0] & args[1]
int compare_e_string(); // compare args[0] & args[1]
+ int compare_e_binary_string(); // compare args[0] & args[1]
int compare_e_real(); // compare args[0] & args[1]
int compare_e_int(); // compare args[0] & args[1]
int compare_e_row(); // compare args[0] & args[1]
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 84757a0a1f2..f64f740da30 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2003 MySQL AB
+/* Copyright (C) 2000-2004 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
@@ -290,6 +290,8 @@ Log_event::Log_event(const char* buf, bool old_format)
int Log_event::exec_event(struct st_relay_log_info* rli)
{
+ DBUG_ENTER("Log_event::exec_event");
+
/*
rli is null when (as far as I (Guilhem) know)
the caller is
@@ -342,7 +344,7 @@ int Log_event::exec_event(struct st_relay_log_info* rli)
rli->last_master_timestamp= when;
}
}
- return 0;
+ DBUG_RETURN(0);
}
@@ -592,11 +594,13 @@ Error in Log_event::read_log_event(): '%s', data_len: %d, event_type: %d",
Log_event* Log_event::read_log_event(const char* buf, int event_len,
const char **error, bool old_format)
{
+ DBUG_ENTER("Log_event::read_log_event");
+
if (event_len < EVENT_LEN_OFFSET ||
(uint) event_len != uint4korr(buf+EVENT_LEN_OFFSET))
{
*error="Sanity check failed"; // Needed to free buffer
- return NULL; // general sanity check - will fail on a partial read
+ DBUG_RETURN(NULL); // general sanity check - will fail on a partial read
}
Log_event* ev = NULL;
@@ -658,16 +662,16 @@ Log_event* Log_event::read_log_event(const char* buf, int event_len,
if (!force_opt)
{
*error= "Found invalid event in binary log";
- return 0;
+ DBUG_RETURN(0);
}
ev= new Unknown_log_event(buf, old_format);
#else
*error= "Found invalid event in binary log";
- return 0;
+ DBUG_RETURN(0);
#endif
}
ev->cached_event_len = event_len;
- return ev;
+ DBUG_RETURN(ev);
}
#ifdef MYSQL_CLIENT
@@ -1249,38 +1253,21 @@ void Load_log_event::pack_info(Protocol *protocol)
memcpy(pos, table_name, table_name_len);
pos+= table_name_len;
- if (sql_ex.field_term_len)
- {
- pos= strmov(pos, " FIELDS TERMINATED BY ");
- pos= pretty_print_str(pos, sql_ex.field_term, sql_ex.field_term_len);
- }
-
- if (sql_ex.enclosed_len)
- {
- if (sql_ex.opt_flags & OPT_ENCLOSED_FLAG)
- pos= strmov(pos, " OPTIONALLY ");
- pos= strmov(pos, " ENCLOSED BY ");
- pos= pretty_print_str(pos, sql_ex.enclosed, sql_ex.enclosed_len);
- }
+ /* We have to create all optinal fields as the default is not empty */
+ pos= strmov(pos, " FIELDS TERMINATED BY ");
+ pos= pretty_print_str(pos, sql_ex.field_term, sql_ex.field_term_len);
+ if (sql_ex.opt_flags & OPT_ENCLOSED_FLAG)
+ pos= strmov(pos, " OPTIONALLY ");
+ pos= strmov(pos, " ENCLOSED BY ");
+ pos= pretty_print_str(pos, sql_ex.enclosed, sql_ex.enclosed_len);
- if (sql_ex.escaped_len)
- {
- pos= strmov(pos, " ESCAPED BY ");
- pos= pretty_print_str(pos, sql_ex.escaped, sql_ex.escaped_len);
- }
-
- bool line_lexem_added= false;
- if (sql_ex.line_term_len)
- {
- pos= strmov(pos, " LINES TERMINATED BY ");
- pos= pretty_print_str(pos, sql_ex.line_term, sql_ex.line_term_len);
- line_lexem_added= true;
- }
+ pos= strmov(pos, " ESCAPED BY ");
+ pos= pretty_print_str(pos, sql_ex.escaped, sql_ex.escaped_len);
+ pos= strmov(pos, " LINES TERMINATED BY ");
+ pos= pretty_print_str(pos, sql_ex.line_term, sql_ex.line_term_len);
if (sql_ex.line_start_len)
{
- if (!line_lexem_added)
- pos= strmov(pos," LINES");
pos= strmov(pos, " STARTING BY ");
pos= pretty_print_str(pos, sql_ex.line_start, sql_ex.line_start_len);
}
@@ -1455,9 +1442,10 @@ Load_log_event::Load_log_event(const char *buf, int event_len,
field_lens(0), field_block_len(0),
table_name(0), db(0), fname(0), local_fname(FALSE)
{
- if (!event_len) // derived class, will call copy_log_event() itself
- return;
- copy_log_event(buf, event_len, old_format);
+ DBUG_ENTER("Load_log_event");
+ if (event_len) // derived class, will call copy_log_event() itself
+ copy_log_event(buf, event_len, old_format);
+ DBUG_VOID_RETURN;
}
@@ -1472,6 +1460,8 @@ int Load_log_event::copy_log_event(const char *buf, ulong event_len,
char* buf_end = (char*)buf + event_len;
uint header_len= old_format ? OLD_HEADER_LEN : LOG_EVENT_HEADER_LEN;
const char* data_head = buf + header_len;
+ DBUG_ENTER("Load_log_event::copy_log_event");
+
slave_proxy_id= thread_id= uint4korr(data_head + L_THREAD_ID_OFFSET);
exec_time = uint4korr(data_head + L_EXEC_TIME_OFFSET);
skip_lines = uint4korr(data_head + L_SKIP_LINES_OFFSET);
@@ -1484,19 +1474,19 @@ int Load_log_event::copy_log_event(const char *buf, ulong event_len,
get_data_body_offset());
if ((int) event_len < body_offset)
- return 1;
+ DBUG_RETURN(1);
/*
Sql_ex.init() on success returns the pointer to the first byte after
the sql_ex structure, which is the start of field lengths array.
*/
if (!(field_lens=(uchar*)sql_ex.init((char*)buf + body_offset,
- buf_end,
- buf[EVENT_TYPE_OFFSET] != LOAD_EVENT)))
- return 1;
-
+ buf_end,
+ buf[EVENT_TYPE_OFFSET] != LOAD_EVENT)))
+ DBUG_RETURN(1);
+
data_len = event_len - body_offset;
if (num_fields > data_len) // simple sanity check against corruption
- return 1;
+ DBUG_RETURN(1);
for (uint i = 0; i < num_fields; i++)
field_block_len += (uint)field_lens[i] + 1;
@@ -1506,7 +1496,7 @@ int Load_log_event::copy_log_event(const char *buf, ulong event_len,
fname = db + db_len + 1;
fname_len = strlen(fname);
// null termination is accomplished by the caller doing buf[event_len]=0
- return 0;
+ DBUG_RETURN(0);
}
@@ -1524,6 +1514,7 @@ void Load_log_event::print(FILE* file, bool short_form, char* last_db)
void Load_log_event::print(FILE* file, bool short_form, char* last_db,
bool commented)
{
+ DBUG_ENTER("Load_log_event::print");
if (!short_form)
{
print_header(file);
@@ -1555,42 +1546,26 @@ void Load_log_event::print(FILE* file, bool short_form, char* last_db,
fprintf(file," IGNORE ");
fprintf(file, "INTO TABLE %s ", table_name);
- if (sql_ex.field_term)
- {
- fprintf(file, " FIELDS TERMINATED BY ");
- pretty_print_str(file, sql_ex.field_term, sql_ex.field_term_len);
- }
+ fprintf(file, " FIELDS TERMINATED BY ");
+ pretty_print_str(file, sql_ex.field_term, sql_ex.field_term_len);
- if (sql_ex.enclosed)
- {
- if (sql_ex.opt_flags & OPT_ENCLOSED_FLAG)
- fprintf(file," OPTIONALLY ");
- fprintf(file, " ENCLOSED BY ");
- pretty_print_str(file, sql_ex.enclosed, sql_ex.enclosed_len);
- }
+ if (sql_ex.opt_flags & OPT_ENCLOSED_FLAG)
+ fprintf(file," OPTIONALLY ");
+ fprintf(file, " ENCLOSED BY ");
+ pretty_print_str(file, sql_ex.enclosed, sql_ex.enclosed_len);
- if (sql_ex.escaped)
- {
- fprintf(file, " ESCAPED BY ");
- pretty_print_str(file, sql_ex.escaped, sql_ex.escaped_len);
- }
+ fprintf(file, " ESCAPED BY ");
+ pretty_print_str(file, sql_ex.escaped, sql_ex.escaped_len);
- bool line_lexem_added= false;
- if (sql_ex.line_term)
- {
- fprintf(file," LINES TERMINATED BY ");
- pretty_print_str(file, sql_ex.line_term, sql_ex.line_term_len);
- line_lexem_added= true;
- }
+ fprintf(file," LINES TERMINATED BY ");
+ pretty_print_str(file, sql_ex.line_term, sql_ex.line_term_len);
+
if (sql_ex.line_start)
{
- if (!line_lexem_added)
- fprintf(file," LINES");
fprintf(file," STARTING BY ");
pretty_print_str(file, sql_ex.line_start, sql_ex.line_start_len);
}
-
if ((long) skip_lines > 0)
fprintf(file, " IGNORE %ld LINES", (long) skip_lines);
@@ -1611,6 +1586,7 @@ void Load_log_event::print(FILE* file, bool short_form, char* last_db,
}
fprintf(file, ";\n");
+ DBUG_VOID_RETURN;
}
#endif /* MYSQL_CLIENT */
@@ -1877,8 +1853,11 @@ Rotate_log_event::Rotate_log_event(const char* buf, int event_len,
// The caller will ensure that event_len is what we have at EVENT_LEN_OFFSET
int header_size = (old_format) ? OLD_HEADER_LEN : LOG_EVENT_HEADER_LEN;
uint ident_offset;
+ DBUG_ENTER("Rotate_log_event");
+
if (event_len < header_size)
- return;
+ DBUG_VOID_RETURN;
+
buf += header_size;
if (old_format)
{
@@ -1897,8 +1876,9 @@ Rotate_log_event::Rotate_log_event(const char* buf, int event_len,
ident_offset,
(uint) ident_len,
MYF(MY_WME))))
- return;
+ DBUG_VOID_RETURN;
alloced = 1;
+ DBUG_VOID_RETURN;
}
@@ -2593,7 +2573,9 @@ Create_file_log_event(THD* thd_arg, sql_exchange* ex,
fake_base(0),block(block_arg),block_len(block_len_arg),
file_id(thd_arg->file_id = mysql_bin_log.next_file_id())
{
+ DBUG_ENTER("Create_file_log_event");
sql_ex.force_new_format();
+ DBUG_VOID_RETURN;
}
#endif /* !MYSQL_CLIENT */
@@ -2650,8 +2632,10 @@ Create_file_log_event::Create_file_log_event(const char* buf, int len,
:Load_log_event(buf,0,old_format),fake_base(0),block(0),inited_from_old(0)
{
int block_offset;
+ DBUG_ENTER("Create_file_log_event");
+
if (copy_log_event(buf,len,old_format))
- return;
+ DBUG_VOID_RETURN;
if (!old_format)
{
file_id = uint4korr(buf + LOG_EVENT_HEADER_LEN +
@@ -2669,6 +2653,7 @@ Create_file_log_event::Create_file_log_event(const char* buf, int len,
sql_ex.force_new_format();
inited_from_old = 1;
}
+ DBUG_VOID_RETURN;
}
@@ -2821,11 +2806,13 @@ Append_block_log_event::Append_block_log_event(THD* thd_arg, const char* db_arg,
Append_block_log_event::Append_block_log_event(const char* buf, int len)
:Log_event(buf, 0),block(0)
{
+ DBUG_ENTER("Append_block_log_event");
if ((uint)len < APPEND_BLOCK_EVENT_OVERHEAD)
- return;
+ DBUG_VOID_RETURN;
file_id = uint4korr(buf + LOG_EVENT_HEADER_LEN + AB_FILE_ID_OFFSET);
block = (char*)buf + APPEND_BLOCK_EVENT_OVERHEAD;
block_len = len - APPEND_BLOCK_EVENT_OVERHEAD;
+ DBUG_VOID_RETURN;
}
@@ -2888,6 +2875,7 @@ int Append_block_log_event::exec_event(struct st_relay_log_info* rli)
char *p= slave_load_file_stem(fname, file_id, server_id);
int fd;
int error = 1;
+ DBUG_ENTER("Append_block_log_event::exec_event");
memcpy(p, ".data", 6);
if ((fd = my_open(fname, O_WRONLY|O_APPEND|O_BINARY, MYF(MY_WME))) < 0)
@@ -2905,7 +2893,7 @@ int Append_block_log_event::exec_event(struct st_relay_log_info* rli)
err:
if (fd >= 0)
my_close(fd, MYF(0));
- return error ? error : Log_event::exec_event(rli);
+ DBUG_RETURN(error ? error : Log_event::exec_event(rli));
}
#endif
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index d1f42ac865e..1dbe883aef4 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -1064,8 +1064,8 @@ get_mm_leaf(PARAM *param, COND *conf_func, Field *field, KEY_PART *key_part,
like_error= my_like_range(field->charset(),
res->ptr(), res->length(),
- ((Item_func_like*)(param->cond))->escape
- wild_prefix, wild_one, wild_many,
+ ((Item_func_like*)(param->cond))->escape,
+ wild_one, wild_many,
field_length,
min_str+offset, max_str+offset,
&min_length, &max_length);
diff --git a/sql/sql_db.cc b/sql/sql_db.cc
index 7a1fd091e7c..0323e90a166 100644
--- a/sql/sql_db.cc
+++ b/sql/sql_db.cc
@@ -363,7 +363,7 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
{
/* Convert database to lower case */
strmov(tmp_db, db);
- casedn_str(tmp_db);
+ my_casedn_str(system_charset_info, tmp_db);
db= tmp_db;
}
diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc
index 6db97ab3c41..d0f241b3291 100644
--- a/sql/sql_handler.cc
+++ b/sql/sql_handler.cc
@@ -288,12 +288,12 @@ static TABLE **find_table_ptr_by_name(THD *thd, const char *db,
TABLE **ptr;
DBUG_ASSERT(db);
- dblen= *db ? strlen(db)+1 : 0;
+ dblen= strlen(db);
ptr= &(thd->handler_tables);
for (TABLE *table= *ptr; table ; table= *ptr)
{
- if ((!dblen || !memcmp(table->table_cache_key, db, dblen)) &&
+ if ((db == any_db || !memcmp(table->table_cache_key, db, dblen)) &&
!my_strcasecmp(system_charset_info,
(is_alias ? table->table_name : table->real_name),
table_name))
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index f7bbfdae2b3..dd68337d5dd 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -1451,7 +1451,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
my_casedn_str(files_charset_info, table_list.real_name);
remove_escape(table_list.real_name); // This can't have wildcards
- if (check_access(thd,SELECT_ACL,table_list.db,&table_list.grant.privilege))
+ if (check_access(thd,SELECT_ACL,table_list.db,&table_list.grant.privilege,
+ 0, 0))
break;
if (grant_option && check_grant(thd,SELECT_ACL,&table_list,2,0))
break;
@@ -1771,7 +1772,7 @@ mysql_execute_command(THD *thd)
*/
if (table_rules_on && tables && !tables_ok(thd,tables) &&
((lex->sql_command != SQLCOM_DELETE_MULTI) ||
- !tables_ok(thd,(TABLE_LIST *)thd->lex.auxilliary_table_list.first)))
+ !tables_ok(thd,(TABLE_LIST *)thd->lex->auxilliary_table_list.first)))
{
/* we warn the slave SQL thread */
my_error(ER_SLAVE_IGNORED_TABLE, MYF(0));
@@ -2103,7 +2104,7 @@ mysql_execute_command(THD *thd)
ulong want_priv= ((lex->create_info.options & HA_LEX_CREATE_TMP_TABLE) ?
CREATE_TMP_ACL : CREATE_ACL);
- lex->create_info.alias= tables->alias;
+ lex->create_info.alias= create_table->alias;
if (check_access(thd, want_priv, create_table->db,
&create_table->grant.privilege, 0, 0) ||
check_merge_table_access(thd, create_table->db,
@@ -2872,7 +2873,7 @@ mysql_execute_command(THD *thd)
remove_escape(db); // Fix escaped '_'
remove_escape(tables->real_name);
if (check_access(thd,SELECT_ACL | EXTRA_ACL,db,
- &tables->grant.privilege))
+ &tables->grant.privilege, 0, 0))
goto error; /* purecov: inspected */
if (grant_option && check_grant(thd,SELECT_ACL,tables,2,0))
goto error;
@@ -2977,7 +2978,7 @@ mysql_execute_command(THD *thd)
if (check_access(thd,CREATE_ACL,lex->name,0,1,0))
break;
res= mysql_create_db(thd,(lower_case_table_names == 2 ? alias : lex->name),
- lex->create_info.options,0);
+ &lex->create_info, 0);
break;
}
case SQLCOM_DROP_DB:
@@ -3393,7 +3394,7 @@ static int check_one_table_access(THD *thd, ulong privilege,
if (subselects_tables)
{
tables->next= subselects_tables;
- if ((*res= check_table_access(thd, SELECT_ACL, subselects_tables,0)))
+ if ((check_table_access(thd, SELECT_ACL, subselects_tables,0)))
return 1;
}
return 0;
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 9cb8bb7b768..592820e6e19 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -2864,7 +2864,7 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count,
If quick_select was used on a part of this key, we know
the maximum number of rows that the key can match.
*/
- if (table->quick_keys & ((key_map) 1 << key) &&
+ if (table->quick_keys.is_set(key) &&
table->quick_key_parts[key] <= max_key_part &&
records > (double) table->quick_rows[key])
tmp= records= (double) table->quick_rows[key];
@@ -6717,8 +6717,11 @@ static bool test_if_ref(Item_field *left_item,Item *right_item)
/*
We can remove binary fields and numerical fields except float,
as float comparison isn't 100 % secure
+ We have to keep binary strings to be able to check for end spaces
*/
if (field->binary() &&
+ field->real_type() != FIELD_TYPE_STRING &&
+ field->real_type() != FIELD_TYPE_VAR_STRING &&
(field->type() != FIELD_TYPE_FLOAT || field->decimals() == 0))
{
return !store_val_in_field(field,right_item);
@@ -7931,6 +7934,29 @@ int setup_order(THD *thd, Item **ref_pointer_array, TABLE_LIST *tables,
}
+/*
+ Intitialize the GROUP BY list.
+
+ SYNOPSIS
+ setup_group()
+ thd Thread handler
+ ref_pointer_array We store references to all fields that was not in
+ 'fields' here.
+ fields All fields in the select part. Any item in 'order'
+ that is part of these list is replaced by a pointer
+ to this fields.
+ all_fields Total list of all unique fields used by the select.
+ All items in 'order' that was not part of fields will
+ be added first to this list.
+ order The fields we should do GROUP BY on.
+ hidden_group_fields Pointer to flag that is set to 1 if we added any fields
+ to all_fields.
+
+ RETURN
+ 0 ok
+ 1 error (probably out of memory)
+*/
+
int
setup_group(THD *thd, Item **ref_pointer_array, TABLE_LIST *tables,
List<Item> &fields, List<Item> &all_fields, ORDER *order,
diff --git a/sql/sql_string.cc b/sql/sql_string.cc
index 422b1ec3b4b..83a048297af 100644
--- a/sql/sql_string.cc
+++ b/sql/sql_string.cc
@@ -699,11 +699,56 @@ void String::qs_append(const char &c)
}
-int sortcmp(const String *x,const String *y, CHARSET_INFO *cs)
+/*
+ Compare strings according to collation, without end space.
+
+ SYNOPSIS
+ sortcmp()
+ s First string
+ t Second string
+ cs Collation
+
+ NOTE:
+ Normally this is case sensitive comparison
+
+ RETURN
+ < 0 s < t
+ 0 s == t
+ > 0 s > t
+*/
+
+
+int sortcmp(const String *s,const String *t, CHARSET_INFO *cs)
{
return cs->coll->strnncollsp(cs,
- (unsigned char *) x->ptr(),x->length(),
- (unsigned char *) y->ptr(),y->length());
+ (unsigned char *) s->ptr(),s->length(),
+ (unsigned char *) t->ptr(),t->length());
+}
+
+
+/*
+ Compare strings byte by byte. End spaces are also compared.
+
+ SYNOPSIS
+ stringcmp()
+ s First string
+ t Second string
+
+ NOTE:
+ Strings are compared as a stream of unsigned chars
+
+ RETURN
+ < 0 s < t
+ 0 s == t
+ > 0 s > t
+*/
+
+
+int stringcmp(const String *s,const String *t)
+{
+ uint32 s_len=s->length(),t_len=t->length(),len=min(s_len,t_len);
+ int cmp= memcmp(s->ptr(), t->ptr(), len);
+ return (cmp) ? cmp : (int) (s_len - t_len);
}
diff --git a/sql/sql_string.h b/sql/sql_string.h
index 163156fdfe2..cdfb00276d4 100644
--- a/sql/sql_string.h
+++ b/sql/sql_string.h
@@ -221,6 +221,7 @@ public:
inline void caseup() { my_caseup(str_charset,Ptr,str_length); }
inline void casedn() { my_casedn(str_charset,Ptr,str_length); }
friend int sortcmp(const String *a,const String *b, CHARSET_INFO *cs);
+ friend int stringcmp(const String *a,const String *b);
friend String *copy_if_not_alloced(String *a,String *b,uint32 arg_length);
uint32 numchars();
int charpos(int i,uint32 offset=0);
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 922775083d5..12494703419 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -1152,11 +1152,11 @@ mysql_rename_table(enum db_type base,
{
/* Table handler expects to get all file names as lower case */
strmov(tmp_from, old_name);
- casedn_str(tmp_from);
+ my_casedn_str(system_charset_info, tmp_from);
old_name= tmp_from;
strmov(tmp_to, new_name);
- casedn_str(tmp_to);
+ my_casedn_str(system_charset_info, tmp_to);
new_name= tmp_to;
}
(void) sprintf(from,"%s/%s/%s",mysql_data_home,old_db,old_name);
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index 1e702a9517c..977dd2595de 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -439,7 +439,14 @@ int mysql_multi_update(THD *thd,
for (tl= table_list ; tl ; tl=tl->next)
{
TABLE *table= tl->table;
- table->grant.want_privilege= (UPDATE_ACL & ~table->grant.privilege);
+ /*
+ Update of derived tables is checked later
+ We don't check privileges here, becasue then we would get error
+ "UPDATE command denided .. for column N" instead of
+ "Target table ... is not updatable"
+ */
+ if (!tl->derived)
+ table->grant.want_privilege= (UPDATE_ACL & ~table->grant.privilege);
}
if (thd->lex->derived_tables)
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index bd51df8810c..7ef5d219f07 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -4626,8 +4626,8 @@ table_ident:
;
table_ident_ref:
- ident { LEX_STRING db={"",0}; $$=new Table_ident(db,$1,0); }
- | ident '.' ident { $$=new Table_ident($1,$3,0);}
+ ident { LEX_STRING db={(char*) any_db,3}; $$=new Table_ident(YYTHD, db,$1,0); }
+ | ident '.' ident { $$=new Table_ident(YYTHD, $1,$3,0);}
;
IDENT_sys:
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c
index 574156a99ed..1b0a235ed57 100644
--- a/strings/ctype-big5.c
+++ b/strings/ctype-big5.c
@@ -247,8 +247,8 @@ int my_strnncollsp_big5(CHARSET_INFO * cs,
const uchar *s, uint slen,
const uchar *t, uint tlen)
{
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
return my_strnncoll_big5(cs,s,slen,t,tlen);
}
@@ -343,10 +343,10 @@ static int my_strxfrm_big5(uchar * dest, const uchar * src, int len)
#define max_sort_char ((char) 255)
static my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr,uint ptr_length,
- int escape, int w_one, int w_many,
- uint res_length, char *min_str,char *max_str,
- uint *min_length,uint *max_length)
+ const char *ptr,uint ptr_length,
+ pbool escape, pbool w_one, pbool w_many,
+ uint res_length, char *min_str,char *max_str,
+ uint *min_length,uint *max_length)
{
const char *end=ptr+ptr_length;
char *min_org=min_str;
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index fc22938d46e..35382b05c88 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -67,6 +67,28 @@ static uchar bin_char_array[] =
};
+
+/*
+ Compare two strings. Result is sign(first_argument - second_argument)
+
+ SYNOPSIS
+ my_strnncoll_binary()
+ cs Chararacter set
+ s String to compare
+ slen Length of 's'
+ t String to compare
+ tlen Length of 't'
+
+ NOTE
+ This is used also when comparing with end space removal, as end space
+ is significant for binary strings
+
+ RETURN
+ < 0 s < t
+ 0 s == t
+ > 0 s > t
+*/
+
static int my_strnncoll_binary(CHARSET_INFO * cs __attribute__((unused)),
const uchar *s, uint slen,
const uchar *t, uint tlen)
@@ -75,59 +97,39 @@ static int my_strnncoll_binary(CHARSET_INFO * cs __attribute__((unused)),
return cmp ? cmp : (int) (slen - tlen);
}
-static int my_strnncollsp_binary(CHARSET_INFO * cs,
- const uchar *s, uint slen,
- const uchar *t, uint tlen)
-{
- int len, cmp;
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+/* This function is used for all conversion functions */
- len = ( slen > tlen ) ? tlen : slen;
-
- cmp= memcmp(s,t,len);
- return cmp ? cmp : (int) (slen - tlen);
-}
-
-static void my_caseup_str_bin(CHARSET_INFO *cs __attribute__((unused)),
- char *str __attribute__((unused)))
+static void my_case_str_bin(CHARSET_INFO *cs __attribute__((unused)),
+ char *str __attribute__((unused)))
{
}
-static void my_casedn_str_bin(CHARSET_INFO * cs __attribute__((unused)),
- char *str __attribute__((unused)))
+static void my_case_bin(CHARSET_INFO *cs __attribute__((unused)),
+ char *str __attribute__((unused)),
+ uint length __attribute__((unused)))
{
}
-static void my_caseup_bin(CHARSET_INFO * cs __attribute__((unused)),
- char *str __attribute__((unused)),
- uint length __attribute__((unused)))
-{
-}
-
-static void my_casedn_bin(CHARSET_INFO * cs __attribute__((unused)),
- char *str __attribute__((unused)),
- uint length __attribute__((unused)))
-{
-}
static int my_strcasecmp_bin(CHARSET_INFO * cs __attribute__((unused)),
- const char *s, const char *t)
+ const char *s, const char *t)
{
return strcmp(s,t);
}
+
int my_mbcharlen_8bit(CHARSET_INFO *cs __attribute__((unused)),
- uint c __attribute__((unused)))
+ uint c __attribute__((unused)))
{
return 1;
}
+
static int my_mb_wc_bin(CHARSET_INFO *cs __attribute__((unused)),
- my_wc_t *wc,
- const unsigned char *str,
- const unsigned char *end __attribute__((unused)))
+ my_wc_t *wc,
+ const unsigned char *str,
+ const unsigned char *end __attribute__((unused)))
{
if (str >= end)
return MY_CS_TOOFEW(0);
@@ -136,10 +138,11 @@ static int my_mb_wc_bin(CHARSET_INFO *cs __attribute__((unused)),
return 1;
}
+
static int my_wc_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
- my_wc_t wc,
- unsigned char *s,
- unsigned char *e __attribute__((unused)))
+ my_wc_t wc,
+ unsigned char *s,
+ unsigned char *e __attribute__((unused)))
{
if (s >= e)
return MY_CS_TOOSMALL;
@@ -169,12 +172,21 @@ void my_hash_sort_bin(CHARSET_INFO *cs __attribute__((unused)),
}
+/*
+ The following defines is here to keep the following code identical to
+ the one in ctype-simple.c
+*/
+
+#define likeconv(s,A) (A)
+#define INC_PTR(cs,A,B) (A)++
+
+
static int my_wildcmp_bin(CHARSET_INFO *cs,
const char *str,const char *str_end,
const char *wildstr,const char *wildend,
int escape, int w_one, int w_many)
{
- int result= -1; /* Not found, using wildcards */
+ int result= -1; /* Not found, using wildcards */
while (wildstr != wildend)
{
@@ -182,31 +194,26 @@ static int my_wildcmp_bin(CHARSET_INFO *cs,
{
if (*wildstr == escape && wildstr+1 != wildend)
wildstr++;
- if (str == str_end || *wildstr++ != *str++)
- {
- return(1);
- }
+ if (str == str_end || likeconv(cs,*wildstr++) != likeconv(cs,*str++))
+ return(1); /* No match */
if (wildstr == wildend)
- {
- return(str != str_end); /* Match if both are at end */
- }
- result=1; /* Found an anchor char */
+ return(str != str_end); /* Match if both are at end */
+ result=1; /* Found an anchor char */
}
if (*wildstr == w_one)
{
do
{
- if (str == str_end) /* Skip one char if possible */
+ if (str == str_end) /* Skip one char if possible */
return(result);
- str++;
- } while (*++wildstr == w_one && wildstr != wildend);
+ INC_PTR(cs,str,str_end);
+ } while (++wildstr < wildend && *wildstr == w_one);
if (wildstr == wildend)
break;
}
if (*wildstr == w_many)
- { /* Found w_many */
- char cmp;
-
+ { /* Found w_many */
+ uchar cmp;
wildstr++;
/* Remove any '%' and '_' from the wild search string */
for (; wildstr != wildend ; wildstr++)
@@ -216,40 +223,33 @@ static int my_wildcmp_bin(CHARSET_INFO *cs,
if (*wildstr == w_one)
{
if (str == str_end)
- {
return(-1);
- }
- str++;
+ INC_PTR(cs,str,str_end);
continue;
}
- break; /* Not a wild character */
+ break; /* Not a wild character */
}
if (wildstr == wildend)
- {
- return(0); /* Ok if w_many is last */
- }
+ return(0); /* match if w_many is last */
if (str == str_end)
- {
return(-1);
- }
if ((cmp= *wildstr) == escape && wildstr+1 != wildend)
cmp= *++wildstr;
- wildstr++; /* This is compared trough cmp */
+
+ INC_PTR(cs,wildstr,wildend); /* This is compared through cmp */
+ cmp=likeconv(cs,cmp);
do
{
- while (str != str_end && *str != cmp)
+ while (str != str_end && (uchar) likeconv(cs,*str) != cmp)
str++;
if (str++ == str_end)
- {
return(-1);
- }
{
- int tmp=my_wildcmp_bin(cs,str,str_end,wildstr,wildend,escape,w_one,w_many);
+ int tmp=my_wildcmp_bin(cs,str,str_end,wildstr,wildend,escape,w_one,
+ w_many);
if (tmp <= 0)
- {
return(tmp);
- }
}
} while (str != str_end && wildstr[0] != w_many);
return(-1);
@@ -258,6 +258,7 @@ static int my_wildcmp_bin(CHARSET_INFO *cs,
return(str != str_end ? 1 : 0);
}
+
static int my_strnxfrm_bin(CHARSET_INFO *cs __attribute__((unused)),
uchar * dest, uint len,
const uchar *src,
@@ -268,11 +269,12 @@ static int my_strnxfrm_bin(CHARSET_INFO *cs __attribute__((unused)),
return len;
}
+
static
uint my_instr_bin(CHARSET_INFO *cs __attribute__((unused)),
- const char *b, uint b_length,
- const char *s, uint s_length,
- my_match_t *match, uint nmatch)
+ const char *b, uint b_length,
+ const char *s, uint s_length,
+ my_match_t *match, uint nmatch)
{
register const uchar *str, *search, *end, *search_end;
@@ -332,7 +334,7 @@ skip:
MY_COLLATION_HANDLER my_collation_8bit_bin_handler =
{
my_strnncoll_binary,
- my_strnncollsp_binary,
+ my_strnncoll_binary,
my_strnxfrm_bin,
my_like_range_simple,
my_wildcmp_bin,
@@ -341,6 +343,7 @@ MY_COLLATION_HANDLER my_collation_8bit_bin_handler =
my_hash_sort_bin
};
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* ismbchar */
@@ -351,10 +354,10 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_lengthsp_8bit,
my_mb_wc_bin,
my_wc_mb_bin,
- my_caseup_str_bin,
- my_casedn_str_bin,
- my_caseup_bin,
- my_casedn_bin,
+ my_case_str_bin,
+ my_case_str_bin,
+ my_case_bin,
+ my_case_bin,
my_snprintf_8bit,
my_long10_to_str_8bit,
my_longlong10_to_str_8bit,
@@ -367,6 +370,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_scan_8bit
};
+
CHARSET_INFO my_charset_bin =
{
63,0,0, /* number */
diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c
index 1a07a5eba7e..8aea7358a9c 100644
--- a/strings/ctype-czech.c
+++ b/strings/ctype-czech.c
@@ -379,10 +379,11 @@ static int my_strnxfrm_czech(CHARSET_INFO *cs __attribute__((unused)),
#define EXAMPLE
static my_bool my_like_range_czech(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr,uint ptr_length,
- int escape, int w_one, int w_many,
- uint res_length, char *min_str,char *max_str,
- uint *min_length,uint *max_length)
+ const char *ptr,uint ptr_length,
+ pbool escape, pbool w_one, pbool w_many,
+ uint res_length, char *min_str,
+ char *max_str,
+ uint *min_length,uint *max_length)
{
#ifdef EXAMPLE
uchar value;
@@ -599,8 +600,8 @@ int my_strnncollsp_czech(CHARSET_INFO * cs,
const uchar *s, uint slen,
const uchar *t, uint tlen)
{
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
return my_strnncoll_czech(cs,s,slen,t,tlen);
}
diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c
index 9e71a18e531..2ebf145f840 100644
--- a/strings/ctype-gbk.c
+++ b/strings/ctype-gbk.c
@@ -2613,8 +2613,8 @@ int my_strnncollsp_gbk(CHARSET_INFO * cs,
const uchar *s, uint slen,
const uchar *t, uint tlen)
{
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
return my_strnncoll_gbk(cs,s,slen,t,tlen);
}
@@ -2663,7 +2663,7 @@ static int my_strnxfrm_gbk(CHARSET_INFO *cs __attribute__((unused)),
static my_bool my_like_range_gbk(CHARSET_INFO *cs __attribute__((unused)),
const char *ptr,uint ptr_length,
- int escape, int w_one, int w_many,
+ pbool escape, pbool w_one, pbool w_many,
uint res_length, char *min_str,char *max_str,
uint *min_length,uint *max_length)
{
diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c
index 933737b5f61..00d49f40ee4 100644
--- a/strings/ctype-latin1.c
+++ b/strings/ctype-latin1.c
@@ -360,8 +360,8 @@ static int my_strnncollsp_latin1_de(CHARSET_INFO *cs,
const uchar *s, uint slen,
const uchar *t, uint tlen)
{
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
return my_strnncoll_latin1_de(cs,s,slen,t,tlen);
}
diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c
index 377bf311d38..323662f023c 100644
--- a/strings/ctype-mb.c
+++ b/strings/ctype-mb.c
@@ -354,14 +354,14 @@ static int my_strnncoll_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
return cmp ? cmp : (int) (slen - tlen);
}
-static int my_strnncollsp_mb_bin(CHARSET_INFO * cs,
- const uchar *s, uint slen,
- const uchar *t, uint tlen)
+static int my_strnncollsp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
+ const uchar *s, uint slen,
+ const uchar *t, uint tlen)
{
int len, cmp;
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
len = ( slen > tlen ) ? tlen : slen;
diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c
index 233251e16a8..ed042c7de1a 100644
--- a/strings/ctype-simple.c
+++ b/strings/ctype-simple.c
@@ -66,8 +66,8 @@ int my_strnncollsp_simple(CHARSET_INFO * cs, const uchar *s, uint slen,
uchar *map= cs->sort_order;
int len;
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
len = ( slen > tlen ) ? tlen : slen;
@@ -186,9 +186,9 @@ void my_hash_sort_simple(CHARSET_INFO *cs,
}
-long my_strntol_8bit(CHARSET_INFO *cs,
- const char *nptr, uint l, int base,
- char **endptr, int *err)
+long my_strntol_8bit(CHARSET_INFO *cs,
+ const char *nptr, uint l, int base,
+ char **endptr, int *err)
{
int negative;
register ulong cutoff;
@@ -309,9 +309,9 @@ noconv:
}
-ulong my_strntoul_8bit(CHARSET_INFO *cs,
- const char *nptr, uint l, int base,
- char **endptr, int *err)
+ulong my_strntoul_8bit(CHARSET_INFO *cs,
+ const char *nptr, uint l, int base,
+ char **endptr, int *err)
{
int negative;
register ulong cutoff;
@@ -423,9 +423,9 @@ noconv:
}
-longlong my_strntoll_8bit(CHARSET_INFO *cs __attribute__((unused)),
- const char *nptr, uint l, int base,
- char **endptr,int *err)
+longlong my_strntoll_8bit(CHARSET_INFO *cs __attribute__((unused)),
+ const char *nptr, uint l, int base,
+ char **endptr,int *err)
{
int negative;
register ulonglong cutoff;
@@ -825,7 +825,7 @@ cnv:
#define likeconv(s,A) (uchar) (s)->sort_order[(uchar) (A)]
#endif
-#define INC_PTR(cs,A,B) A++
+#define INC_PTR(cs,A,B) (A)++
int my_wildcmp_8bit(CHARSET_INFO *cs,
@@ -833,7 +833,7 @@ int my_wildcmp_8bit(CHARSET_INFO *cs,
const char *wildstr,const char *wildend,
int escape, int w_one, int w_many)
{
- int result= -1; /* Not found, using wildcards */
+ int result= -1; /* Not found, using wildcards */
while (wildstr != wildend)
{
@@ -845,7 +845,7 @@ int my_wildcmp_8bit(CHARSET_INFO *cs,
if (str == str_end || likeconv(cs,*wildstr++) != likeconv(cs,*str++))
return(1); /* No match */
if (wildstr == wildend)
- return (str != str_end); /* Match if both are at end */
+ return(str != str_end); /* Match if both are at end */
result=1; /* Found an anchor char */
}
if (*wildstr == w_one)
@@ -853,7 +853,7 @@ int my_wildcmp_8bit(CHARSET_INFO *cs,
do
{
if (str == str_end) /* Skip one char if possible */
- return (result);
+ return(result);
INC_PTR(cs,str,str_end);
} while (++wildstr < wildend && *wildstr == w_one);
if (wildstr == wildend)
@@ -872,7 +872,7 @@ int my_wildcmp_8bit(CHARSET_INFO *cs,
if (*wildstr == w_one)
{
if (str == str_end)
- return (-1);
+ return(-1);
INC_PTR(cs,str,str_end);
continue;
}
@@ -881,28 +881,29 @@ int my_wildcmp_8bit(CHARSET_INFO *cs,
if (wildstr == wildend)
return(0); /* Ok if w_many is last */
if (str == str_end)
- return -1;
+ return(-1);
if ((cmp= *wildstr) == escape && wildstr+1 != wildend)
cmp= *++wildstr;
- INC_PTR(cs,wildstr,wildend); /* This is compared trough cmp */
- cmp=likeconv(cs,cmp);
+ INC_PTR(cs,wildstr,wildend); /* This is compared trough cmp */
+ cmp=likeconv(cs,cmp);
do
{
- while (str != str_end && likeconv(cs,*str) != cmp)
- str++;
- if (str++ == str_end) return (-1);
+ while (str != str_end && (uchar) likeconv(cs,*str) != cmp)
+ str++;
+ if (str++ == str_end) return(-1);
{
- int tmp=my_wildcmp_8bit(cs,str,str_end,wildstr,wildend,escape,w_one,w_many);
+ int tmp=my_wildcmp_8bit(cs,str,str_end,wildstr,wildend,escape,w_one,
+ w_many);
if (tmp <= 0)
- return (tmp);
+ return(tmp);
}
} while (str != str_end && wildstr[0] != w_many);
return(-1);
}
}
- return (str != str_end ? 1 : 0);
+ return(str != str_end ? 1 : 0);
}
@@ -924,11 +925,11 @@ int my_wildcmp_8bit(CHARSET_INFO *cs,
*/
my_bool my_like_range_simple(CHARSET_INFO *cs,
- const char *ptr,uint ptr_length,
- int escape, int w_one, int w_many,
- uint res_length,
- char *min_str,char *max_str,
- uint *min_length,uint *max_length)
+ const char *ptr,uint ptr_length,
+ pbool escape, pbool w_one, pbool w_many,
+ uint res_length,
+ char *min_str,char *max_str,
+ uint *min_length,uint *max_length)
{
const char *end=ptr+ptr_length;
char *min_org=min_str;
@@ -953,7 +954,7 @@ my_bool my_like_range_simple(CHARSET_INFO *cs,
*min_length= (uint) (min_str - min_org);
*max_length=res_length;
do {
- *min_str++ = ' '; /* Because if key compression */
+ *min_str++ = ' '; /* Because if key compression */
*max_str++ = cs->max_sort_char;
} while (min_str != min_end);
return 0;
@@ -970,7 +971,7 @@ my_bool my_like_range_simple(CHARSET_INFO *cs,
}
while (min_str != min_end)
- *min_str++ = *max_str++ = ' '; /* Because if key compression */
+ *min_str++ = *max_str++ = ' '; /* Because if key compression */
return 0;
}
diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c
index feff0fff227..09bd12dcdeb 100644
--- a/strings/ctype-sjis.c
+++ b/strings/ctype-sjis.c
@@ -227,8 +227,8 @@ int my_strnncollsp_sjis(CHARSET_INFO * cs,
const uchar *s, uint slen,
const uchar *t, uint tlen)
{
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
return my_strnncoll_sjis(cs,s,slen,t,tlen);
}
@@ -270,10 +270,10 @@ static int my_strnxfrm_sjis(CHARSET_INFO *cs __attribute__((unused)),
#define max_sort_char ((char) 255)
static my_bool my_like_range_sjis(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr,uint ptr_length,
- int escape, int w_one, int w_many,
- uint res_length, char *min_str,char *max_str,
- uint *min_length,uint *max_length)
+ const char *ptr,uint ptr_length,
+ pbool escape, pbool w_one, pbool w_many,
+ uint res_length, char *min_str,char *max_str,
+ uint *min_length,uint *max_length)
{
const char *end=ptr+ptr_length;
char *min_org=min_str;
diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c
index 9f4c33f86c1..b9856799add 100644
--- a/strings/ctype-tis620.c
+++ b/strings/ctype-tis620.c
@@ -466,7 +466,7 @@ uchar NEAR sort_order_tis620[]=
static uint thai2sortable(uchar *tstr, uint len)
{
uchar *p;
- int len, tlen;
+ int tlen;
uchar l2bias;
tlen= len;
@@ -572,7 +572,8 @@ int my_strnxfrm_tis620(CHARSET_INFO *cs __attribute__((unused)),
uchar * dest, uint len,
const uchar * src, uint srclen)
{
- len= (uint) (strmake(dest, src, min(len,srclen))- dest);
+ len= (uint) (strmake((char*) dest, (char*) src, min(len, srclen)) -
+ (char*) dest);
return (int) thai2sortable(dest, len);
}
@@ -610,7 +611,7 @@ int my_strcoll_tis620(const uchar * s1, const uchar * s2)
my_bool my_like_range_tis620(CHARSET_INFO *cs __attribute__((unused)),
const char *ptr, uint ptr_length,
- int escape, int w_one, int w_many,
+ pbool escape, pbool w_one, pbool w_many,
uint res_length, char *min_str, char *max_str,
uint *min_length, uint *max_length)
{
@@ -862,7 +863,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler =
my_like_range_tis620,
my_wildcmp_8bit, /* wildcmp */
my_strcasecmp_8bit,
- NULL,
+ my_instr_simple, /* QQ: To be fixed */
my_hash_sort_simple,
};
diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c
index ef9719bf040..64956c872aa 100644
--- a/strings/ctype-utf8.c
+++ b/strings/ctype-utf8.c
@@ -1840,8 +1840,8 @@ int my_strnncollsp_utf8(CHARSET_INFO * cs,
const uchar *s, uint slen,
const uchar *t, uint tlen)
{
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
return my_strnncoll_utf8(cs,s,slen,t,tlen);
}
diff --git a/strings/ctype-win1250ch.c b/strings/ctype-win1250ch.c
index d3b5c9d1796..889cf2d2dae 100644
--- a/strings/ctype-win1250ch.c
+++ b/strings/ctype-win1250ch.c
@@ -38,7 +38,6 @@
*/
#define REAL_MYSQL
-
#ifdef REAL_MYSQL
#include "my_global.h"
@@ -445,103 +444,65 @@ static struct wordvalue doubles[] = {
break; \
}
-#define IS_END(p, src, len) (!(*p))
-
-#if UNUSED
-static int my_strcoll_win1250ch(const uchar * s1, const uchar * s2) {
- int v1, v2;
- const uchar * p1, * p2;
- int pass1 = 0, pass2 = 0;
- int diff;
-
- p1 = s1; p2 = s2;
-
- do {
- NEXT_CMP_VALUE(s1, p1, pass1, v1, 0);
- NEXT_CMP_VALUE(s2, p2, pass2, v2, 0);
- diff = v1 - v2;
- if (diff != 0) return diff;
- } while (v1);
- return 0;
-}
-#endif
-
-#ifdef UNUSED
-static int my_strxfrm_win1250ch(uchar * dest, const uchar * src, int len) {
- int value;
- const uchar * p;
- int pass = 0;
- int totlen = 0;
- p = src;
-
- do {
- NEXT_CMP_VALUE(src, p, pass, value, 0);
- if (totlen <= len)
- dest[totlen] = value;
- totlen++;
- } while (value);
- return totlen;
-}
-#endif
-
-#undef IS_END
-
#define IS_END(p, src, len) (((char *)p - (char *)src) >= (len))
static int my_strnncoll_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
- const uchar * s1, uint len1,
- const uchar * s2, uint len2) {
- int v1, v2;
- const uchar * p1, * p2;
- int pass1 = 0, pass2 = 0;
- int diff;
-
- p1 = s1; p2 = s2;
-
- do {
- NEXT_CMP_VALUE(s1, p1, pass1, v1, (int)len1);
- NEXT_CMP_VALUE(s2, p2, pass2, v2, (int)len2);
- diff = v1 - v2;
- if (diff != 0) return diff;
- } while (v1);
- return 0;
+ const uchar * s1, uint len1,
+ const uchar * s2, uint len2)
+{
+ int v1, v2;
+ const uchar * p1, * p2;
+ int pass1 = 0, pass2 = 0;
+ int diff;
+
+ p1 = s1; p2 = s2;
+
+ do {
+ NEXT_CMP_VALUE(s1, p1, pass1, v1, (int)len1);
+ NEXT_CMP_VALUE(s2, p2, pass2, v2, (int)len2);
+ diff = v1 - v2;
+ if (diff != 0) return diff;
+ } while (v1);
+ return 0;
}
+
static
int my_strnncollsp_win1250ch(CHARSET_INFO * cs,
- const uchar *s, uint slen,
- const uchar *t, uint tlen)
+ const uchar *s, uint slen,
+ const uchar *t, uint tlen)
{
- for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
- for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+ for ( ; slen && s[slen-1] == ' ' ; slen--);
+ for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
return my_strnncoll_win1250ch(cs,s,slen,t,tlen);
}
static int my_strnxfrm_win1250ch(CHARSET_INFO * cs __attribute__((unused)),
- uchar * dest, uint len,
- const uchar * src, uint srclen) {
- int value;
- const uchar * p;
- int pass = 0;
- uint totlen = 0;
- p = src;
-
- do {
- NEXT_CMP_VALUE(src, p, pass, value, (int)srclen);
- if (totlen <= len)
- dest[totlen] = value;
- totlen++;
- } while (value) ;
- return totlen;
+ uchar * dest, uint len,
+ const uchar * src, uint srclen)
+{
+ int value;
+ const uchar * p;
+ int pass = 0;
+ uint totlen = 0;
+ p = src;
+
+ do {
+ NEXT_CMP_VALUE(src, p, pass, value, (int)srclen);
+ if (totlen <= len)
+ dest[totlen] = value;
+ totlen++;
+ } while (value) ;
+ return totlen;
}
#undef IS_END
-
#ifdef REAL_MYSQL
-static uchar NEAR like_range_prefix_min_win1250ch[] = {
+static uchar NEAR like_range_prefix_min_win1250ch[] =
+{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
@@ -598,87 +559,82 @@ static uchar NEAR like_range_prefix_max_win1250ch[] = {
** optimized !
*/
-static my_bool my_like_range_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr, uint ptr_length,
- int escape, int w_one, int w_many,
- uint res_length,
- char *min_str, char *max_str,
- uint *min_length, uint *max_length) {
-
- int was_other_than_min = 0;
- const char *end = ptr + ptr_length;
- char *min_org = min_str;
- char *min_end = min_str + res_length;
-
- /* return 1; */
-
- for (; ptr != end && min_str != min_end ; ptr++) {
- if (*ptr == w_one) { /* '_' in SQL */
- break;
- }
- if (*ptr == w_many) { /* '%' in SQL */
- break;
- }
- if (*ptr == escape && ptr + 1 != end) { /* Skip escape */
- ptr++;
- }
- *min_str = like_range_prefix_min_win1250ch[(uint)(*ptr)];
- if (*min_str != min_sort_char) {
- was_other_than_min = 1;
- }
- min_str++;
- *max_str++ = like_range_prefix_max_win1250ch[(uint)(*ptr)];
- }
-
- *min_length = (uint) (min_str - min_org);
- *max_length = res_length;
- while (min_str != min_end) {
- *min_str++ = min_sort_char;
- *max_str++ = max_sort_char;
- }
- if (! was_other_than_min) {
- return 1;
- }
+static my_bool
+my_like_range_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
+ const char *ptr, uint ptr_length,
+ pbool escape, pbool w_one, pbool w_many,
+ uint res_length,
+ char *min_str, char *max_str,
+ uint *min_length, uint *max_length)
+{
- return 0;
+ int only_min_found= 1;
+ const char *end = ptr + ptr_length;
+ char *min_org = min_str;
+ char *min_end = min_str + res_length;
+
+ /* return 1; */
+
+ for (; ptr != end && min_str != min_end ; ptr++)
+ {
+ if (*ptr == escape && ptr+1 != end)
+ ptr++; /* Skip escape */
+ else if (*ptr == w_one || *ptr == w_many) /* '_' or '%' in SQL */
+ break;
+ *min_str = like_range_prefix_min_win1250ch[(uint)(*ptr)];
+ if (*min_str != min_sort_char)
+ only_min_found= 0;
+ min_str++;
+ *max_str++ = like_range_prefix_max_win1250ch[(uint)(*ptr)];
+ }
+
+ *min_length = (uint) (min_str - min_org);
+ *max_length = res_length;
+ while (min_str != min_end)
+ {
+ *min_str++ = min_sort_char;
+ *max_str++ = max_sort_char;
+ }
+ return (only_min_found);
}
static MY_COLLATION_HANDLER my_collation_czech_ci_handler =
{
- my_strnncoll_win1250ch,
- my_strnncollsp_win1250ch,
- my_strnxfrm_win1250ch,
- my_like_range_win1250ch,
- my_wildcmp_8bit,
- my_strcasecmp_8bit,
- my_instr_simple,
- my_hash_sort_simple
+ my_strnncoll_win1250ch,
+ my_strnncollsp_win1250ch,
+ my_strnxfrm_win1250ch,
+ my_like_range_win1250ch,
+ my_wildcmp_8bit,
+ my_strcasecmp_8bit,
+ my_instr_simple,
+ my_hash_sort_simple
};
+
CHARSET_INFO my_charset_cp1250_czech_ci =
{
- 34,0,0, /* number */
- MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */
- "cp1250", /* cs name */
- "cp1250_czech_ci", /* name */
- "", /* comment */
- ctype_win1250ch,
- to_lower_win1250ch,
- to_upper_win1250ch,
- sort_order_win1250ch,
- tab_cp1250_uni, /* tab_to_uni */
- idx_uni_cp1250, /* tab_from_uni */
- "","",
- 2, /* strxfrm_multiply */
- 1, /* mbminlen */
- 1, /* mbmaxlen */
- 0,
- &my_charset_8bit_handler,
- &my_collation_czech_ci_handler
+ 34,0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */
+ "cp1250", /* cs name */
+ "cp1250_czech_ci", /* name */
+ "", /* comment */
+ ctype_win1250ch,
+ to_lower_win1250ch,
+ to_upper_win1250ch,
+ sort_order_win1250ch,
+ tab_cp1250_uni, /* tab_to_uni */
+ idx_uni_cp1250, /* tab_from_uni */
+ "","",
+ 2, /* strxfrm_multiply */
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0,
+ &my_charset_8bit_handler,
+ &my_collation_czech_ci_handler
};
-#endif
+#endif /* REAL_MYSQL */
-#endif
+#endif /* HAVE_CHARSET_cp1250 */
diff --git a/strings/strto.c b/strings/strto.c
index 6f12656cb20..52efec6e087 100644
--- a/strings/strto.c
+++ b/strings/strto.c
@@ -95,7 +95,7 @@ function (const char *nptr,char **endptr,int base)
s = nptr;
/* Skip white space. */
- while (my_isspace (&my_charset_latin1, *s))
+ while (my_isspace(&my_charset_latin1, *s))
++s;
if (*s == '\0')
{