Commit a5b04a3b authored by gkodinov/kgeorge@magare.gmz's avatar gkodinov/kgeorge@magare.gmz
Browse files

Bug #28492: subselect returns LONG in >5.0.24a and LONGLONG in <=5.0.24a

Integer values with 10 digits may or may not fit into an int column 
(e.g. 2147483647 vs 6147483647).
Thus when creating a temp table column for such an int we must
use bigint instead.
Fixed to use bigint.
Also subsituted a "magic number" with a named constant.
parent 48fe2802
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -39,10 +39,10 @@ t2 CREATE TABLE `t2` (
  `Field_name` varbinary(255) NOT NULL default '',
  `Min_value` varbinary(255) default NULL,
  `Max_value` varbinary(255) default NULL,
  `Min_length` int(11) NOT NULL default '0',
  `Max_length` int(11) NOT NULL default '0',
  `Empties_or_zeros` int(11) NOT NULL default '0',
  `Nulls` int(11) NOT NULL default '0',
  `Min_length` bigint(11) NOT NULL default '0',
  `Max_length` bigint(11) NOT NULL default '0',
  `Empties_or_zeros` bigint(11) NOT NULL default '0',
  `Nulls` bigint(11) NOT NULL default '0',
  `Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
  `Std` varbinary(255) default NULL,
  `Optimal_fieldtype` varbinary(64) NOT NULL default ''
@@ -58,10 +58,10 @@ t2 CREATE TABLE `t2` (
  `Field_name` varbinary(255) NOT NULL default '',
  `Min_value` varbinary(255) default NULL,
  `Max_value` varbinary(255) default NULL,
  `Min_length` int(11) NOT NULL default '0',
  `Max_length` int(11) NOT NULL default '0',
  `Empties_or_zeros` int(11) NOT NULL default '0',
  `Nulls` int(11) NOT NULL default '0',
  `Min_length` bigint(11) NOT NULL default '0',
  `Max_length` bigint(11) NOT NULL default '0',
  `Empties_or_zeros` bigint(11) NOT NULL default '0',
  `Nulls` bigint(11) NOT NULL default '0',
  `Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
  `Std` varbinary(255) default NULL,
  `Optimal_fieldtype` varbinary(64) NOT NULL default ''
@@ -81,10 +81,10 @@ t2 CREATE TABLE `t2` (
  `Field_name` varbinary(255) NOT NULL default '',
  `Min_value` varbinary(255) default NULL,
  `Max_value` varbinary(255) default NULL,
  `Min_length` int(11) NOT NULL default '0',
  `Max_length` int(11) NOT NULL default '0',
  `Empties_or_zeros` int(11) NOT NULL default '0',
  `Nulls` int(11) NOT NULL default '0',
  `Min_length` bigint(11) NOT NULL default '0',
  `Max_length` bigint(11) NOT NULL default '0',
  `Empties_or_zeros` bigint(11) NOT NULL default '0',
  `Nulls` bigint(11) NOT NULL default '0',
  `Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
  `Std` varbinary(255) default NULL,
  `Optimal_fieldtype` varbinary(64) NOT NULL default ''
+11 −0
Original line number Diff line number Diff line
@@ -130,3 +130,14 @@ def v3 renamed 8 12 0 Y 32896 0 63
renamed
drop table t1;
drop view v1,v2,v3;
select a.* from (select 2147483648 as v_large) a;
Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
def			a	v_large	v_large	8	10	10	N	32769	0	63
v_large
2147483648
select a.* from (select 214748364 as v_small) a;
Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
def			a	v_small	v_small	3	9	9	N	32769	0	63
v_small
214748364
End of 5.0 tests
+2 −2
Original line number Diff line number Diff line
@@ -696,8 +696,8 @@ CREATE VIEW v1 AS
SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
DESC v1;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		0	
LENGTH(a)	int(10)	YES		NULL	
a	bigint(11)	YES		NULL	
LENGTH(a)	bigint(10)	YES		NULL	
COUNT(*)	bigint(21)	NO		0	
SELECT * FROM v1;
a	LENGTH(a)	COUNT(*)
+1 −1
Original line number Diff line number Diff line
@@ -4909,7 +4909,7 @@ create table t3 as select * from v1|
show create table t3|
Table	Create Table
t3	CREATE TABLE `t3` (
  `j` int(11) default NULL
  `j` bigint(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from t3|
j
+1 −1
Original line number Diff line number Diff line
@@ -2779,7 +2779,7 @@ CREATE TABLE t1 (i int, j int);
CREATE VIEW v1 AS SELECT COALESCE(i,j) FROM t1;
DESCRIBE v1;
Field	Type	Null	Key	Default	Extra
COALESCE(i,j)	int(11)	YES		NULL	
COALESCE(i,j)	bigint(11)	YES		NULL	
CREATE TABLE t2 SELECT COALESCE(i,j) FROM t1;
DESCRIBE t2;
Field	Type	Null	Key	Default	Extra
Loading