diff options
author | unknown <monty@narttu.mysql.fi> | 2003-05-14 22:12:55 +0300 |
---|---|---|
committer | unknown <monty@narttu.mysql.fi> | 2003-05-14 22:12:55 +0300 |
commit | ac316cfdb33bd4974a90c240c7a14ecb6a29da34 (patch) | |
tree | ce722533b213ba0daa1a73dd20f1df13b6144a60 /sql/sql_parse.cc | |
parent | 7297502a7bc6ab09d8e7c6cbd822bba4d58d4977 (diff) | |
download | mariadb-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.cc | 16 |
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: |