summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <serg@janus.mylan>2008-01-09 18:51:05 +0100
committerunknown <serg@janus.mylan>2008-01-09 18:51:05 +0100
commit8116e16e556e6477ace80970be39302de72cbb6c (patch)
tree95a14cc67bf81eb462c0ebd184091c49e5358416
parentb8416bce47af1a5559df24fad647c025b2724400 (diff)
downloadmariadb-git-8116e16e556e6477ace80970be39302de72cbb6c.tar.gz
ignore 'moved' state in maria_open() if requested
storage/maria/ma_pagecache.c: Change mode to -rw-rw-r-- storage/maria/ma_open.c: ignore 'moved' state if requested storage/maria/maria_pack.c: ignore 'moved' state in maria_open() storage/maria/unittest/ma_test_all-t: avoid a warning if $output is undefined
-rw-r--r--storage/maria/ma_open.c4
-rw-r--r--[-rwxr-xr-x]storage/maria/ma_pagecache.c0
-rw-r--r--storage/maria/maria_def.h3
-rw-r--r--storage/maria/maria_pack.c2
-rwxr-xr-xstorage/maria/unittest/ma_test_all-t2
5 files changed, 8 insertions, 3 deletions
diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c
index 2acaa3db01d..97f0b57064e 100644
--- a/storage/maria/ma_open.c
+++ b/storage/maria/ma_open.c
@@ -396,7 +396,9 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
goto err;
}
- if (memcmp(share->base.uuid, maria_uuid, MY_UUID_SIZE))
+ if (share->state.changed & STATE_NOT_MOVABLE &&
+ !(open_flags & HA_OPEN_IGNORE_MOVED_STATE) &&
+ memcmp(share->base.uuid, maria_uuid, MY_UUID_SIZE))
{
if (open_flags & HA_OPEN_FOR_REPAIR)
share->state.changed|= STATE_MOVED;
diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c
index 4b0dada3a6b..4b0dada3a6b 100755..100644
--- a/storage/maria/ma_pagecache.c
+++ b/storage/maria/ma_pagecache.c
diff --git a/storage/maria/maria_def.h b/storage/maria/maria_def.h
index 05a1dbe2d56..c4ffc36f47d 100644
--- a/storage/maria/maria_def.h
+++ b/storage/maria/maria_def.h
@@ -41,6 +41,9 @@
#define MAX_NONMAPPED_INSERTS 1000
#define MARIA_MAX_TREE_LEVELS 32
+/* maria_open() flag, specific for maria_pack */
+#define HA_OPEN_IGNORE_MOVED_STATE (1U << 30)
+
struct st_transaction;
/* undef map from my_nosys; We need test-if-disk full */
diff --git a/storage/maria/maria_pack.c b/storage/maria/maria_pack.c
index dc0afdd4b64..734687de9cf 100644
--- a/storage/maria/maria_pack.c
+++ b/storage/maria/maria_pack.c
@@ -406,7 +406,7 @@ static MARIA_HA *open_isam_file(char *name,int mode)
MARIA_SHARE *share;
DBUG_ENTER("open_isam_file");
- if (!(isam_file=maria_open(name,mode,
+ if (!(isam_file=maria_open(name, mode, HA_OPEN_IGNORE_MOVED_STATE |
(opt_wait ? HA_OPEN_WAIT_IF_LOCKED :
HA_OPEN_ABORT_IF_LOCKED))))
{
diff --git a/storage/maria/unittest/ma_test_all-t b/storage/maria/unittest/ma_test_all-t
index 8bb7435f070..03f17273315 100755
--- a/storage/maria/unittest/ma_test_all-t
+++ b/storage/maria/unittest/ma_test_all-t
@@ -461,7 +461,7 @@ sub ok
print "not ok";
print " ]" if ($verbose);
print "\n";
- if ($verbose && length($output))
+ if ($verbose && defined($output) && length($output))
{
print "$output\n";
}