inserting 256 characters into 255 char field gives a warning not an error
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Drizzle |
Fix Released
|
High
|
Jay Pipes |
Bug Description
The following should give an error in Drizzle, but currently only gives a warning
drizzle> use test;
Database changed
drizzle> create table t1 (c_char char(255), c_varchar varchar(255), c_tinytext blob);
Query OK, 0 rows affected (0.01 sec)
drizzle> set @c = repeat(' ', 256);
Query OK, 0 rows affected (0.00 sec)
drizzle> insert into t1 values(@c, @c, @c);
Query OK, 1 row affected, 2 warnings (0.02 sec)
drizzle> show warnings;
+------
| Level | Code | Message |
+------
| Note | 1265 | Data truncated for column 'c_char' at row 1 |
| Note | 1265 | Data truncated for column 'c_varchar' at row 1 |
+------
2 rows in set (0.00 sec)
Changed in drizzle: | |
status: | Confirmed → Fix Released |
Warnings in SQL should be errors in Drizzle. Here is the data truncation warning locations:
jpipes@ serialcoder: ~/repos/ drizzle/ trunk$ ack-grep WARN_DATA_TRUNCATED DATA_TRUNCATED,
drizzled/error.h
297: ER_WARN_
drizzled/ field_conv. cc set_warning( DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1); DATA_TRUNCATED, 1); DATA_TRUNCATED, 1); DATA_TRUNCATED, 1); DATA_TRUNCATED, 1); DATA_TRUNCATED, 1); DATA_TRUNCATED, 1); DATA_TRUNCATED, 1);
148: field->
254: ER_WARN_
381: ER_WARN_
412: ER_WARN_
450: ER_WARN_
471: ER_WARN_
486: ER_WARN_
508: ER_WARN_
drizzled/error.cc
563:/* WARN_DATA_TRUNCATED 01000 */
drizzled/ field/date. cc DATA_TRUNCATED, DATA_TRUNCATED, nr, DRIZZLE_ TIMESTAMP_ DATE); DATA_OUT_ OF_RANGE : ER_WARN_ DATA_TRUNCATED, warning( DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, DATA_TRUNCATED, DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1);
87: ER_WARN_
101: ER_WARN_
135: ER_WARN_
160: set_datetime_
170: ER_WARN_
179: set_warning(
drizzled/ field/timetype. cc warning( DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, DATA_TRUNCATED,
54: set_datetime_
62: ER_WARN_
drizzled/ field/longstr. cc DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1); DRIZZLE_ ERROR:: WARN_LEVEL_ NOTE, ER_WARN_ DATA_TRUNCATED, 1);
56: set_warning(
59: set_warning(
drizzled/ field/decimal. cc DRIZZLE_ ERROR:: WARN_LEVEL_ NOTE, ER_WARN_ DATA_TRUNCATED, 1);
152: set_warning(
drizzled/ field/str. cc DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1);
98: set_warning(
drizzled/ field/timestamp .cc warning( DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, DATA_TRUNCATED,
168: set_datetime_
246: ER_WARN_
drizzled/ field/double. cc DATA_OUT_ OF_RANGE : ER_WARN_ DATA_TRUNCATED) , 1);
47: (error ? ER_WARN_
drizzled/ field/enum. cc DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1); DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1); DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1);
118: set_warning(
124: set_warning(
143: set_warning(
drizzled/ field/datetime. cc DATA_TRUNCATED, initial_nr, warning( DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1);
115: ER_WARN_
152: set_datetime_
160: set_warning(
drizzled/ field/num. cc DRIZZLE_ ERROR:: WARN_LEVEL_ WARN, ER_WARN_ DATA_TRUNCATED, 1);
83: set_warning(
drizzled/ my_decimal. cc DATA_TRUNCATED, ER(ER_WARN_ DATA_TRUNCATED) ,
41: ER_WARN_
drizzled/field.cc DRIZZLE_ ERROR:: WARN_LEVEL_ NOTE, ER_WARN_ DATA_TRUNCATED, 1);
838: set_warning(
drizzled/ sql_state. cc DATA_TRUNCATED ,"01000", "" },
172: { ER_WARN_
client/errname.h TRUNCATED" , 1265 },
298: { "WARN_DATA_
I'll be going through these places and converting them to errors instead.