Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
be091704
Commit
be091704
authored
Oct 11, 2005
by
hf@deer.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merging
parents
bef189cc
83c103ed
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
50 additions
and
1 deletion
+50
-1
mysql-test/r/type_float.result
mysql-test/r/type_float.result
+15
-0
mysql-test/t/type_float.test
mysql-test/t/type_float.test
+13
-0
sql/item.cc
sql/item.cc
+22
-1
No files found.
mysql-test/r/type_float.result
View file @
be091704
...
...
@@ -229,3 +229,18 @@ create table t1 (s1 float(0,2));
ERROR 42000: For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 's1').
create table t1 (s1 float(1,2));
ERROR 42000: For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 's1').
create table t1 (d double(10,1));
create table t2 (d double(10,9));
insert into t1 values ("100000000.0");
insert into t2 values ("1.23456780");
create table t3 select * from t2 union select * from t1;
select * from t3;
d
1.234567800
100000000.000000000
show create table t3;
Table Create Table
t3 CREATE TABLE `t3` (
`d` double(22,9) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1, t2, t3;
mysql-test/t/type_float.test
View file @
be091704
...
...
@@ -146,6 +146,19 @@ select * from t1 where reckey=109;
select
*
from
t1
where
reckey
=
1.09E2
;
drop
table
t1
;
#
# Bug #13372 (decimal union)
#
create
table
t1
(
d
double
(
10
,
1
));
create
table
t2
(
d
double
(
10
,
9
));
insert
into
t1
values
(
"100000000.0"
);
insert
into
t2
values
(
"1.23456780"
);
create
table
t3
select
*
from
t2
union
select
*
from
t1
;
select
*
from
t3
;
show
create
table
t3
;
drop
table
t1
,
t2
,
t3
;
# End of 4.1 tests
#
...
...
sql/item.cc
View file @
be091704
...
...
@@ -5705,6 +5705,8 @@ enum_field_types Item_type_holder::get_real_type(Item *item)
bool
Item_type_holder
::
join_types
(
THD
*
thd
,
Item
*
item
)
{
uint
max_length_orig
=
max_length
;
uint
decimals_orig
=
decimals
;
DBUG_ENTER
(
"Item_type_holder::join_types"
);
DBUG_PRINT
(
"info:"
,
(
"was type %d len %d, dec %d name %s"
,
fld_type
,
max_length
,
decimals
,
...
...
@@ -5731,7 +5733,10 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
}
else
max_length
=
max
(
max_length
,
display_length
(
item
));
if
(
Field
::
result_merge_type
(
fld_type
)
==
STRING_RESULT
)
switch
(
Field
::
result_merge_type
(
fld_type
))
{
case
STRING_RESULT
:
{
const
char
*
old_cs
,
*
old_derivation
;
old_cs
=
collation
.
collation
->
name
;
...
...
@@ -5745,7 +5750,23 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
"UNION"
);
DBUG_RETURN
(
TRUE
);
}
break
;
}
case
REAL_RESULT
:
{
if
(
decimals
!=
NOT_FIXED_DEC
)
{
int
delta1
=
max_length_orig
-
decimals_orig
;
int
delta2
=
item
->
max_length
-
item
->
decimals
;
max_length
=
min
(
max
(
delta1
,
delta2
)
+
decimals
,
(
fld_type
==
MYSQL_TYPE_FLOAT
)
?
FLT_DIG
+
6
:
DBL_DIG
+
7
);
}
else
max_length
=
(
fld_type
==
MYSQL_TYPE_FLOAT
)
?
FLT_DIG
+
6
:
DBL_DIG
+
7
;
break
;
}
default:
;
};
maybe_null
|=
item
->
maybe_null
;
get_full_info
(
item
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment