Loading innobase/row/row0ins.c +9 −7 Original line number Diff line number Diff line Loading @@ -591,8 +591,7 @@ row_ins_set_detailed( FILE* tf = os_file_create_tmpfile(); ut_a(tf); if (tf) { ut_print_name(tf, trx, foreign->foreign_table_name); dict_print_info_on_foreign_key_in_create_format(tf, trx, foreign, FALSE); Loading @@ -600,6 +599,9 @@ row_ins_set_detailed( trx_set_detailed_error_from_file(trx, tf); fclose(tf); } else { trx_set_detailed_error(trx, "temp file creation failed"); } } /************************************************************************* Loading mysql-test/r/type_float.result +4 −0 Original line number Diff line number Diff line Loading @@ -225,3 +225,7 @@ select * from t1 where reckey=1.09E2; reckey recdesc 109 Has 109 as key drop table t1; create table t1 (s1 float(0,2)); ERROR 42000: For float(M,D) or double(M,D), M must be >= D (column 's1'). create table t1 (s1 float(1,2)); ERROR 42000: For float(M,D) or double(M,D), M must be >= D (column 's1'). mysql-test/t/type_float.test +9 −0 Original line number Diff line number Diff line Loading @@ -147,3 +147,12 @@ select * from t1 where reckey=1.09E2; drop table t1; # End of 4.1 tests # # bug #12694 (float(m,d) specifications) # --error 1453 create table t1 (s1 float(0,2)); --error 1453 create table t1 (s1 float(1,2)); sql/share/errmsg.txt +2 −0 Original line number Diff line number Diff line Loading @@ -5419,3 +5419,5 @@ ER_ROW_IS_REFERENCED_2 23000 eng "Cannot delete or update a parent row: a foreign key constraint fails (%.192s)" ER_NO_REFERENCED_ROW_2 23000 eng "Cannot add or update a child row: a foreign key constraint fails (%.192s)" ER_M_BIGGER_THAN_D 42000 S1009 eng "For float(M,D) or double(M,D), M must be >= D (column '%-.64s')." sql/sql_parse.cc +14 −2 Original line number Diff line number Diff line Loading @@ -5814,19 +5814,31 @@ new_create_field(THD *thd, char *field_name, enum_field_types type, new_field->decimals= NOT_FIXED_DEC; break; } if (!length) if (!length && !decimals) { new_field->length = FLT_DIG+6; new_field->decimals= NOT_FIXED_DEC; } if (new_field->length < new_field->decimals && new_field->decimals != NOT_FIXED_DEC) { my_error(ER_M_BIGGER_THAN_D, MYF(0), field_name); DBUG_RETURN(NULL); } break; case FIELD_TYPE_DOUBLE: allowed_type_modifier= AUTO_INCREMENT_FLAG; if (!length) if (!length && !decimals) { new_field->length = DBL_DIG+7; new_field->decimals=NOT_FIXED_DEC; } if (new_field->length < new_field->decimals && new_field->decimals != NOT_FIXED_DEC) { my_error(ER_M_BIGGER_THAN_D, MYF(0), field_name); DBUG_RETURN(NULL); } break; case FIELD_TYPE_TIMESTAMP: if (!length) Loading Loading
innobase/row/row0ins.c +9 −7 Original line number Diff line number Diff line Loading @@ -591,8 +591,7 @@ row_ins_set_detailed( FILE* tf = os_file_create_tmpfile(); ut_a(tf); if (tf) { ut_print_name(tf, trx, foreign->foreign_table_name); dict_print_info_on_foreign_key_in_create_format(tf, trx, foreign, FALSE); Loading @@ -600,6 +599,9 @@ row_ins_set_detailed( trx_set_detailed_error_from_file(trx, tf); fclose(tf); } else { trx_set_detailed_error(trx, "temp file creation failed"); } } /************************************************************************* Loading
mysql-test/r/type_float.result +4 −0 Original line number Diff line number Diff line Loading @@ -225,3 +225,7 @@ select * from t1 where reckey=1.09E2; reckey recdesc 109 Has 109 as key drop table t1; create table t1 (s1 float(0,2)); ERROR 42000: For float(M,D) or double(M,D), M must be >= D (column 's1'). create table t1 (s1 float(1,2)); ERROR 42000: For float(M,D) or double(M,D), M must be >= D (column 's1').
mysql-test/t/type_float.test +9 −0 Original line number Diff line number Diff line Loading @@ -147,3 +147,12 @@ select * from t1 where reckey=1.09E2; drop table t1; # End of 4.1 tests # # bug #12694 (float(m,d) specifications) # --error 1453 create table t1 (s1 float(0,2)); --error 1453 create table t1 (s1 float(1,2));
sql/share/errmsg.txt +2 −0 Original line number Diff line number Diff line Loading @@ -5419,3 +5419,5 @@ ER_ROW_IS_REFERENCED_2 23000 eng "Cannot delete or update a parent row: a foreign key constraint fails (%.192s)" ER_NO_REFERENCED_ROW_2 23000 eng "Cannot add or update a child row: a foreign key constraint fails (%.192s)" ER_M_BIGGER_THAN_D 42000 S1009 eng "For float(M,D) or double(M,D), M must be >= D (column '%-.64s')."
sql/sql_parse.cc +14 −2 Original line number Diff line number Diff line Loading @@ -5814,19 +5814,31 @@ new_create_field(THD *thd, char *field_name, enum_field_types type, new_field->decimals= NOT_FIXED_DEC; break; } if (!length) if (!length && !decimals) { new_field->length = FLT_DIG+6; new_field->decimals= NOT_FIXED_DEC; } if (new_field->length < new_field->decimals && new_field->decimals != NOT_FIXED_DEC) { my_error(ER_M_BIGGER_THAN_D, MYF(0), field_name); DBUG_RETURN(NULL); } break; case FIELD_TYPE_DOUBLE: allowed_type_modifier= AUTO_INCREMENT_FLAG; if (!length) if (!length && !decimals) { new_field->length = DBL_DIG+7; new_field->decimals=NOT_FIXED_DEC; } if (new_field->length < new_field->decimals && new_field->decimals != NOT_FIXED_DEC) { my_error(ER_M_BIGGER_THAN_D, MYF(0), field_name); DBUG_RETURN(NULL); } break; case FIELD_TYPE_TIMESTAMP: if (!length) Loading