Commit b6446add authored by monty@mashka.mysql.fi's avatar monty@mashka.mysql.fi
Browse files

Merge work:/home/bk/mysql into mashka.mysql.fi:/home/my/mysql-3.23

parents a7fe266e e1af5fb2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -249,6 +249,7 @@ SLAVE_MYPID="$MYRUN_DIR/mysqld-slave.pid"
SLAVE_MYLOG="$MYSQL_TEST_DIR/var/log/mysqld-slave.log"
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"

export MASTER_MYPORT
@@ -344,7 +345,7 @@ SLAVE_MYSQLD=$MYSQLD #this can be changed later if we are doing gcov
#--
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=$?
   if [ $exit_code != 0 ]; then
	echo "Error: Could not start $2, exit code $exit_code";
+17 −0
Original line number Diff line number Diff line
@@ -126,3 +126,20 @@ order_id product_id product_type
3d7ce39b5d4b3e3d22aaafe9b633de51	5880836	3
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
+21 −0
Original line number Diff line number Diff line
@@ -135,3 +135,24 @@ select * from t1, t2 where t1.id = t2.id;
alter table t1 add key id (id);
select * from t1, t2 where t1.id = t2.id;
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;
+4 −0
Original line number Diff line number Diff line
@@ -739,7 +739,11 @@ static sig_handler print_signal_warning(int sig)
void unireg_end(int signal_number __attribute__((unused)))
{
  clean_up();
#ifdef SIGNALS_DONT_BREAK_READ
  exit(0);
#else
  pthread_exit(0);				// Exit is in main thread
#endif
}


+12 −6
Original line number Diff line number Diff line
@@ -931,8 +931,11 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
    if (!(res= value->val_str(&tmp)))
      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)
    {
      tmp.copy(*res);				// Get own copy
@@ -1011,8 +1014,10 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
      type != Item_func::EQUAL_FUNC)
    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 &&
      value->result_type() != STRING_RESULT &&
      field->cmp_type() != value->result_type())
@@ -1020,6 +1025,7 @@ get_mm_leaf(Field *field,KEY_PART *key_part,

  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)
    {
      /* convert column_name <=> NULL -> column_name IS NULL */
@@ -1029,14 +1035,14 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
      *str = 1;
      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
  char *str= (char*) sql_alloc(key_part->part_length+maybe_null);
  if (!str)
    DBUG_RETURN(0);
  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);
  if (!(tree=new SEL_ARG(field,str,str)))
    DBUG_RETURN(0);