summaryrefslogtreecommitdiff
path: root/db/version_set.h
diff options
context:
space:
mode:
authorgabor@google.com <gabor@google.com@62dab493-f737-651d-591e-8d6aee1b9529>2011-07-15 00:20:57 +0000
committergabor@google.com <gabor@google.com@62dab493-f737-651d-591e-8d6aee1b9529>2011-07-15 00:20:57 +0000
commit6699c7ebe68fba9673ea7a78b54e0eb558102301 (patch)
treeacb156c19aadd00e7a14dcd26b76671d36808dae /db/version_set.h
parented154f6dc4f5ca82f20d2f3d4383cdbb07872594 (diff)
downloadleveldb-6699c7ebe68fba9673ea7a78b54e0eb558102301.tar.gz
Small tweaks and bugfixes for Issue 18 and 19.
Slight tweak to the no-overlap optimization: only push to level 2 to reduce the amount of wasted space when the same small key range is being repeatedly overwritten. Fix for Issue 18: Avoid failure on Windows by avoiding deletion of lock file until the end of DestroyDB(). Fix for Issue 19: Disregard sequence numbers when checking for overlap in sstable ranges. This fixes issue 19: when writing the same key over and over again, we would generate a sequence of sstables that were never merged together since their sequence numbers were disjoint. Don't ignore map/unmap error checks. Miscellaneous fixes for small problems Sanjay found while diagnosing issue/9 and issue/16 (corruption_testr failures). - log::Reader reports the record type when it finds an unexpected type. - log::Reader no longer reports an error when it encounters an expected zero record regardless of the setting of the "checksum" flag. - Added a missing forward declaration. - Documented a side-effects of larger write buffer sizes (longer recovery time). git-svn-id: https://leveldb.googlecode.com/svn/trunk@37 62dab493-f737-651d-591e-8d6aee1b9529
Diffstat (limited to 'db/version_set.h')
-rw-r--r--db/version_set.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/db/version_set.h b/db/version_set.h
index f00c35a..693fc6f 100644
--- a/db/version_set.h
+++ b/db/version_set.h
@@ -42,13 +42,13 @@ extern int FindFile(const InternalKeyComparator& icmp,
const std::vector<FileMetaData*>& files,
const Slice& key);
-// Returns true iff some file in "files" overlaps some part of
+// Returns true iff some file in "files" overlaps the user key range
// [smallest,largest].
extern bool SomeFileOverlapsRange(
const InternalKeyComparator& icmp,
const std::vector<FileMetaData*>& files,
- const InternalKey& smallest,
- const InternalKey& largest);
+ const Slice& smallest_user_key,
+ const Slice& largest_user_key);
class Version {
public:
@@ -78,10 +78,10 @@ class Version {
void Unref();
// Returns true iff some file in the specified level overlaps
- // some part of [smallest,largest].
+ // some part of [smallest_user_key,largest_user_key].
bool OverlapInLevel(int level,
- const InternalKey& smallest,
- const InternalKey& largest);
+ const Slice& smallest_user_key,
+ const Slice& largest_user_key);
int NumFiles(int level) const { return files_[level].size(); }