inserting 256 characters into 255 char field gives a warning not an error

Bug #309791 reported by Lee Bieber
2
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)

Revision history for this message
Jay Pipes (jaypipes) wrote :

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
drizzled/error.h
297: ER_WARN_DATA_TRUNCATED,

drizzled/field_conv.cc
148: field->set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
254: ER_WARN_DATA_TRUNCATED, 1);
381: ER_WARN_DATA_TRUNCATED, 1);
412: ER_WARN_DATA_TRUNCATED, 1);
450: ER_WARN_DATA_TRUNCATED, 1);
471: ER_WARN_DATA_TRUNCATED, 1);
486: ER_WARN_DATA_TRUNCATED, 1);
508: ER_WARN_DATA_TRUNCATED, 1);

drizzled/error.cc
563:/* WARN_DATA_TRUNCATED 01000 */

drizzled/field/date.cc
87: ER_WARN_DATA_TRUNCATED,
101: ER_WARN_DATA_TRUNCATED, nr, DRIZZLE_TIMESTAMP_DATE);
135: ER_WARN_DATA_OUT_OF_RANGE : ER_WARN_DATA_TRUNCATED,
160: set_datetime_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
170: ER_WARN_DATA_TRUNCATED,
179: set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);

drizzled/field/timetype.cc
54: set_datetime_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
62: ER_WARN_DATA_TRUNCATED,

drizzled/field/longstr.cc
56: set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
59: set_warning(DRIZZLE_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);

drizzled/field/decimal.cc
152: set_warning(DRIZZLE_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);

drizzled/field/str.cc
98: set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);

drizzled/field/timestamp.cc
168: set_datetime_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
246: ER_WARN_DATA_TRUNCATED,

drizzled/field/double.cc
47: (error ? ER_WARN_DATA_OUT_OF_RANGE : ER_WARN_DATA_TRUNCATED), 1);

drizzled/field/enum.cc
118: set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
124: set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
143: set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);

drizzled/field/datetime.cc
115: ER_WARN_DATA_TRUNCATED, initial_nr,
152: set_datetime_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
160: set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);

drizzled/field/num.cc
83: set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);

drizzled/my_decimal.cc
41: ER_WARN_DATA_TRUNCATED, ER(ER_WARN_DATA_TRUNCATED),

drizzled/field.cc
838: set_warning(DRIZZLE_ERROR::WARN_LEVEL_NOTE, ER_WARN_DATA_TRUNCATED, 1);

drizzled/sql_state.cc
172: { ER_WARN_DATA_TRUNCATED ,"01000", "" },

client/errname.h
298: { "WARN_DATA_TRUNCATED", 1265 },

I'll be going through these places and converting them to errors instead.

Changed in drizzle:
assignee: nobody → jaypipes
importance: Undecided → High
milestone: none → cirrus
status: New → Confirmed
Revision history for this message
Toru Maesaka (tmaesaka) wrote :

Hi Jay,

I had a quick look at this and it seems the issue for this particular case is resolved... is it safe to close this bug?

Cheers,
Toru

Jay Pipes (jaypipes)
Changed in drizzle:
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.