mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
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)
This commit is contained in:
@ -114,6 +114,7 @@ if test $? != 0; then exit 1; fi
|
|||||||
TR=tr
|
TR=tr
|
||||||
XARGS=`which xargs`
|
XARGS=`which xargs`
|
||||||
if test $? != 0; then exit 1; fi
|
if test $? != 0; then exit 1; fi
|
||||||
|
SORT=sort
|
||||||
|
|
||||||
# Are we using a source or a binary distribution?
|
# Are we using a source or a binary distribution?
|
||||||
|
|
||||||
@ -1363,7 +1364,7 @@ then
|
|||||||
if [ x$RECORD = x1 ]; then
|
if [ x$RECORD = x1 ]; then
|
||||||
$ECHO "Will not run in record mode without a specific test case."
|
$ECHO "Will not run in record mode without a specific test case."
|
||||||
else
|
else
|
||||||
for tf in $TESTDIR/*.$TESTSUFFIX
|
for tf in `ls -1 $TESTDIR/*.$TESTSUFFIX | $SORT`
|
||||||
do
|
do
|
||||||
run_testcase $tf
|
run_testcase $tf
|
||||||
done
|
done
|
||||||
|
@ -357,3 +357,9 @@ select * from t1;
|
|||||||
a
|
a
|
||||||
99999999999
|
99999999999
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (a_dec DECIMAL(-1,0));
|
||||||
|
Too big column length for column 'a_dec' (max = 255). Use BLOB instead
|
||||||
|
CREATE TABLE t1 (a_dec DECIMAL(-2,1));
|
||||||
|
Too big column length for column 'a_dec' (max = 255). Use BLOB instead
|
||||||
|
CREATE TABLE t1 (a_dec DECIMAL(-1,1));
|
||||||
|
Too big column length for column 'a_dec' (max = 255). Use BLOB instead
|
||||||
|
@ -230,3 +230,13 @@ insert into t1 values("1e4294967297");
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test of wrong decimal type
|
||||||
|
#
|
||||||
|
|
||||||
|
--error 1074
|
||||||
|
CREATE TABLE t1 (a_dec DECIMAL(-1,0));
|
||||||
|
--error 1074
|
||||||
|
CREATE TABLE t1 (a_dec DECIMAL(-2,1));
|
||||||
|
--error 1074
|
||||||
|
CREATE TABLE t1 (a_dec DECIMAL(-1,1));
|
||||||
|
@ -2977,9 +2977,8 @@ bool add_field_to_list(char *field_name, enum_field_types type,
|
|||||||
new_field->change=change;
|
new_field->change=change;
|
||||||
new_field->interval=0;
|
new_field->interval=0;
|
||||||
new_field->pack_length=0;
|
new_field->pack_length=0;
|
||||||
if (length)
|
if (length && !(new_field->length= (uint) atoi(length)))
|
||||||
if (!(new_field->length= (uint) atoi(length)))
|
length=0; /* purecov: inspected */
|
||||||
length=0; /* purecov: inspected */
|
|
||||||
uint sign_len=type_modifier & UNSIGNED_FLAG ? 0 : 1;
|
uint sign_len=type_modifier & UNSIGNED_FLAG ? 0 : 1;
|
||||||
|
|
||||||
if (new_field->length && new_field->decimals &&
|
if (new_field->length && new_field->decimals &&
|
||||||
@ -3015,10 +3014,13 @@ bool add_field_to_list(char *field_name, enum_field_types type,
|
|||||||
break;
|
break;
|
||||||
case FIELD_TYPE_DECIMAL:
|
case FIELD_TYPE_DECIMAL:
|
||||||
if (!length)
|
if (!length)
|
||||||
new_field->length = 10; // Default length for DECIMAL
|
new_field->length= 10; // Default length for DECIMAL
|
||||||
new_field->length+=sign_len;
|
if (new_field->length < MAX_FIELD_WIDTH) // Skip wrong argument
|
||||||
if (new_field->decimals)
|
{
|
||||||
new_field->length++;
|
new_field->length+=sign_len;
|
||||||
|
if (new_field->decimals)
|
||||||
|
new_field->length++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case FIELD_TYPE_BLOB:
|
case FIELD_TYPE_BLOB:
|
||||||
case FIELD_TYPE_TINY_BLOB:
|
case FIELD_TYPE_TINY_BLOB:
|
||||||
|
Reference in New Issue
Block a user