mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge host.loc:/work/bugs/5.0-bugteam-30059
into host.loc:/work/bk/5.1-bugteam
This commit is contained in:
@ -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);
|
|||||||
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);
|
|||||||
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
|
|||||||
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));
|
|||||||
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);
|
|||||||
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
|
|||||||
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);
|
||||||
|
18
sql/field.cc
18
sql/field.cc
@ -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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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 @@ public:
|
|||||||
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,
|
||||||
|
Reference in New Issue
Block a user