summaryrefslogtreecommitdiff
path: root/sql/sql_parse.cc
diff options
context:
space:
mode:
authorunknown <monty@narttu.mysql.fi>2003-05-14 22:12:55 +0300
committerunknown <monty@narttu.mysql.fi>2003-05-14 22:12:55 +0300
commitac316cfdb33bd4974a90c240c7a14ecb6a29da34 (patch)
treece722533b213ba0daa1a73dd20f1df13b6144a60 /sql/sql_parse.cc
parent7297502a7bc6ab09d8e7c6cbd822bba4d58d4977 (diff)
downloadmariadb-git-ac316cfdb33bd4974a90c240c7a14ecb6a29da34.tar.gz
Fixed bug in CREATE ... DECIMAL(-1,1). Bug #432
mysql-test/mysql-test-run.sh: Ensure that tests are sorted mysql-test/r/type_decimal.result: Test for bug with decimal() mysql-test/t/type_decimal.test: Test for bug with decimal() sql/sql_parse.cc: Fixed bug in CREATE ... DECIMAL(-1,1)
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r--sql/sql_parse.cc16
1 files changed, 9 insertions, 7 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index ad2f7f9a8bd..e69d260bf11 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -2977,9 +2977,8 @@ bool add_field_to_list(char *field_name, enum_field_types type,
new_field->change=change;
new_field->interval=0;
new_field->pack_length=0;
- if (length)
- if (!(new_field->length= (uint) atoi(length)))
- length=0; /* purecov: inspected */
+ if (length && !(new_field->length= (uint) atoi(length)))
+ length=0; /* purecov: inspected */
uint sign_len=type_modifier & UNSIGNED_FLAG ? 0 : 1;
if (new_field->length && new_field->decimals &&
@@ -3015,10 +3014,13 @@ bool add_field_to_list(char *field_name, enum_field_types type,
break;
case FIELD_TYPE_DECIMAL:
if (!length)
- new_field->length = 10; // Default length for DECIMAL
- new_field->length+=sign_len;
- if (new_field->decimals)
- new_field->length++;
+ new_field->length= 10; // Default length for DECIMAL
+ if (new_field->length < MAX_FIELD_WIDTH) // Skip wrong argument
+ {
+ new_field->length+=sign_len;
+ if (new_field->decimals)
+ new_field->length++;
+ }
break;
case FIELD_TYPE_BLOB:
case FIELD_TYPE_TINY_BLOB: