mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
a fix (bug #7589: Decimal types are ignored when updating data from another column).
mysql-test/r/union.result: a fix (bug #7589: Decimal types are ignored when updating data from another column). removed wrong test result (see #13372) mysql-test/t/union.test: a fix (bug #7589: Decimal types are ignored when updating data from another column). removed wrong test result (see #13372) sql/field_conv.cc: a fix (bug #7589: Decimal types are ignored when updating data from another column). use memcpy() only for identical decimals.
This commit is contained in:
@@ -646,3 +646,12 @@ a
|
||||
9999.999
|
||||
0000.000
|
||||
drop table t1;
|
||||
create table t1(a decimal(10,5), b decimal(10,1));
|
||||
insert into t1 values(123.12345, 123.12345);
|
||||
update t1 set b=a;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'b' at row 1
|
||||
select * from t1;
|
||||
a b
|
||||
123.12345 123.1
|
||||
drop table t1;
|
||||
|
||||
@@ -780,21 +780,6 @@ t1 CREATE TABLE `t1` (
|
||||
`b` longblob
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1,t2;
|
||||
create table t1 (d decimal(10,1));
|
||||
create table t2 (d decimal(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.0
|
||||
show create table t3;
|
||||
Table Create Table
|
||||
t3 CREATE TABLE `t3` (
|
||||
`d` decimal(10,9) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1,t2,t3;
|
||||
create table t1 select 1 union select -1;
|
||||
select * from t1;
|
||||
1
|
||||
|
||||
@@ -266,4 +266,14 @@ insert into t1 values ('1'),('+1'),('-1'),('0000000001'),('+0000000001'),('-0000
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #7589: a problem with update from column
|
||||
#
|
||||
|
||||
create table t1(a decimal(10,5), b decimal(10,1));
|
||||
insert into t1 values(123.12345, 123.12345);
|
||||
update t1 set b=a;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
@@ -425,14 +425,6 @@ create table t1 SELECT b from t2 UNION select tx from t2;
|
||||
select * from t1;
|
||||
show create table t1;
|
||||
drop table t1,t2;
|
||||
create table t1 (d decimal(10,1));
|
||||
create table t2 (d decimal(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;
|
||||
create table t1 select 1 union select -1;
|
||||
select * from t1;
|
||||
show create table t1;
|
||||
|
||||
@@ -599,6 +599,9 @@ void field_conv(Field *to,Field *from)
|
||||
!(to->flags & UNSIGNED_FLAG && !(from->flags & UNSIGNED_FLAG)) &&
|
||||
to->real_type() != FIELD_TYPE_ENUM &&
|
||||
to->real_type() != FIELD_TYPE_SET &&
|
||||
(to->real_type() != FIELD_TYPE_DECIMAL ||
|
||||
(to->field_length == from->field_length &&
|
||||
(((Field_num*) to)->dec == ((Field_num*) from)->dec))) &&
|
||||
from->charset() == to->charset() &&
|
||||
to->table->db_low_byte_first == from->table->db_low_byte_first)
|
||||
{ // Identical fields
|
||||
|
||||
Reference in New Issue
Block a user