Commit a073857c authored by unknown's avatar unknown

Merge lgrimmer@work.mysql.com:/home/bk/mysql

into mysql.com:/space/my/mysql-3.23

parents e2886884 001446d9
...@@ -249,6 +249,7 @@ SLAVE_MYPID="$MYRUN_DIR/mysqld-slave.pid" ...@@ -249,6 +249,7 @@ SLAVE_MYPID="$MYRUN_DIR/mysqld-slave.pid"
SLAVE_MYLOG="$MYSQL_TEST_DIR/var/log/mysqld-slave.log" SLAVE_MYLOG="$MYSQL_TEST_DIR/var/log/mysqld-slave.log"
SLAVE_MYERR="$MYSQL_TEST_DIR/var/log/mysqld-slave.err" SLAVE_MYERR="$MYSQL_TEST_DIR/var/log/mysqld-slave.err"
CLIENT_MYLOG="$MYSQL_TEST_DIR/var/log/client.log"
SMALL_SERVER="-O key_buffer_size=1M -O sort_buffer=256K -O max_heap_table_size=1M" SMALL_SERVER="-O key_buffer_size=1M -O sort_buffer=256K -O max_heap_table_size=1M"
export MASTER_MYPORT export MASTER_MYPORT
...@@ -344,7 +345,7 @@ SLAVE_MYSQLD=$MYSQLD #this can be changed later if we are doing gcov ...@@ -344,7 +345,7 @@ SLAVE_MYSQLD=$MYSQLD #this can be changed later if we are doing gcov
#-- #--
wait_for_server_start () wait_for_server_start ()
{ {
$MYSQLADMIN --no-defaults -u $DBUSER --silent -O connect_timeout=10 -w3 --host=$hostname --port=$1 ping >/dev/null 2>&1 $MYSQLADMIN --no-defaults -u $DBUSER --silent -O connect_timeout=10 -w3 --host=$hostname --port=$1 ping >> $CLIENT_MYLOG 2>&1
exit_code=$? exit_code=$?
if [ $exit_code != 0 ]; then if [ $exit_code != 0 ]; then
echo "Error: Could not start $2, exit code $exit_code"; echo "Error: Could not start $2, exit code $exit_code";
......
...@@ -26,9 +26,6 @@ ...@@ -26,9 +26,6 @@
1 1 1 1 1 1
-1.49 or -1.49 0.6 or 0.6 -1.49 or -1.49 0.6 or 0.6
1 1 1 1
start ctime1 ctime2
start ctime1 ctime2
2002-11-04 00:00:00 20021029165106 20021105164731
5 between 0 and 10 between 0 and 1 (5 between 0 and 10) between 0 and 1 5 between 0 and 10 between 0 and 1 (5 between 0 and 10) between 0 and 1
0 1 0 1
1 and 2 between 2 and 10 2 between 2 and 10 and 1 1 and 2 between 2 and 10 2 between 2 and 10 and 1
......
...@@ -220,3 +220,8 @@ to_days("0000-00-00") to_days(d) to_days(dt) to_days(t) to_days(c) ...@@ -220,3 +220,8 @@ to_days("0000-00-00") to_days(d) to_days(dt) to_days(t) to_days(c)
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
extract(MONTH FROM "0000-00-00") extract(MONTH FROM d) extract(MONTH FROM dt) extract(MONTH FROM t) extract(MONTH FROM c) extract(MONTH FROM "0000-00-00") extract(MONTH FROM d) extract(MONTH FROM dt) extract(MONTH FROM t) extract(MONTH FROM c)
0 0 0 0 0 0 0 0 0 0
start ctime1 ctime2
start ctime1 ctime2
2002-11-04 00:00:00 20021029165106 20021105164731
start ctime1 ctime2
2002-11-04 00:00:00 2002-10-29 16:51:06 2002-11-05 16:47:31
...@@ -126,3 +126,20 @@ order_id product_id product_type ...@@ -126,3 +126,20 @@ order_id product_id product_type
3d7ce39b5d4b3e3d22aaafe9b633de51 5880836 3 3d7ce39b5d4b3e3d22aaafe9b633de51 5880836 3
id id id id
id id id id
id id2
NULL 0
1 1
id id2
NULL 0
id id2
NULL 0
1 1
id id2
NULL 0
1 1
id id2
1 1
id id2
1 1
id id2
1 1
...@@ -15,16 +15,6 @@ select 2 between 1 and 3, "monty" between "max" and "my",2=2 and "monty" between ...@@ -15,16 +15,6 @@ select 2 between 1 and 3, "monty" between "max" and "my",2=2 and "monty" between
select 'b' between 'a' and 'c', 'B' between 'a' and 'c'; select 'b' between 'a' and 'c', 'B' between 'a' and 'c';
select 2 in (3,2,5,9,5,1),"monty" in ("david","monty","allan"), 1.2 in (1.4,1.2,1.0); select 2 in (3,2,5,9,5,1),"monty" in ("david","monty","allan"), 1.2 in (1.4,1.2,1.0);
select -1.49 or -1.49,0.6 or 0.6; select -1.49 or -1.49,0.6 or 0.6;
drop table if exists t1,t2;
CREATE TABLE t1 ( start datetime default NULL) TYPE=MyISAM;
INSERT INTO t1 VALUES ('2002-10-21 00:00:00');
INSERT INTO t1 VALUES ('2002-10-28 00:00:00');
INSERT INTO t1 VALUES ('2002-11-04 00:00:00');
CREATE TABLE t2 ( ctime1 timestamp(14) NOT NULL, ctime2 timestamp(14) NOT NULL) TYPE=MyISAM;
INSERT INTO t2 VALUES (20021029165106,20021105164731);
select * from t1, t2 where t1.start between t2.ctime1 and t2.ctime2;
select * from t1, t2 where t1.start >= t2.ctime1 and t1.start <= t2.ctime2;
drop table if exists t1,t2;
# #
# Wrong usage of functions # Wrong usage of functions
......
...@@ -150,3 +150,21 @@ select yearweek("0000-00-00"),yearweek(d),yearweek(dt),yearweek(t),yearweek(c) f ...@@ -150,3 +150,21 @@ select yearweek("0000-00-00"),yearweek(d),yearweek(dt),yearweek(t),yearweek(c) f
select to_days("0000-00-00"),to_days(d),to_days(dt),to_days(t),to_days(c) from t1; select to_days("0000-00-00"),to_days(d),to_days(dt),to_days(t),to_days(c) from t1;
select extract(MONTH FROM "0000-00-00"),extract(MONTH FROM d),extract(MONTH FROM dt),extract(MONTH FROM t),extract(MONTH FROM c) from t1; select extract(MONTH FROM "0000-00-00"),extract(MONTH FROM d),extract(MONTH FROM dt),extract(MONTH FROM t),extract(MONTH FROM c) from t1;
drop table t1; drop table t1;
#
# Test problem with TIMESTAMP and BETWEEN
#
CREATE TABLE t1 ( start datetime default NULL);
INSERT INTO t1 VALUES ('2002-10-21 00:00:00'),('2002-10-28 00:00:00'),('2002-11-04 00:00:00');
CREATE TABLE t2 ( ctime1 timestamp(14) NOT NULL, ctime2 timestamp(14) NOT NULL);
INSERT INTO t2 VALUES (20021029165106,20021105164731);
CREATE TABLE t3 (ctime1 char(19) NOT NULL, ctime2 char(19) NOT NULL);
INSERT INTO t3 VALUES ("2002-10-29 16:51:06","2002-11-05 16:47:31");
# The following statement should be fixed to return a row in 4.1
select * from t1, t2 where t1.start between t2.ctime1 and t2.ctime2;
select * from t1, t2 where t1.start >= t2.ctime1 and t1.start <= t2.ctime2;
select * from t1, t3 where t1.start between t3.ctime1 and t3.ctime2;
drop table t1,t2,t3;
...@@ -135,3 +135,24 @@ select * from t1, t2 where t1.id = t2.id; ...@@ -135,3 +135,24 @@ select * from t1, t2 where t1.id = t2.id;
alter table t1 add key id (id); alter table t1 add key id (id);
select * from t1, t2 where t1.id = t2.id; select * from t1, t2 where t1.id = t2.id;
drop table t1,t2; drop table t1,t2;
#
# Check bug when doing <=> NULL on an indexed null field
#
create table t1 (
id integer,
id2 integer not null,
index (id),
index (id2)
);
insert into t1 values(null,null),(1,1);
select * from t1;
select * from t1 where id <=> null;
select * from t1 where id <=> null or id > 0;
select * from t1 where id is null or id > 0;
select * from t1 where id2 <=> null or id2 > 0;
select * from t1 where id2 is null or id2 > 0;
delete from t1 where id <=> NULL;
select * from t1;
drop table t1;
...@@ -739,7 +739,11 @@ static sig_handler print_signal_warning(int sig) ...@@ -739,7 +739,11 @@ static sig_handler print_signal_warning(int sig)
void unireg_end(int signal_number __attribute__((unused))) void unireg_end(int signal_number __attribute__((unused)))
{ {
clean_up(); clean_up();
#ifdef SIGNALS_DONT_BREAK_READ
exit(0);
#else
pthread_exit(0); // Exit is in main thread pthread_exit(0); // Exit is in main thread
#endif
} }
......
...@@ -931,8 +931,11 @@ get_mm_leaf(Field *field,KEY_PART *key_part, ...@@ -931,8 +931,11 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
if (!(res= value->val_str(&tmp))) if (!(res= value->val_str(&tmp)))
DBUG_RETURN(&null_element); DBUG_RETURN(&null_element);
// Check if this was a function. This should have be optimized away /*
// in the sql_select.cc TODO:
Check if this was a function. This should have be optimized away
in the sql_select.cc
*/
if (res != &tmp) if (res != &tmp)
{ {
tmp.copy(*res); // Get own copy tmp.copy(*res); // Get own copy
...@@ -1011,8 +1014,10 @@ get_mm_leaf(Field *field,KEY_PART *key_part, ...@@ -1011,8 +1014,10 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
type != Item_func::EQUAL_FUNC) type != Item_func::EQUAL_FUNC)
DBUG_RETURN(0); // Can't optimize this DBUG_RETURN(0); // Can't optimize this
/* We can't always use indexes when comparing a string index to a number */ /*
/* cmp_type() is checked to allow compare of dates to numbers */ We can't always use indexes when comparing a string index to a number
cmp_type() is checked to allow compare of dates to numbers
*/
if (field->result_type() == STRING_RESULT && if (field->result_type() == STRING_RESULT &&
value->result_type() != STRING_RESULT && value->result_type() != STRING_RESULT &&
field->cmp_type() != value->result_type()) field->cmp_type() != value->result_type())
...@@ -1020,6 +1025,7 @@ get_mm_leaf(Field *field,KEY_PART *key_part, ...@@ -1020,6 +1025,7 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
if (value->save_in_field(field)) if (value->save_in_field(field))
{ {
/* This happens when we try to insert a NULL field in a not null column */
if (type == Item_func::EQUAL_FUNC) if (type == Item_func::EQUAL_FUNC)
{ {
/* convert column_name <=> NULL -> column_name IS NULL */ /* convert column_name <=> NULL -> column_name IS NULL */
...@@ -1029,14 +1035,14 @@ get_mm_leaf(Field *field,KEY_PART *key_part, ...@@ -1029,14 +1035,14 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
*str = 1; *str = 1;
DBUG_RETURN(new SEL_ARG(field,str,str)); DBUG_RETURN(new SEL_ARG(field,str,str));
} }
DBUG_RETURN(&null_element); // NULL is never true DBUG_RETURN(&null_element); // cmp with NULL is never true
} }
// Get local copy of key // Get local copy of key
char *str= (char*) sql_alloc(key_part->part_length+maybe_null); char *str= (char*) sql_alloc(key_part->part_length+maybe_null);
if (!str) if (!str)
DBUG_RETURN(0); DBUG_RETURN(0);
if (maybe_null) if (maybe_null)
*str=0; // Not NULL *str= (char) field->is_real_null(); // Set to 1 if null
field->get_key_image(str+maybe_null,key_part->part_length); field->get_key_image(str+maybe_null,key_part->part_length);
if (!(tree=new SEL_ARG(field,str,str))) if (!(tree=new SEL_ARG(field,str,str)))
DBUG_RETURN(0); DBUG_RETURN(0);
......
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