Commit 68cd99bd authored by unknown's avatar unknown
Browse files

Fix for bug #12173 (show create table crash)


mysql-test/r/type_newdecimal.result:
  test result fixed
mysql-test/t/type_newdecimal.test:
  testcase
strings/decimal.c:
  we always add one int-part digit even if decimal(10,10) (no int part declared)
parent 90b2daa7
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -976,3 +976,13 @@ select * from t1;
f1	f2	f3	f4	f5	f6	f7	f8
1	18	99	100	104	200	1000	10000
drop table t1;
create table t1 (
f0 decimal (30,30) zerofill not null DEFAULT 0,
f1 decimal (0,0) zerofill not null default 0);
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `f0` decimal(30,30) unsigned zerofill NOT NULL default '0.000000000000000000000000000000',
  `f1` decimal(10,0) unsigned zerofill NOT NULL default '0000000000'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
+8 −0
Original line number Diff line number Diff line
@@ -1007,3 +1007,11 @@ insert into t1 (f1) values (1);
select * from t1;
drop table t1;

#
# Bug 12173 (show create table fails)
#
create table t1 (
        f0 decimal (30,30) zerofill not null DEFAULT 0,
        f1 decimal (0,0) zerofill not null default 0);
show create table t1;
drop table t1;
+2 −1
Original line number Diff line number Diff line
@@ -351,7 +351,8 @@ int decimal2string(decimal_t *from, char *to, int *to_len,
    buf0=&tmp;
  }

  intg_len= fixed_precision ? fixed_intg : (intg ? intg : 1);
  if (!(intg_len= fixed_precision ? fixed_intg : intg))
    intg_len= 1;
  frac_len= fixed_precision ? fixed_decimals : frac;
  len= from->sign + intg_len + test(frac) + frac_len;
  if (fixed_precision)