Commit ff1588ca authored by unknown's avatar unknown

Merge host.loc:/work/bugs/5.0-bugteam-30059

into  host.loc:/work/bk/5.1-bugteam


mysql-test/r/heap.result:
  Auto merged
mysql-test/r/innodb.result:
  Auto merged
mysql-test/r/myisam.result:
  Auto merged
mysql-test/r/strict.result:
  Auto merged
mysql-test/r/type_binary.result:
  Auto merged
mysql-test/r/warnings.result:
  Auto merged
BitKeeper/deleted/.del-bdb.result:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
parents d1345c67 5a1b7ddb
...@@ -256,7 +256,6 @@ set @a=repeat(' ',20); ...@@ -256,7 +256,6 @@ set @a=repeat(' ',20);
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a)); insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
Warnings: Warnings:
Note 1265 Data truncated for column 'v' at row 1 Note 1265 Data truncated for column 'v' at row 1
Note 1265 Data truncated for column 'c' at row 1
select concat('*',v,'*',c,'*',t,'*') from t1; select concat('*',v,'*',c,'*',t,'*') from t1;
concat('*',v,'*',c,'*',t,'*') concat('*',v,'*',c,'*',t,'*')
*+ *+*+ * *+ *+*+ *
......
...@@ -1836,7 +1836,6 @@ set @a=repeat(' ',20); ...@@ -1836,7 +1836,6 @@ set @a=repeat(' ',20);
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a)); insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
Warnings: Warnings:
Note 1265 Data truncated for column 'v' at row 1 Note 1265 Data truncated for column 'v' at row 1
Note 1265 Data truncated for column 'c' at row 1
select concat('*',v,'*',c,'*',t,'*') from t1; select concat('*',v,'*',c,'*',t,'*') from t1;
concat('*',v,'*',c,'*',t,'*') concat('*',v,'*',c,'*',t,'*')
*+ *+*+ * *+ *+*+ *
......
...@@ -1086,7 +1086,6 @@ set @a=repeat(' ',20); ...@@ -1086,7 +1086,6 @@ set @a=repeat(' ',20);
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a)); insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
Warnings: Warnings:
Note 1265 Data truncated for column 'v' at row 1 Note 1265 Data truncated for column 'v' at row 1
Note 1265 Data truncated for column 'c' at row 1
select concat('*',v,'*',c,'*',t,'*') from t1; select concat('*',v,'*',c,'*',t,'*') from t1;
concat('*',v,'*',c,'*',t,'*') concat('*',v,'*',c,'*',t,'*')
*+ *+*+ * *+ *+*+ *
......
...@@ -933,8 +933,6 @@ NULL NULL ...@@ -933,8 +933,6 @@ NULL NULL
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6)); CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6));
INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello '); INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello ');
Warnings:
Note 1265 Data truncated for column 'col1' at row 3
INSERT INTO t1 (col1) VALUES ('hellobob'); INSERT INTO t1 (col1) VALUES ('hellobob');
ERROR 22001: Data too long for column 'col1' at row 1 ERROR 22001: Data too long for column 'col1' at row 1
INSERT INTO t1 (col2) VALUES ('hellobob'); INSERT INTO t1 (col2) VALUES ('hellobob');
......
...@@ -125,7 +125,6 @@ create table t1 (c char(2), vc varchar(2)); ...@@ -125,7 +125,6 @@ create table t1 (c char(2), vc varchar(2));
insert into t1 values(0x4120, 0x4120); insert into t1 values(0x4120, 0x4120);
insert into t1 values(0x412020, 0x412020); insert into t1 values(0x412020, 0x412020);
Warnings: Warnings:
Note 1265 Data truncated for column 'c' at row 1
Note 1265 Data truncated for column 'vc' at row 1 Note 1265 Data truncated for column 'vc' at row 1
drop table t1; drop table t1;
set @old_sql_mode= @@sql_mode, sql_mode= 'traditional'; set @old_sql_mode= @@sql_mode, sql_mode= 'traditional';
......
...@@ -283,7 +283,6 @@ set @q = repeat('q', 256); ...@@ -283,7 +283,6 @@ set @q = repeat('q', 256);
set sql_mode = ''; set sql_mode = '';
insert into t1 values(@c, @c, @c); insert into t1 values(@c, @c, @c);
Warnings: Warnings:
Note 1265 Data truncated for column 'c_char' at row 1
Note 1265 Data truncated for column 'c_varchar' at row 1 Note 1265 Data truncated for column 'c_varchar' at row 1
Note 1265 Data truncated for column 'c_tinytext' at row 1 Note 1265 Data truncated for column 'c_tinytext' at row 1
insert into t2 values(@c); insert into t2 values(@c);
...@@ -300,7 +299,6 @@ Warning 1265 Data truncated for column 'c_tinyblob' at row 1 ...@@ -300,7 +299,6 @@ Warning 1265 Data truncated for column 'c_tinyblob' at row 1
set sql_mode = 'traditional'; set sql_mode = 'traditional';
insert into t1 values(@c, @c, @c); insert into t1 values(@c, @c, @c);
Warnings: Warnings:
Note 1265 Data truncated for column 'c_char' at row 1
Note 1265 Data truncated for column 'c_varchar' at row 1 Note 1265 Data truncated for column 'c_varchar' at row 1
Note 1265 Data truncated for column 'c_tinytext' at row 1 Note 1265 Data truncated for column 'c_tinytext' at row 1
insert into t2 values(@c); insert into t2 values(@c);
......
...@@ -6328,6 +6328,7 @@ check_string_copy_error(Field_str *field, ...@@ -6328,6 +6328,7 @@ check_string_copy_error(Field_str *field,
Field_longstr::report_if_important_data() Field_longstr::report_if_important_data()
ptr - Truncated rest of string ptr - Truncated rest of string
end - End of truncated string end - End of truncated string
count_spaces - Treat traling spaces as important data
RETURN VALUES RETURN VALUES
0 - None was truncated (or we don't count cut fields) 0 - None was truncated (or we don't count cut fields)
...@@ -6337,10 +6338,12 @@ check_string_copy_error(Field_str *field, ...@@ -6337,10 +6338,12 @@ check_string_copy_error(Field_str *field,
Check if we lost any important data (anything in a binary string, Check if we lost any important data (anything in a binary string,
or any non-space in others). If only trailing spaces was lost, or any non-space in others). If only trailing spaces was lost,
send a truncation note, otherwise send a truncation error. send a truncation note, otherwise send a truncation error.
Silently ignore traling spaces if the count_space parameter is FALSE.
*/ */
int int
Field_longstr::report_if_important_data(const char *ptr, const char *end) Field_longstr::report_if_important_data(const char *ptr, const char *end,
bool count_spaces)
{ {
if ((ptr < end) && table->in_use->count_cuted_fields) if ((ptr < end) && table->in_use->count_cuted_fields)
{ {
...@@ -6350,10 +6353,13 @@ Field_longstr::report_if_important_data(const char *ptr, const char *end) ...@@ -6350,10 +6353,13 @@ Field_longstr::report_if_important_data(const char *ptr, const char *end)
set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1); set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
else else
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1); set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
return 2;
} }
else /* If we lost only spaces then produce a NOTE, not a WARNING */ else if (count_spaces)
{ /* If we lost only spaces then produce a NOTE, not a WARNING */
set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, WARN_DATA_TRUNCATED, 1); set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, WARN_DATA_TRUNCATED, 1);
return 2; return 2;
}
} }
return 0; return 0;
} }
...@@ -6390,7 +6396,7 @@ int Field_string::store(const char *from,uint length,CHARSET_INFO *cs) ...@@ -6390,7 +6396,7 @@ int Field_string::store(const char *from,uint length,CHARSET_INFO *cs)
cannot_convert_error_pos, from + length, cs)) cannot_convert_error_pos, from + length, cs))
return 2; return 2;
return report_if_important_data(from_end_pos, from + length); return report_if_important_data(from_end_pos, from + length, FALSE);
} }
...@@ -6965,7 +6971,7 @@ int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs) ...@@ -6965,7 +6971,7 @@ int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs)
cannot_convert_error_pos, from + length, cs)) cannot_convert_error_pos, from + length, cs))
return 2; return 2;
return report_if_important_data(from_end_pos, from + length); return report_if_important_data(from_end_pos, from + length, TRUE);
} }
...@@ -7669,7 +7675,7 @@ int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs) ...@@ -7669,7 +7675,7 @@ int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs)
cannot_convert_error_pos, from + length, cs)) cannot_convert_error_pos, from + length, cs))
return 2; return 2;
return report_if_important_data(from_end_pos, from + length); return report_if_important_data(from_end_pos, from + length, TRUE);
oom_error: oom_error:
/* Fatal OOM error */ /* Fatal OOM error */
......
...@@ -594,7 +594,8 @@ class Field_str :public Field { ...@@ -594,7 +594,8 @@ class Field_str :public Field {
class Field_longstr :public Field_str class Field_longstr :public Field_str
{ {
protected: protected:
int report_if_important_data(const char *ptr, const char *end); int report_if_important_data(const char *ptr, const char *end,
bool count_spaces);
public: public:
Field_longstr(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, Field_longstr(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg, utype unireg_check_arg, uchar null_bit_arg, utype unireg_check_arg,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment