From d30081732a65d91876d92bdd54c8dfa5c1c7a793 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 11 Oct 2005 21:18:04 +0500 Subject: [PATCH] Fix for bug #13667 (Inconsistency for decimal(m,d) specification. mysql-test/r/type_newdecimal.result: result fixed mysql-test/t/type_newdecimal.test: testcase added sql/sql_parse.cc: we should check if 'decimals' is not null --- mysql-test/r/type_newdecimal.result | 2 ++ mysql-test/t/type_newdecimal.test | 6 ++++++ sql/sql_parse.cc | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/type_newdecimal.result b/mysql-test/r/type_newdecimal.result index be5e29ab662..dbae646c362 100644 --- a/mysql-test/r/type_newdecimal.result +++ b/mysql-test/r/type_newdecimal.result @@ -1019,3 +1019,5 @@ drop procedure wg2; select cast(@non_existing_user_var/2 as DECIMAL); cast(@non_existing_user_var/2 as DECIMAL) NULL +create table t (d decimal(0,10)); +ERROR 42000: For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'd'). diff --git a/mysql-test/t/type_newdecimal.test b/mysql-test/t/type_newdecimal.test index 3f04aa931d2..a7087d46dca 100644 --- a/mysql-test/t/type_newdecimal.test +++ b/mysql-test/t/type_newdecimal.test @@ -1044,3 +1044,9 @@ drop procedure wg2; # select cast(@non_existing_user_var/2 as DECIMAL); + +# +# Bug #13667 (Inconsistency for decimal(m,d) specification +# +--error 1427 +create table t (d decimal(0,10)); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 88718f6c8c9..8fede76e077 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5748,7 +5748,7 @@ new_create_field(THD *thd, char *field_name, enum_field_types type, case FIELD_TYPE_NULL: break; case FIELD_TYPE_NEWDECIMAL: - if (!length) + if (!length && !new_field->decimals) new_field->length= 10; if (new_field->length > DECIMAL_MAX_PRECISION) {