Commit 029eb594 authored by unknown's avatar unknown
Browse files

Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1

into  sanja.is.com.ua:/home/bell/mysql/bk/work-bug8-4.1


sql/sql_class.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
parents 98448401 e7c25ed4
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
drop table if exists t1;
drop table if exists t1, t2, t3;
create table t1 (kill_id int);
insert into t1 values(connection_id());
select ((@id := kill_id) - kill_id) from t1;
@@ -17,3 +17,15 @@ select 4;
4
4
drop table t1;
create table t1 (id int primary key);
create table t2 (id int unsigned not null);
insert into t2 select id from t1;
create table t3 (kill_id int);
insert into t3 values(connection_id());
 select id from t1 where id in (select distinct id from t2);
select ((@id := kill_id) - kill_id) from t3;
((@id := kill_id) - kill_id)
0
kill @id;
ERROR 08S01: Server shutdown in progress
drop table t1, t2, t3;
+48 −1
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ connect (con2, localhost, root,,);
#remember id of con1
connection con1;
--disable_warnings
drop table if exists t1;
drop table if exists t1, t2, t3;
--enable_warnings

create table t1 (kill_id int);
@@ -40,4 +40,51 @@ connection con2;
select 4;
drop table t1;

disconnect con2;
connection default;
#
# BUG#14851: killing long running subquery processed via a temporary table.
#
create table t1 (id int primary key);
create table t2 (id int unsigned not null);

connect (conn1, localhost, root,,);
connection conn1;

-- disable_result_log
-- disable_query_log
let $1 = 4096;
while ($1)
{
  eval insert into t1 values ($1);
  dec $1;
}
-- enable_query_log
-- enable_result_log

insert into t2 select id from t1;

create table t3 (kill_id int);
insert into t3 values(connection_id());

-- disable_result_log
send select id from t1 where id in (select distinct id from t2);
-- enable_result_log

connect (conn2, localhost, root,,);
connection conn2;
select ((@id := kill_id) - kill_id) from t3;
-- sleep 1
kill @id;

connection conn1;
-- error 1053
reap;

disconnect conn1;
disconnect conn2;
connection default;

drop table t1, t2, t3;

# End of 4.1 tests
+3 −0
Original line number Diff line number Diff line
@@ -1681,7 +1681,10 @@ bool select_dumpvar::send_eof()

void TMP_TABLE_PARAM::init()
{
  DBUG_ENTER("TMP_TABLE_PARAM::init");
  DBUG_PRINT("enter", ("this: 0x%lx", (ulong)this));
  field_count= sum_func_count= func_count= hidden_field_count= 0;
  group_parts= group_length= group_null_parts= 0;
  quick_group= 1;
  DBUG_VOID_RETURN;
}
+14 −0
Original line number Diff line number Diff line
@@ -4107,6 +4107,20 @@ JOIN::join_free(bool full)
      problems in free_elements() as some of the elements are then deleted.
    */
    tmp_table_param.copy_funcs.empty();
    /*
      If we have tmp_join and 'this' JOIN is not tmp_join and
      tmp_table_param.copy_field's  of them are equal then we have to remove
      pointer to  tmp_table_param.copy_field from tmp_join, because it qill
      be removed in tmp_table_param.cleanup().
    */
    if (tmp_join &&
        tmp_join != this &&
        tmp_join->tmp_table_param.copy_field ==
        tmp_table_param.copy_field)
    {
      tmp_join->tmp_table_param.copy_field=
        tmp_join->tmp_table_param.save_copy_field= 0;
    }
    tmp_table_param.cleanup();
  }
  DBUG_VOID_RETURN;
+9 −2
Original line number Diff line number Diff line
@@ -228,6 +228,13 @@ class JOIN :public Sql_alloc
    init(thd_arg, fields_arg, select_options_arg, result_arg);
  }

  JOIN(JOIN &join)
    :fields_list(join.fields_list)
  {
    init(join.thd, join.fields_list, join.select_options,
         join.result);
  }

  void init(THD *thd_arg, List<Item> &fields_arg, ulong select_options_arg,
       select_result *result_arg)
  {
@@ -272,7 +279,7 @@ class JOIN :public Sql_alloc

    fields_list= fields_arg;
    bzero((char*) &keyuse,sizeof(keyuse));
    tmp_table_param.copy_field=0;
    tmp_table_param.init();
    tmp_table_param.end_write_records= HA_POS_ERROR;
    rollup.state= ROLLUP::STATE_NONE;
  }