Merge bk-internal:/home/bk/mysql-5.1-opt
into macbook.gmz:/Users/kgeorge/mysql/work/merge-5.1-opt
This commit is contained in:
commit
7fd3cd9e41
@ -2933,3 +2933,4 @@ win/vs71cache.txt
|
|||||||
win/vs8cache.txt
|
win/vs8cache.txt
|
||||||
zlib/*.ds?
|
zlib/*.ds?
|
||||||
zlib/*.vcproj
|
zlib/*.vcproj
|
||||||
|
libmysqld/sql_servers.cc
|
||||||
|
@ -177,11 +177,46 @@ drop table t1;
|
|||||||
select abs(-2) * -2;
|
select abs(-2) * -2;
|
||||||
abs(-2) * -2
|
abs(-2) * -2
|
||||||
-4
|
-4
|
||||||
create table t1 (i int);
|
CREATE TABLE t1 (a INT);
|
||||||
insert into t1 values (1);
|
INSERT INTO t1 VALUES (1),(1),(1),(2);
|
||||||
select rand(i) from t1;
|
SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
ERROR HY000: Incorrect arguments to RAND
|
FROM t1;
|
||||||
drop table t1;
|
CAST(RAND(2) * 1000 AS UNSIGNED) CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
656 405
|
||||||
|
122 405
|
||||||
|
645 405
|
||||||
|
858 656
|
||||||
|
SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
FROM t1 WHERE a = 1;
|
||||||
|
CAST(RAND(2) * 1000 AS UNSIGNED) CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
656 405
|
||||||
|
122 405
|
||||||
|
645 405
|
||||||
|
INSERT INTO t1 VALUES (3);
|
||||||
|
SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
FROM t1;
|
||||||
|
CAST(RAND(2) * 1000 AS UNSIGNED) CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
656 405
|
||||||
|
122 405
|
||||||
|
645 405
|
||||||
|
858 656
|
||||||
|
354 906
|
||||||
|
SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
FROM t1 WHERE a = 1;
|
||||||
|
CAST(RAND(2) * 1000 AS UNSIGNED) CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
656 405
|
||||||
|
122 405
|
||||||
|
645 405
|
||||||
|
PREPARE stmt FROM
|
||||||
|
"SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(?) * 1000 AS UNSIGNED)
|
||||||
|
FROM t1 WHERE a = 1";
|
||||||
|
set @var=2;
|
||||||
|
EXECUTE stmt USING @var;
|
||||||
|
CAST(RAND(2) * 1000 AS UNSIGNED) CAST(RAND(?) * 1000 AS UNSIGNED)
|
||||||
|
656 656
|
||||||
|
122 122
|
||||||
|
645 645
|
||||||
|
DROP TABLE t1;
|
||||||
create table t1 (a varchar(90), ts datetime not null, index (a)) engine=innodb default charset=utf8;
|
create table t1 (a varchar(90), ts datetime not null, index (a)) engine=innodb default charset=utf8;
|
||||||
insert into t1 values ('http://www.foo.com/', now());
|
insert into t1 values ('http://www.foo.com/', now());
|
||||||
select a from t1 where a='http://www.foo.com/' order by abs(timediff(ts, 0));
|
select a from t1 where a='http://www.foo.com/' order by abs(timediff(ts, 0));
|
||||||
|
@ -718,3 +718,14 @@ desc t1;
|
|||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
GeomFromText('point(1 1)') geometry NO
|
GeomFromText('point(1 1)') geometry NO
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (f1 tinyint(1), f2 char(1), f3 varchar(1), f4 geometry, f5 datetime);
|
||||||
|
create view v1 as select * from t1;
|
||||||
|
desc v1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
f1 tinyint(1) YES NULL
|
||||||
|
f2 char(1) YES NULL
|
||||||
|
f3 varchar(1) YES NULL
|
||||||
|
f4 geometry YES NULL
|
||||||
|
f5 datetime YES NULL
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
@ -3447,8 +3447,6 @@ SELECT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
|
|||||||
a
|
a
|
||||||
1
|
1
|
||||||
drop table t2, t1;
|
drop table t2, t1;
|
||||||
create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
|
|
||||||
ERROR HY000: The used table type doesn't support SPATIAL indexes
|
|
||||||
CREATE TABLE t1 ( a int ) ENGINE=innodb;
|
CREATE TABLE t1 ( a int ) ENGINE=innodb;
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t1 VALUES (1);
|
INSERT INTO t1 VALUES (1);
|
||||||
|
@ -460,3 +460,5 @@ ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
|||||||
insert into t1 (fl) values (pointfromtext('point(1,1)'));
|
insert into t1 (fl) values (pointfromtext('point(1,1)'));
|
||||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
|
||||||
|
ERROR HY000: The used table type doesn't support SPATIAL indexes
|
||||||
|
@ -2060,17 +2060,6 @@ CALL p1();
|
|||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
create table t1 (f1 tinyint(1), f2 char(1), f3 varchar(1), f4 geometry, f5 datetime);
|
|
||||||
create view v1 as select * from t1;
|
|
||||||
desc v1;
|
|
||||||
Field Type Null Key Default Extra
|
|
||||||
f1 tinyint(1) YES NULL
|
|
||||||
f2 char(1) YES NULL
|
|
||||||
f3 varchar(1) YES NULL
|
|
||||||
f4 geometry YES NULL
|
|
||||||
f5 datetime YES NULL
|
|
||||||
drop view v1;
|
|
||||||
drop table t1;
|
|
||||||
create table t1(f1 datetime);
|
create table t1(f1 datetime);
|
||||||
insert into t1 values('2005.01.01 12:0:0');
|
insert into t1 values('2005.01.01 12:0:0');
|
||||||
create view v1 as select f1, subtime(f1, '1:1:1') as sb from t1;
|
create view v1 as select f1, subtime(f1, '1:1:1') as sb from t1;
|
||||||
|
@ -115,11 +115,25 @@ select abs(-2) * -2;
|
|||||||
#
|
#
|
||||||
# Bug #6172 RAND(a) should only accept constant values as arguments
|
# Bug #6172 RAND(a) should only accept constant values as arguments
|
||||||
#
|
#
|
||||||
create table t1 (i int);
|
CREATE TABLE t1 (a INT);
|
||||||
insert into t1 values (1);
|
|
||||||
--error 1210
|
INSERT INTO t1 VALUES (1),(1),(1),(2);
|
||||||
select rand(i) from t1;
|
SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
drop table t1;
|
FROM t1;
|
||||||
|
SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
FROM t1 WHERE a = 1;
|
||||||
|
INSERT INTO t1 VALUES (3);
|
||||||
|
SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
FROM t1;
|
||||||
|
SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(a) * 1000 AS UNSIGNED)
|
||||||
|
FROM t1 WHERE a = 1;
|
||||||
|
PREPARE stmt FROM
|
||||||
|
"SELECT CAST(RAND(2) * 1000 AS UNSIGNED), CAST(RAND(?) * 1000 AS UNSIGNED)
|
||||||
|
FROM t1 WHERE a = 1";
|
||||||
|
set @var=2;
|
||||||
|
EXECUTE stmt USING @var;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #14009: use of abs() on null value causes problems with filesort
|
# Bug #14009: use of abs() on null value causes problems with filesort
|
||||||
|
@ -428,3 +428,13 @@ drop table t1;
|
|||||||
create table t1 select GeomFromText('point(1 1)');
|
create table t1 select GeomFromText('point(1 1)');
|
||||||
desc t1;
|
desc t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #11335 View redefines column types
|
||||||
|
#
|
||||||
|
create table t1 (f1 tinyint(1), f2 char(1), f3 varchar(1), f4 geometry, f5 datetime);
|
||||||
|
create view v1 as select * from t1;
|
||||||
|
desc v1;
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
@ -2488,12 +2488,6 @@ SELECT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
|
|||||||
|
|
||||||
drop table t2, t1;
|
drop table t2, t1;
|
||||||
|
|
||||||
#
|
|
||||||
# Bug #15680 (SPATIAL key in innodb)
|
|
||||||
#
|
|
||||||
--error ER_TABLE_CANT_HANDLE_SPKEYS
|
|
||||||
create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test optimize on table with open transaction
|
# Test optimize on table with open transaction
|
||||||
#
|
#
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
SET storage_engine=innodb;
|
SET storage_engine=innodb;
|
||||||
--source include/gis_generic.inc
|
--source include/gis_generic.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #15680 (SPATIAL key in innodb)
|
||||||
|
#
|
||||||
|
--error ER_TABLE_CANT_HANDLE_SPKEYS
|
||||||
|
create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
|
||||||
|
@ -1878,15 +1878,6 @@ DROP PROCEDURE p1;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
|
||||||
# Bug #11335 View redefines column types
|
|
||||||
#
|
|
||||||
create table t1 (f1 tinyint(1), f2 char(1), f3 varchar(1), f4 geometry, f5 datetime);
|
|
||||||
create view v1 as select * from t1;
|
|
||||||
desc v1;
|
|
||||||
drop view v1;
|
|
||||||
drop table t1;
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #11760 Typo in Item_func_add_time::print() results in NULLs returned
|
# Bug #11760 Typo in Item_func_add_time::print() results in NULLs returned
|
||||||
# subtime() in view
|
# subtime() in view
|
||||||
|
@ -2042,6 +2042,18 @@ my_decimal *Item_func_round::decimal_op(my_decimal *decimal_value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Item_func_rand::seed_random(Item *arg)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
TODO: do not do reinit 'rand' for every execute of PS/SP if
|
||||||
|
args[0] is a constant.
|
||||||
|
*/
|
||||||
|
uint32 tmp= (uint32) arg->val_int();
|
||||||
|
randominit(rand, (uint32) (tmp*0x10001L+55555555L),
|
||||||
|
(uint32) (tmp*0x10000001L));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Item_func_rand::fix_fields(THD *thd,Item **ref)
|
bool Item_func_rand::fix_fields(THD *thd,Item **ref)
|
||||||
{
|
{
|
||||||
if (Item_real_func::fix_fields(thd, ref))
|
if (Item_real_func::fix_fields(thd, ref))
|
||||||
@ -2049,11 +2061,6 @@ bool Item_func_rand::fix_fields(THD *thd,Item **ref)
|
|||||||
used_tables_cache|= RAND_TABLE_BIT;
|
used_tables_cache|= RAND_TABLE_BIT;
|
||||||
if (arg_count)
|
if (arg_count)
|
||||||
{ // Only use argument once in query
|
{ // Only use argument once in query
|
||||||
if (!args[0]->const_during_execution())
|
|
||||||
{
|
|
||||||
my_error(ER_WRONG_ARGUMENTS, MYF(0), "RAND");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
Allocate rand structure once: we must use thd->stmt_arena
|
Allocate rand structure once: we must use thd->stmt_arena
|
||||||
to create rand in proper mem_root if it's a prepared statement or
|
to create rand in proper mem_root if it's a prepared statement or
|
||||||
@ -2065,20 +2072,9 @@ bool Item_func_rand::fix_fields(THD *thd,Item **ref)
|
|||||||
if (!rand && !(rand= (struct rand_struct*)
|
if (!rand && !(rand= (struct rand_struct*)
|
||||||
thd->stmt_arena->alloc(sizeof(*rand))))
|
thd->stmt_arena->alloc(sizeof(*rand))))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
/*
|
|
||||||
PARAM_ITEM is returned if we're in statement prepare and consequently
|
if (args[0]->const_item())
|
||||||
no placeholder value is set yet.
|
seed_random (args[0]);
|
||||||
*/
|
|
||||||
if (args[0]->type() != PARAM_ITEM)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
TODO: do not do reinit 'rand' for every execute of PS/SP if
|
|
||||||
args[0] is a constant.
|
|
||||||
*/
|
|
||||||
uint32 tmp= (uint32) args[0]->val_int();
|
|
||||||
randominit(rand, (uint32) (tmp*0x10001L+55555555L),
|
|
||||||
(uint32) (tmp*0x10000001L));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2108,6 +2104,8 @@ void Item_func_rand::update_used_tables()
|
|||||||
double Item_func_rand::val_real()
|
double Item_func_rand::val_real()
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
|
if (arg_count && !args[0]->const_item())
|
||||||
|
seed_random (args[0]);
|
||||||
return my_rnd(rand);
|
return my_rnd(rand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -679,6 +679,8 @@ public:
|
|||||||
bool const_item() const { return 0; }
|
bool const_item() const { return 0; }
|
||||||
void update_used_tables();
|
void update_used_tables();
|
||||||
bool fix_fields(THD *thd, Item **ref);
|
bool fix_fields(THD *thd, Item **ref);
|
||||||
|
private:
|
||||||
|
void seed_random (Item * val);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user