mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
TEMPORARY MERGE tables are allowed
This commit is contained in:
@@ -130,3 +130,9 @@ a
|
|||||||
a b
|
a b
|
||||||
1 1
|
1 1
|
||||||
1 2
|
1 2
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
@@ -114,3 +114,22 @@ insert into t2 values (1,1),(2,2),(0,0),(4,4),(5,5),(6,6);
|
|||||||
flush tables;
|
flush tables;
|
||||||
select * from t3 where a=1 order by b limit 2;
|
select * from t3 where a=1 order by b limit 2;
|
||||||
drop table t3,t1,t2;
|
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;
|
||||||
|
|
||||||
|
@@ -264,7 +264,28 @@ int ha_myisammrg::create(const char *name, register TABLE *form,
|
|||||||
sizeof(char*))))
|
sizeof(char*))))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
for (pos=table_names ; tables ; tables=tables->next)
|
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;
|
*pos=0;
|
||||||
DBUG_RETURN(myrg_create(fn_format(buff,name,"","",2+4+16),
|
DBUG_RETURN(myrg_create(fn_format(buff,name,"","",2+4+16),
|
||||||
(const char **) table_names, (my_bool) 0));
|
(const char **) table_names, (my_bool) 0));
|
||||||
|
Reference in New Issue
Block a user