summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2003-07-01 15:49:32 +0300
committerunknown <monty@mashka.mysql.fi>2003-07-01 15:49:32 +0300
commit14c8a0e536b6326a4ba759ba30377e8a9654b513 (patch)
treebae354dc2e20ca3c0b40b1b4c4625e5c52d4ea00
parent48272222a7e4013073f51825f996b2c979f29b6a (diff)
downloadmariadb-git-14c8a0e536b6326a4ba759ba30377e8a9654b513.tar.gz
Fix needed to support MERGE tables in different databases
mysql-test/r/merge.result: Test of MERGE table patch mysql-test/t/merge.test: Test of MERGE table patch
-rw-r--r--mysql-test/r/merge.result12
-rw-r--r--mysql-test/t/merge.test10
-rw-r--r--mysys/mf_loadpath.c6
-rw-r--r--mysys/my_symlink.c12
4 files changed, 24 insertions, 16 deletions
diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result
index f970aafe516..413277fee43 100644
--- a/mysql-test/r/merge.result
+++ b/mysql-test/r/merge.result
@@ -194,7 +194,7 @@ t5 CREATE TABLE `t5` (
alter table t5 type=myisam;
drop table t5, mysqltest.t6;
drop database mysqltest;
-drop table if exists t4,t3,t1,t2;
+drop table t4,t3,t1,t2;
create table t1 (c char(10)) type=myisam;
create table t2 (c char(10)) type=myisam;
create table t3 (c char(10)) union=(t1,t2) type=merge;
@@ -540,7 +540,11 @@ a b
6 1
6 2
6 3
-drop table if exists t6, t5, t4, t3, t2, t1;
+insert into t1 values (99,NULL);
+select * from t4 where a+0 > 90;
+a b
+99 1
+drop table t6, t5, t4, t3, t2, t1;
CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
INSERT INTO t1 VALUES (1,1), (2,1);
CREATE TABLE t2 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
@@ -552,7 +556,7 @@ max(b)
select max(b) from t1 where a = 2;
max(b)
1
-drop table if exists t3,t1,t2;
+drop table t3,t1,t2;
create table t1 (a int not null);
create table t2 (a int not null);
insert into t1 values (1);
@@ -571,7 +575,7 @@ select * from t6;
a
1
2
-drop table if exists t6, t3, t1, t2, t4, t5;
+drop table t6, t3, t1, t2, t4, t5;
CREATE TABLE t1 (
fileset_id tinyint(3) unsigned NOT NULL default '0',
file_code varchar(32) NOT NULL default '',
diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test
index 473e8aa9d00..01ba8986474 100644
--- a/mysql-test/t/merge.test
+++ b/mysql-test/t/merge.test
@@ -64,7 +64,7 @@ drop table t5, mysqltest.t6;
drop database mysqltest;
# Because of windows, it's important that we drop the merge tables first!
-drop table if exists t4,t3,t1,t2;
+drop table t4,t3,t1,t2;
create table t1 (c char(10)) type=myisam;
create table t2 (c char(10)) type=myisam;
@@ -188,7 +188,9 @@ select * from t1 order by a,b;
select * from t2 order by a,b;
select * from t5 order by a,b;
select * from t6 order by a,b;
-drop table if exists t6, t5, t4, t3, t2, t1;
+insert into t1 values (99,NULL);
+select * from t4 where a+0 > 90;
+drop table t6, t5, t4, t3, t2, t1;
CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
INSERT INTO t1 VALUES (1,1), (2,1);
@@ -197,7 +199,7 @@ INSERT INTO t2 VALUES (1,2), (2,2);
CREATE TABLE t3 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', KEY a (a,b)) TYPE=MRG_MyISAM UNION=(t1,t2);
select max(b) from t3 where a = 2;
select max(b) from t1 where a = 2;
-drop table if exists t3,t1,t2;
+drop table t3,t1,t2;
#
# temporary merge tables
@@ -214,7 +216,7 @@ 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 t6, t3, t1, t2, t4, t5;
+drop table t6, t3, t1, t2, t4, t5;
#
# testing merge::records_in_range and optimizer
diff --git a/mysys/mf_loadpath.c b/mysys/mf_loadpath.c
index 291ad62e297..2c90d9f90a6 100644
--- a/mysys/mf_loadpath.c
+++ b/mysys/mf_loadpath.c
@@ -39,10 +39,10 @@ my_string my_load_path(my_string to, const char *path,
(is_prefix((gptr) path,FN_PARENTDIR)) ||
! own_path_prefix)
{
- if (! my_getwd(buff,(uint) (FN_REFLEN-strlen(path)),MYF(0)))
- VOID(strcat(buff,path));
+ if (! my_getwd(buff,(uint) (FN_REFLEN+2-strlen(path)),MYF(0)))
+ VOID(strcat(buff,path+2));
else
- VOID(strmov(buff,path));
+ VOID(strmov(buff,path)); /* Return org file name */
}
else
VOID(strxmov(buff,own_path_prefix,path,NullS));
diff --git a/mysys/my_symlink.c b/mysys/my_symlink.c
index abef0096e28..b9468d42cfc 100644
--- a/mysys/my_symlink.c
+++ b/mysys/my_symlink.c
@@ -123,20 +123,22 @@ int my_realpath(char *to, const char *filename,
}
else
{
- /* Realpath didn't work; Use original name */
+ /*
+ Realpath didn't work; Use my_load_path() which is a poor substitute
+ original name but will at least be able to resolve paths that starts
+ with '.'.
+ */
DBUG_PRINT("error",("realpath failed with errno: %d", errno));
my_errno=errno;
if (MyFlags & MY_WME)
my_error(EE_REALPATH, MYF(0), filename, my_errno);
- if (to != filename)
- strmov(to,filename);
+ my_load_path(to, filename, NullS);
result= -1;
}
}
DBUG_RETURN(result);
#else
- if (to != filename)
- strmov(to,filename);
+ my_load_path(to, filename, NullS);
return 0;
#endif
}