Loading mysql-test/r/gis.result +9 −0 Original line number Diff line number Diff line Loading @@ -670,3 +670,12 @@ create trigger t1_bu before update on t1 for each row set new.s1 = null; insert into t1 values (null,null); ERROR 23000: Column 's1' cannot be null drop table t1; create function fn3 () returns point return GeomFromText("point(1 1)"); show create function fn3; Function sql_mode Create Function fn3 CREATE FUNCTION `test`.`fn3`() RETURNS point return GeomFromText("point(1 1)") select astext(fn3()); astext(fn3()) POINT(1 1) drop function fn3; mysql-test/t/gis.test +9 −0 Original line number Diff line number Diff line Loading @@ -383,3 +383,12 @@ create trigger t1_bu before update on t1 for each row set new.s1 = null; --error 1048 insert into t1 values (null,null); drop table t1; # # Bug #10499 (function creation with GEOMETRY datatype) # create function fn3 () returns point return GeomFromText("point(1 1)"); show create function fn3; select astext(fn3()); drop function fn3; sql/sp_head.cc +1 −1 Original line number Diff line number Diff line Loading @@ -597,7 +597,7 @@ sp_head::make_field(uint max_length, const char *name, TABLE *dummy) field= ::make_field((char *)0, !m_returns_len ? max_length : m_returns_len, (uchar *)"", 0, m_returns_pack, m_returns, m_returns_cs, (enum Field::geometry_type)0, Field::NONE, m_geom_returns, Field::NONE, m_returns_typelib, name ? name : (const char *)m_name.str, dummy); DBUG_RETURN(field); Loading sql/sp_head.h +1 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ class sp_head :private Query_arena int m_type; // TYPE_ENUM_FUNCTION or TYPE_ENUM_PROCEDURE enum enum_field_types m_returns; // For FUNCTIONs only Field::geometry_type m_geom_returns; CHARSET_INFO *m_returns_cs; // For FUNCTIONs only TYPELIB *m_returns_typelib; // For FUNCTIONs only uint m_returns_len; // For FUNCTIONs only Loading sql/sql_yacc.yy +2 −1 Original line number Diff line number Diff line Loading @@ -1444,7 +1444,7 @@ create_function_tail: sp_prepare_create_field(YYTHD, new_field); if (prepare_create_field(new_field, &unused1, &unused2, &unused2, 0)) HA_CAN_GEOMETRY)) YYABORT; sp->m_returns= new_field->sql_type; Loading @@ -1452,6 +1452,7 @@ create_function_tail: sp->m_returns_len= new_field->length; sp->m_returns_pack= new_field->pack_flag; sp->m_returns_typelib= new_field->interval; sp->m_geom_returns= new_field->geom_type; new_field->interval= NULL; bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics)); Loading Loading
mysql-test/r/gis.result +9 −0 Original line number Diff line number Diff line Loading @@ -670,3 +670,12 @@ create trigger t1_bu before update on t1 for each row set new.s1 = null; insert into t1 values (null,null); ERROR 23000: Column 's1' cannot be null drop table t1; create function fn3 () returns point return GeomFromText("point(1 1)"); show create function fn3; Function sql_mode Create Function fn3 CREATE FUNCTION `test`.`fn3`() RETURNS point return GeomFromText("point(1 1)") select astext(fn3()); astext(fn3()) POINT(1 1) drop function fn3;
mysql-test/t/gis.test +9 −0 Original line number Diff line number Diff line Loading @@ -383,3 +383,12 @@ create trigger t1_bu before update on t1 for each row set new.s1 = null; --error 1048 insert into t1 values (null,null); drop table t1; # # Bug #10499 (function creation with GEOMETRY datatype) # create function fn3 () returns point return GeomFromText("point(1 1)"); show create function fn3; select astext(fn3()); drop function fn3;
sql/sp_head.cc +1 −1 Original line number Diff line number Diff line Loading @@ -597,7 +597,7 @@ sp_head::make_field(uint max_length, const char *name, TABLE *dummy) field= ::make_field((char *)0, !m_returns_len ? max_length : m_returns_len, (uchar *)"", 0, m_returns_pack, m_returns, m_returns_cs, (enum Field::geometry_type)0, Field::NONE, m_geom_returns, Field::NONE, m_returns_typelib, name ? name : (const char *)m_name.str, dummy); DBUG_RETURN(field); Loading
sql/sp_head.h +1 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ class sp_head :private Query_arena int m_type; // TYPE_ENUM_FUNCTION or TYPE_ENUM_PROCEDURE enum enum_field_types m_returns; // For FUNCTIONs only Field::geometry_type m_geom_returns; CHARSET_INFO *m_returns_cs; // For FUNCTIONs only TYPELIB *m_returns_typelib; // For FUNCTIONs only uint m_returns_len; // For FUNCTIONs only Loading
sql/sql_yacc.yy +2 −1 Original line number Diff line number Diff line Loading @@ -1444,7 +1444,7 @@ create_function_tail: sp_prepare_create_field(YYTHD, new_field); if (prepare_create_field(new_field, &unused1, &unused2, &unused2, 0)) HA_CAN_GEOMETRY)) YYABORT; sp->m_returns= new_field->sql_type; Loading @@ -1452,6 +1452,7 @@ create_function_tail: sp->m_returns_len= new_field->length; sp->m_returns_pack= new_field->pack_flag; sp->m_returns_typelib= new_field->interval; sp->m_geom_returns= new_field->geom_type; new_field->interval= NULL; bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics)); Loading