diff options
-rw-r--r-- | mysql-test/r/default.result | 12 | ||||
-rw-r--r-- | mysql-test/r/gis.result | 4 | ||||
-rw-r--r-- | mysql-test/t/default.test | 9 | ||||
-rw-r--r-- | mysql-test/t/gis.test | 9 | ||||
-rw-r--r-- | sql/item.cc | 8 |
5 files changed, 39 insertions, 3 deletions
diff --git a/mysql-test/r/default.result b/mysql-test/r/default.result index e2aa3b4a3cc..0b2b6769505 100644 --- a/mysql-test/r/default.result +++ b/mysql-test/r/default.result @@ -193,6 +193,16 @@ a b c d e f g h i x two large 00:00:05 0007-01-01 11 13 17 0019-01-01 00:00:00 23 1 small 00:00:00 0000-00-00 0 0000-00-00 00:00:00 0 2 two large 00:00:05 0007-01-01 11 13 17 0019-01-01 00:00:00 23 3 - small 00:00:00 0000-00-00 0 0000-00-00 00:00:00 0 4 + 00:00:00 0000-00-00 0 0000-00-00 00:00:00 0 4 drop table bug20691; +create table t1 (id int not null); +insert into t1 values(default); +Warnings: +Warning 1364 Field 'id' doesn't have a default value +create view v1 (c) as select id from t1; +insert into t1 values(default); +Warnings: +Warning 1364 Field 'id' doesn't have a default value +drop view v1; +drop table t1; End of 5.0 tests. diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index 870e160e563..df39a4d8ca2 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -717,3 +717,7 @@ desc t1; Field Type Null Key Default Extra GeomFromText('point(1 1)') geometry NO drop table t1; +create table t1 (g geometry not null); +insert into t1 values(default); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +drop table t1; diff --git a/mysql-test/t/default.test b/mysql-test/t/default.test index 225ddbc3ee2..14aa4b02cfe 100644 --- a/mysql-test/t/default.test +++ b/mysql-test/t/default.test @@ -137,6 +137,13 @@ insert into bug20691 values (DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAUL select * from bug20691 order by x asc; drop table bug20691; -### +create table t1 (id int not null); +insert into t1 values(default); + +create view v1 (c) as select id from t1; +insert into t1 values(default); +drop view v1; +drop table t1; + --echo End of 5.0 tests. diff --git a/mysql-test/t/gis.test b/mysql-test/t/gis.test index 95fdf642b94..ff9fcad1fcf 100644 --- a/mysql-test/t/gis.test +++ b/mysql-test/t/gis.test @@ -428,3 +428,12 @@ drop table t1; create table t1 select GeomFromText('point(1 1)'); desc t1; drop table t1; + +# +# Bug #20691 (DEFAULT over NOT NULL field) +# +create table t1 (g geometry not null); +--error ER_CANT_CREATE_GEOMETRY_OBJECT +insert into t1 values(default); +drop table t1; + diff --git a/sql/item.cc b/sql/item.cc index 9a55eb25e2c..b749ad97e64 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -5505,6 +5505,13 @@ int Item_default_value::save_in_field(Field *field_arg, bool no_conversions) { if (field_arg->flags & NO_DEFAULT_VALUE_FLAG) { + if (field_arg->reset()) + { + my_message(ER_CANT_CREATE_GEOMETRY_OBJECT, + ER(ER_CANT_CREATE_GEOMETRY_OBJECT), MYF(0)); + return -1; + } + if (context->error_processor == &view_error_processor) { TABLE_LIST *view= cached_table->top_table(); @@ -5523,7 +5530,6 @@ int Item_default_value::save_in_field(Field *field_arg, bool no_conversions) ER(ER_NO_DEFAULT_FOR_FIELD), field_arg->field_name); } - field_arg->set_default(); return 1; } field_arg->set_default(); |