Commit 846c46ea authored by unknown's avatar unknown
Browse files

Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt

into moonbone.local:/work/tmp_merge-4.1-opt-mysql

parents 495c6b13 6cf425b8
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -686,3 +686,7 @@ ERROR 42S22: Unknown column 'z' in 'field list'
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
ERROR 42S02: Unknown table 't2' in field list
drop table t1,t2;
CREATE TABLE t1 (a int PRIMARY KEY);
INSERT INTO t1 values (1), (2);
INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1;
DROP TABLE t1;
+13 −0
Original line number Diff line number Diff line
@@ -226,4 +226,17 @@ insert into t1(x,y) select x,z from t2 on duplicate key update x=values(z);
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
drop table t1,t2; 

#
# Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big 
#             tables
#

#Note: not an exsaustive test : just a check of the code path.
CREATE TABLE t1 (a int PRIMARY KEY);
INSERT INTO t1 values (1), (2);

INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1;

DROP TABLE t1;

# End of 4.1 tests
+8 −4
Original line number Diff line number Diff line
@@ -888,8 +888,9 @@ JOIN::optimize()
			   group_list ? 0 : select_distinct,
			   group_list && simple_group,
			   select_options,
			   (order == 0 || skip_sort_order) ? select_limit :
			   HA_POS_ERROR,
			   (order == 0 || skip_sort_order || 
                            test(select_options & OPTION_BUFFER_RESULT)) ? 
                             select_limit : HA_POS_ERROR,
			   (char *) "")))
      DBUG_RETURN(1);

@@ -5530,6 +5531,11 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
      keyinfo->key_length+=  key_part_info->length;
    }
  }
  else
  {
    set_if_smaller(table->max_rows, rows_limit);
    param->end_write_records= rows_limit;
  }

  if (distinct && field_count != param->hidden_field_count)
  {
@@ -5544,8 +5550,6 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
    null_pack_length-=hidden_null_pack_length;
    keyinfo->key_parts= ((field_count-param->hidden_field_count)+
			 test(null_pack_length));
    set_if_smaller(table->max_rows, rows_limit);
    param->end_write_records= rows_limit;
    table->distinct=1;
    table->keys=1;
    if (blob_count)