Merge bk@192.168.21.1:mysql-4.1
into mysql.com:/d2/hf/mrg/mysql-4.1-opt
This commit is contained in:
commit
30b4f5d0dd
@ -281,4 +281,10 @@ DROP TABLE t1;
|
|||||||
select isnull(date(NULL)), isnull(cast(NULL as DATE));
|
select isnull(date(NULL)), isnull(cast(NULL as DATE));
|
||||||
isnull(date(NULL)) isnull(cast(NULL as DATE))
|
isnull(date(NULL)) isnull(cast(NULL as DATE))
|
||||||
1 1
|
1 1
|
||||||
|
SELECT CAST(cast('01-01-01' as date) AS UNSIGNED);
|
||||||
|
CAST(cast('01-01-01' as date) AS UNSIGNED)
|
||||||
|
20010101
|
||||||
|
SELECT CAST(cast('01-01-01' as date) AS SIGNED);
|
||||||
|
CAST(cast('01-01-01' as date) AS SIGNED)
|
||||||
|
20010101
|
||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
|
@ -376,3 +376,53 @@ i i i
|
|||||||
2 NULL 4
|
2 NULL 4
|
||||||
2 2 2
|
2 2 2
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
CREATE TABLE t1 (a int, b int default 0, c int default 1);
|
||||||
|
INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8);
|
||||||
|
INSERT INTO t1 (a) SELECT a + 8 FROM t1;
|
||||||
|
INSERT INTO t1 (a) SELECT a + 16 FROM t1;
|
||||||
|
CREATE TABLE t2 (a int, d int, e int default 0);
|
||||||
|
INSERT INTO t2 (a, d) VALUES (1,1),(2,2),(3,3),(4,4);
|
||||||
|
INSERT INTO t2 (a, d) SELECT a+4, a+4 FROM t2;
|
||||||
|
INSERT INTO t2 (a, d) SELECT a+8, a+8 FROM t2;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT STRAIGHT_JOIN t2.e FROM t1,t2 WHERE t2.d=1 AND t1.b=t2.e
|
||||||
|
ORDER BY t1.b, t1.c;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 32 Using temporary; Using filesort
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 16 Using where
|
||||||
|
SELECT STRAIGHT_JOIN t2.e FROM t1,t2 WHERE t2.d=1 AND t1.b=t2.e
|
||||||
|
ORDER BY t1.b, t1.c;
|
||||||
|
e
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -173,4 +173,10 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
select isnull(date(NULL)), isnull(cast(NULL as DATE));
|
select isnull(date(NULL)), isnull(cast(NULL as DATE));
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#23656: Wrong result of CAST from DATE to int
|
||||||
|
#
|
||||||
|
SELECT CAST(cast('01-01-01' as date) AS UNSIGNED);
|
||||||
|
SELECT CAST(cast('01-01-01' as date) AS SIGNED);
|
||||||
|
|
||||||
--echo End of 4.1 tests
|
--echo End of 4.1 tests
|
||||||
|
@ -326,4 +326,28 @@ select t1.i,t2.i,t3.i from t2 natural right join t3,t1 order by t1.i,t2.i,t3.i;
|
|||||||
select t1.i,t2.i,t3.i from t2 right join t3 on (t2.i=t3.i),t1 order by t1.i,t2.i,t3.i;
|
select t1.i,t2.i,t3.i from t2 right join t3 on (t2.i=t3.i),t1 order by t1.i,t2.i,t3.i;
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #27531: Query performance degredation in 4.1.22 and greater
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int, b int default 0, c int default 1);
|
||||||
|
|
||||||
|
INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8);
|
||||||
|
INSERT INTO t1 (a) SELECT a + 8 FROM t1;
|
||||||
|
INSERT INTO t1 (a) SELECT a + 16 FROM t1;
|
||||||
|
|
||||||
|
CREATE TABLE t2 (a int, d int, e int default 0);
|
||||||
|
|
||||||
|
INSERT INTO t2 (a, d) VALUES (1,1),(2,2),(3,3),(4,4);
|
||||||
|
INSERT INTO t2 (a, d) SELECT a+4, a+4 FROM t2;
|
||||||
|
INSERT INTO t2 (a, d) SELECT a+8, a+8 FROM t2;
|
||||||
|
|
||||||
|
# should use join cache
|
||||||
|
EXPLAIN
|
||||||
|
SELECT STRAIGHT_JOIN t2.e FROM t1,t2 WHERE t2.d=1 AND t1.b=t2.e
|
||||||
|
ORDER BY t1.b, t1.c;
|
||||||
|
SELECT STRAIGHT_JOIN t2.e FROM t1,t2 WHERE t2.d=1 AND t1.b=t2.e
|
||||||
|
ORDER BY t1.b, t1.c;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -477,7 +477,8 @@ longlong Item_func_signed::val_int()
|
|||||||
longlong value;
|
longlong value;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
if (args[0]->cast_to_int_type() != STRING_RESULT)
|
if (args[0]->cast_to_int_type() != STRING_RESULT ||
|
||||||
|
args[0]->result_as_longlong())
|
||||||
{
|
{
|
||||||
value= args[0]->val_int();
|
value= args[0]->val_int();
|
||||||
null_value= args[0]->null_value;
|
null_value= args[0]->null_value;
|
||||||
@ -529,7 +530,8 @@ longlong Item_func_unsigned::val_int()
|
|||||||
return (longlong) (dvalue + (dvalue > 0 ? 0.5 : -0.5));
|
return (longlong) (dvalue + (dvalue > 0 ? 0.5 : -0.5));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args[0]->cast_to_int_type() != STRING_RESULT)
|
if (args[0]->cast_to_int_type() != STRING_RESULT ||
|
||||||
|
args[0]->result_as_longlong())
|
||||||
{
|
{
|
||||||
value= args[0]->val_int();
|
value= args[0]->val_int();
|
||||||
null_value= args[0]->null_value;
|
null_value= args[0]->null_value;
|
||||||
|
@ -3939,14 +3939,17 @@ make_join_readinfo(JOIN *join, uint options)
|
|||||||
disable join cache because it will change the ordering of the results.
|
disable join cache because it will change the ordering of the results.
|
||||||
Code handles sort table that is at any location (not only first after
|
Code handles sort table that is at any location (not only first after
|
||||||
the const tables) despite the fact that it's currently prohibited.
|
the const tables) despite the fact that it's currently prohibited.
|
||||||
|
We must disable join cache if the first non-const table alone is
|
||||||
|
ordered. If there is a temp table the ordering is done as a last
|
||||||
|
operation and doesn't prevent join cache usage.
|
||||||
*/
|
*/
|
||||||
if (!ordered_set &&
|
if (!ordered_set && !join->need_tmp &&
|
||||||
(table == join->sort_by_table &&
|
((table == join->sort_by_table &&
|
||||||
(!join->order || join->skip_sort_order ||
|
(!join->order || join->skip_sort_order ||
|
||||||
test_if_skip_sort_order(tab, join->order, join->select_limit,
|
test_if_skip_sort_order(tab, join->order, join->select_limit,
|
||||||
1))
|
1))
|
||||||
) ||
|
) ||
|
||||||
(join->sort_by_table == (TABLE *) 1 && i != join->const_tables))
|
(join->sort_by_table == (TABLE *) 1 && i != join->const_tables)))
|
||||||
ordered_set= 1;
|
ordered_set= 1;
|
||||||
|
|
||||||
switch (tab->type) {
|
switch (tab->type) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user