Commit 22c1bfbb authored by gkodinov/kgeorge@magare.gmz's avatar gkodinov/kgeorge@magare.gmz

Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt

into  magare.gmz:/home/kgeorge/mysql/autopush/B28492-5.0-opt
parents a109df80 a5b04a3b
...@@ -39,10 +39,10 @@ t2 CREATE TABLE `t2` ( ...@@ -39,10 +39,10 @@ t2 CREATE TABLE `t2` (
`Field_name` varbinary(255) NOT NULL default '', `Field_name` varbinary(255) NOT NULL default '',
`Min_value` varbinary(255) default NULL, `Min_value` varbinary(255) default NULL,
`Max_value` varbinary(255) default NULL, `Max_value` varbinary(255) default NULL,
`Min_length` int(11) NOT NULL default '0', `Min_length` bigint(11) NOT NULL default '0',
`Max_length` int(11) NOT NULL default '0', `Max_length` bigint(11) NOT NULL default '0',
`Empties_or_zeros` int(11) NOT NULL default '0', `Empties_or_zeros` bigint(11) NOT NULL default '0',
`Nulls` int(11) NOT NULL default '0', `Nulls` bigint(11) NOT NULL default '0',
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '', `Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
`Std` varbinary(255) default NULL, `Std` varbinary(255) default NULL,
`Optimal_fieldtype` varbinary(64) NOT NULL default '' `Optimal_fieldtype` varbinary(64) NOT NULL default ''
...@@ -58,10 +58,10 @@ t2 CREATE TABLE `t2` ( ...@@ -58,10 +58,10 @@ t2 CREATE TABLE `t2` (
`Field_name` varbinary(255) NOT NULL default '', `Field_name` varbinary(255) NOT NULL default '',
`Min_value` varbinary(255) default NULL, `Min_value` varbinary(255) default NULL,
`Max_value` varbinary(255) default NULL, `Max_value` varbinary(255) default NULL,
`Min_length` int(11) NOT NULL default '0', `Min_length` bigint(11) NOT NULL default '0',
`Max_length` int(11) NOT NULL default '0', `Max_length` bigint(11) NOT NULL default '0',
`Empties_or_zeros` int(11) NOT NULL default '0', `Empties_or_zeros` bigint(11) NOT NULL default '0',
`Nulls` int(11) NOT NULL default '0', `Nulls` bigint(11) NOT NULL default '0',
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '', `Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
`Std` varbinary(255) default NULL, `Std` varbinary(255) default NULL,
`Optimal_fieldtype` varbinary(64) NOT NULL default '' `Optimal_fieldtype` varbinary(64) NOT NULL default ''
...@@ -81,10 +81,10 @@ t2 CREATE TABLE `t2` ( ...@@ -81,10 +81,10 @@ t2 CREATE TABLE `t2` (
`Field_name` varbinary(255) NOT NULL default '', `Field_name` varbinary(255) NOT NULL default '',
`Min_value` varbinary(255) default NULL, `Min_value` varbinary(255) default NULL,
`Max_value` varbinary(255) default NULL, `Max_value` varbinary(255) default NULL,
`Min_length` int(11) NOT NULL default '0', `Min_length` bigint(11) NOT NULL default '0',
`Max_length` int(11) NOT NULL default '0', `Max_length` bigint(11) NOT NULL default '0',
`Empties_or_zeros` int(11) NOT NULL default '0', `Empties_or_zeros` bigint(11) NOT NULL default '0',
`Nulls` int(11) NOT NULL default '0', `Nulls` bigint(11) NOT NULL default '0',
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '', `Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
`Std` varbinary(255) default NULL, `Std` varbinary(255) default NULL,
`Optimal_fieldtype` varbinary(64) NOT NULL default '' `Optimal_fieldtype` varbinary(64) NOT NULL default ''
......
...@@ -130,3 +130,14 @@ def v3 renamed 8 12 0 Y 32896 0 63 ...@@ -130,3 +130,14 @@ def v3 renamed 8 12 0 Y 32896 0 63
renamed renamed
drop table t1; drop table t1;
drop view v1,v2,v3; 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
...@@ -696,8 +696,8 @@ CREATE VIEW v1 AS ...@@ -696,8 +696,8 @@ CREATE VIEW v1 AS
SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP; SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
DESC v1; DESC v1;
Field Type Null Key Default Extra Field Type Null Key Default Extra
a int(11) YES 0 a bigint(11) YES NULL
LENGTH(a) int(10) YES NULL LENGTH(a) bigint(10) YES NULL
COUNT(*) bigint(21) NO 0 COUNT(*) bigint(21) NO 0
SELECT * FROM v1; SELECT * FROM v1;
a LENGTH(a) COUNT(*) a LENGTH(a) COUNT(*)
......
...@@ -4909,7 +4909,7 @@ create table t3 as select * from v1| ...@@ -4909,7 +4909,7 @@ create table t3 as select * from v1|
show create table t3| show create table t3|
Table Create Table Table Create Table
t3 CREATE TABLE `t3` ( t3 CREATE TABLE `t3` (
`j` int(11) default NULL `j` bigint(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from t3| select * from t3|
j j
......
...@@ -2779,7 +2779,7 @@ CREATE TABLE t1 (i int, j int); ...@@ -2779,7 +2779,7 @@ CREATE TABLE t1 (i int, j int);
CREATE VIEW v1 AS SELECT COALESCE(i,j) FROM t1; CREATE VIEW v1 AS SELECT COALESCE(i,j) FROM t1;
DESCRIBE v1; DESCRIBE v1;
Field Type Null Key Default Extra 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; CREATE TABLE t2 SELECT COALESCE(i,j) FROM t1;
DESCRIBE t2; DESCRIBE t2;
Field Type Null Key Default Extra Field Type Null Key Default Extra
......
...@@ -81,3 +81,14 @@ drop view v1,v2,v3; ...@@ -81,3 +81,14 @@ drop view v1,v2,v3;
--disable_metadata --disable_metadata
# End of 4.1 tests # End of 4.1 tests
#
# Bug #28492: subselect returns LONG in >5.0.24a and LONGLONG in <=5.0.24a
#
--enable_metadata
select a.* from (select 2147483648 as v_large) a;
select a.* from (select 214748364 as v_small) a;
--disable_metadata
--echo End of 5.0 tests
...@@ -675,7 +675,7 @@ public: ...@@ -675,7 +675,7 @@ public:
void sort_string(char *buff,uint length); void sort_string(char *buff,uint length);
uint32 pack_length() const { return 4; } uint32 pack_length() const { return 4; }
void sql_type(String &str) const; void sql_type(String &str) const;
uint32 max_display_length() { return 11; } uint32 max_display_length() { return MY_INT32_NUM_DECIMAL_DIGITS; }
}; };
......
...@@ -8869,8 +8869,13 @@ static Field *create_tmp_field_from_item(THD *thd, Item *item, TABLE *table, ...@@ -8869,8 +8869,13 @@ static Field *create_tmp_field_from_item(THD *thd, Item *item, TABLE *table,
item->name, table, item->decimals, TRUE); item->name, table, item->decimals, TRUE);
break; break;
case INT_RESULT: case INT_RESULT:
/* Select an integer type with the minimal fit precision */ /*
if (item->max_length > MY_INT32_NUM_DECIMAL_DIGITS) Select an integer type with the minimal fit precision.
MY_INT32_NUM_DECIMAL_DIGITS is sign inclusive, don't consider the sign.
Values with MY_INT32_NUM_DECIMAL_DIGITS digits may or may not fit into
Field_long : make them Field_longlong.
*/
if (item->max_length >= (MY_INT32_NUM_DECIMAL_DIGITS - 1))
new_field=new Field_longlong(item->max_length, maybe_null, new_field=new Field_longlong(item->max_length, maybe_null,
item->name, table, item->unsigned_flag); item->name, table, item->unsigned_flag);
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment