mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
00c1c19e94
Problem: Too confusing error message when cannot convert between string and column character sets on INSERT and UPDATE. Fix: producing a better error message, instead of "Data too long" in such cases Additional changes: Adding "DROP TABLE IF EXISTS" into several tests to be safe against failures in previous tests. mysql-test/include/strict_autoinc.inc: Adding DROP TABLE to be safe against previous tests failure. mysql-test/r/ctype_recoding.result: Fixing test results mysql-test/r/ctype_utf8.result: Fixing test results mysql-test/r/fulltext.result: Fixing test results mysql-test/r/strict_autoinc_1myisam.result: Adding DROP TABLE to be safe against previous tests failure. mysql-test/r/strict_autoinc_2innodb.result: Adding DROP TABLE to be safe against previous tests failure. mysql-test/r/strict_autoinc_3heap.result: Adding DROP TABLE to be safe against previous tests failure. mysql-test/r/strict_autoinc_4bdb.result: Adding DROP TABLE to be safe against previous tests failure. mysql-test/r/strict_autoinc_5ndb.result: Adding DROP TABLE to be safe against previous tests failure. sql/field.cc: - producing better error messages than "DATA TRUNCATED" or "DATA TOO LONG" (in strict mode) in case of "not well formed source" and "cannot convert to field character set" - Performance improvements: copying directly to the target, instead of using an intermediate String. - Moving duplicate code into report_data_too_long() function. sql/sql_string.cc: Adding a new function to convert strings between character sets, but not more than "nchar" characters - a helper function for Field_string::store(), Field_varstring::store() and Field_blob::store(). sql/sql_string.h: Adding new function prototype.
28 lines
681 B
Text
28 lines
681 B
Text
drop table if exists t1;
|
|
set @org_mode=@@sql_mode;
|
|
create table t1
|
|
(
|
|
`a` tinyint(4) NOT NULL auto_increment,
|
|
primary key (`a`)
|
|
) engine = 'MEMORY' ;
|
|
set @@sql_mode='strict_all_tables';
|
|
insert into t1 values(1000);
|
|
ERROR 22003: Out of range value adjusted for column 'a' at row 1
|
|
select count(*) from t1;
|
|
count(*)
|
|
0
|
|
set auto_increment_increment=1000;
|
|
set auto_increment_offset=700;
|
|
insert into t1 values(null);
|
|
ERROR 22003: Out of range value adjusted for column 'a' at row 1
|
|
select count(*) from t1;
|
|
count(*)
|
|
0
|
|
set @@sql_mode=@org_mode;
|
|
insert into t1 values(null);
|
|
Warnings:
|
|
Warning 1264 Out of range value adjusted for column 'a' at row 1
|
|
select * from t1;
|
|
a
|
|
127
|
|
drop table t1;
|