Commit 27d07047 authored by serg@sergbook.mysql.com's avatar serg@sergbook.mysql.com
Browse files

TEMPORARY MERGE tables are allowed

parent f7da25ec
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -130,3 +130,9 @@ a
a	b
1	1
1	2
a
1
2
a
1
2
+19 −0
Original line number Diff line number Diff line
@@ -114,3 +114,22 @@ insert into t2 values (1,1),(2,2),(0,0),(4,4),(5,5),(6,6);
flush tables;
select * from t3 where a=1 order by b limit 2;
drop table t3,t1,t2;

#
# temporary merge tables
#
drop table if exists t1, t2, t3, t4, t5, t6;
create table t1 (a int not null);
create table t2 (a int not null);
insert into t1 values (1);
insert into t2 values (2);
create temporary table t3 (a int not null) TYPE=MERGE UNION=(t1,t2);
select * from t3;
create temporary table t4 (a int not null);
create temporary table t5 (a int not null);
insert into t4 values (1);
insert into t5 values (2);
create temporary table t6 (a int not null) TYPE=MERGE UNION=(t4,t5);
select * from t6;
drop table if exists t1, t2, t3, t4, t5, t6;
+22 −1
Original line number Diff line number Diff line
@@ -264,7 +264,28 @@ int ha_myisammrg::create(const char *name, register TABLE *form,
					sizeof(char*))))
    DBUG_RETURN(1);
  for (pos=table_names ; tables ; tables=tables->next)
    *pos++= tables->real_name;
  {
    char *table_name;
    if (create_info->options & HA_LEX_CREATE_TMP_TABLE)
    {
      TABLE **tbl=find_temporary_table(current_thd,
          tables->db, tables->real_name);
      if (!tbl)
      {
        table_name=sql_alloc(1+
            my_snprintf(buff,FN_REFLEN,"%s/%s/%s",mysql_real_data_home,
                        tables->db, tables->real_name));
        if (!table_name)
          DBUG_RETURN(1);
        strcpy(table_name, buff);
      }
      else
        table_name=(*tbl)->path;
    }
    else
      table_name=tables->real_name;
    *pos++= table_name;
  }
  *pos=0;
  DBUG_RETURN(myrg_create(fn_format(buff,name,"","",2+4+16),
			  (const char **) table_names, (my_bool) 0));