|
@@ -395,7 +395,6 @@ protected:
|
|
offset_t lookupFpos;
|
|
offset_t lookupFpos;
|
|
unsigned keySize; // size of key record including payload
|
|
unsigned keySize; // size of key record including payload
|
|
unsigned keyedSize; // size of non-payload part of key
|
|
unsigned keyedSize; // size of non-payload part of key
|
|
- unsigned eclKeySize; // size of output record according to ecl
|
|
|
|
unsigned numsegs;
|
|
unsigned numsegs;
|
|
bool matched;
|
|
bool matched;
|
|
bool eof;
|
|
bool eof;
|
|
@@ -554,7 +553,7 @@ protected:
|
|
public:
|
|
public:
|
|
IMPLEMENT_IINTERFACE;
|
|
IMPLEMENT_IINTERFACE;
|
|
|
|
|
|
- CKeyLevelManager(IKeyIndex * _key, unsigned _eclKeySize, IContextLogger *_ctx)
|
|
|
|
|
|
+ CKeyLevelManager(IKeyIndex * _key, IContextLogger *_ctx)
|
|
{
|
|
{
|
|
ctx = _ctx;
|
|
ctx = _ctx;
|
|
numsegs = 0;
|
|
numsegs = 0;
|
|
@@ -562,7 +561,6 @@ public:
|
|
keyCursor = NULL;
|
|
keyCursor = NULL;
|
|
keySize = 0;
|
|
keySize = 0;
|
|
keyedSize = 0;
|
|
keyedSize = 0;
|
|
- eclKeySize = _eclKeySize;
|
|
|
|
started = false;
|
|
started = false;
|
|
setKey(_key);
|
|
setKey(_key);
|
|
seeks = 0;
|
|
seeks = 0;
|
|
@@ -1612,7 +1610,7 @@ bool CKeyIndex::hasSpecialFileposition() const
|
|
|
|
|
|
size32_t CKeyIndex::keySize()
|
|
size32_t CKeyIndex::keySize()
|
|
{
|
|
{
|
|
- size32_t fileposSize = keyHdr->hasSpecialFileposition() ? 8 : 0;
|
|
|
|
|
|
+ size32_t fileposSize = keyHdr->hasSpecialFileposition() ? sizeof(offset_t) : 0;
|
|
return keyHdr->getMaxKeyLength() + fileposSize;
|
|
return keyHdr->getMaxKeyLength() + fileposSize;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2460,14 +2458,14 @@ class CKeyMerger : public CKeyLevelManager
|
|
}
|
|
}
|
|
|
|
|
|
public:
|
|
public:
|
|
- CKeyMerger(IKeyIndexSet *_keyset, size32_t _eclKeySize, unsigned _sortFieldOffset, IContextLogger *_ctx) : CKeyLevelManager(NULL, _eclKeySize, _ctx), sortFieldOffset(_sortFieldOffset)
|
|
|
|
|
|
+ CKeyMerger(IKeyIndexSet *_keyset, unsigned _sortFieldOffset, IContextLogger *_ctx) : CKeyLevelManager(NULL, _ctx), sortFieldOffset(_sortFieldOffset)
|
|
{
|
|
{
|
|
segs.setMergeBarrier(sortFieldOffset);
|
|
segs.setMergeBarrier(sortFieldOffset);
|
|
init();
|
|
init();
|
|
setKey(_keyset);
|
|
setKey(_keyset);
|
|
}
|
|
}
|
|
|
|
|
|
- CKeyMerger(IKeyIndex *_onekey, size32_t _eclKeySize, unsigned _sortFieldOffset, IContextLogger *_ctx) : CKeyLevelManager(NULL, _eclKeySize, _ctx), sortFieldOffset(_sortFieldOffset)
|
|
|
|
|
|
+ CKeyMerger(IKeyIndex *_onekey, unsigned _sortFieldOffset, IContextLogger *_ctx) : CKeyLevelManager(NULL, _ctx), sortFieldOffset(_sortFieldOffset)
|
|
{
|
|
{
|
|
segs.setMergeBarrier(sortFieldOffset);
|
|
segs.setMergeBarrier(sortFieldOffset);
|
|
init();
|
|
init();
|
|
@@ -2964,14 +2962,14 @@ public:
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
-extern jhtree_decl IKeyManager *createKeyMerger(IKeyIndexSet * _keys, unsigned _rawSize, unsigned _sortFieldOffset, IContextLogger *_ctx)
|
|
|
|
|
|
+extern jhtree_decl IKeyManager *createKeyMerger(IKeyIndexSet * _keys, unsigned _sortFieldOffset, IContextLogger *_ctx)
|
|
{
|
|
{
|
|
- return new CKeyMerger(_keys, _rawSize, _sortFieldOffset, _ctx);
|
|
|
|
|
|
+ return new CKeyMerger(_keys, _sortFieldOffset, _ctx);
|
|
}
|
|
}
|
|
|
|
|
|
-extern jhtree_decl IKeyManager *createSingleKeyMerger(IKeyIndex * _onekey, unsigned _rawSize, unsigned _sortFieldOffset, IContextLogger *_ctx)
|
|
|
|
|
|
+extern jhtree_decl IKeyManager *createSingleKeyMerger(IKeyIndex * _onekey, unsigned _sortFieldOffset, IContextLogger *_ctx)
|
|
{
|
|
{
|
|
- return new CKeyMerger(_onekey, _rawSize, _sortFieldOffset, _ctx);
|
|
|
|
|
|
+ return new CKeyMerger(_onekey, _sortFieldOffset, _ctx);
|
|
}
|
|
}
|
|
|
|
|
|
class CKeyIndexSet : implements IKeyIndexSet, public CInterface
|
|
class CKeyIndexSet : implements IKeyIndexSet, public CInterface
|
|
@@ -2999,9 +2997,9 @@ extern jhtree_decl IKeyIndexSet *createKeyIndexSet()
|
|
return new CKeyIndexSet;
|
|
return new CKeyIndexSet;
|
|
}
|
|
}
|
|
|
|
|
|
-extern jhtree_decl IKeyManager *createLocalKeyManager(IKeyIndex *key, unsigned _rawSize, IContextLogger *_ctx)
|
|
|
|
|
|
+extern jhtree_decl IKeyManager *createLocalKeyManager(IKeyIndex *key, IContextLogger *_ctx)
|
|
{
|
|
{
|
|
- return new CKeyLevelManager(key, _rawSize, _ctx);
|
|
|
|
|
|
+ return new CKeyLevelManager(key, _ctx);
|
|
}
|
|
}
|
|
|
|
|
|
class CKeyArray : implements IKeyArray, public CInterface
|
|
class CKeyArray : implements IKeyArray, public CInterface
|
|
@@ -3052,7 +3050,7 @@ class IKeyManagerTest : public CppUnit::TestFixture
|
|
Owned<IKeyIndexSet> keyset = createKeyIndexSet();
|
|
Owned<IKeyIndexSet> keyset = createKeyIndexSet();
|
|
keyset->addIndex(index1.getClear());
|
|
keyset->addIndex(index1.getClear());
|
|
keyset->addIndex(index2.getClear());
|
|
keyset->addIndex(index2.getClear());
|
|
- Owned <IKeyManager> tlk1 = createKeyMerger(keyset, maxSize, 7, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk1 = createKeyMerger(keyset, 7, NULL);
|
|
Owned<IStringSet> sset1 = createStringSet(7);
|
|
Owned<IStringSet> sset1 = createStringSet(7);
|
|
sset1->addRange("0000003", "0000003");
|
|
sset1->addRange("0000003", "0000003");
|
|
sset1->addRange("0000005", "0000006");
|
|
sset1->addRange("0000005", "0000006");
|
|
@@ -3089,7 +3087,7 @@ class IKeyManagerTest : public CppUnit::TestFixture
|
|
ASSERT(!tlk1->lookup(true));
|
|
ASSERT(!tlk1->lookup(true));
|
|
ASSERT(!tlk1->lookup(true));
|
|
ASSERT(!tlk1->lookup(true));
|
|
|
|
|
|
- Owned <IKeyManager> tlk2 = createKeyMerger(NULL, maxSize, 7, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk2 = createKeyMerger(NULL, 7, NULL);
|
|
tlk2->setKey(keyset);
|
|
tlk2->setKey(keyset);
|
|
tlk2->deserializeCursorPos(mb);
|
|
tlk2->deserializeCursorPos(mb);
|
|
tlk2->append(createKeySegmentMonitor(false, sset1.getLink(), 0, 7));
|
|
tlk2->append(createKeySegmentMonitor(false, sset1.getLink(), 0, 7));
|
|
@@ -3105,7 +3103,7 @@ class IKeyManagerTest : public CppUnit::TestFixture
|
|
ASSERT(!tlk2->lookup(true));
|
|
ASSERT(!tlk2->lookup(true));
|
|
ASSERT(!tlk2->lookup(true));
|
|
ASSERT(!tlk2->lookup(true));
|
|
|
|
|
|
- Owned <IKeyManager> tlk3 = createKeyMerger(NULL, maxSize, 7, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk3 = createKeyMerger(NULL, 7, NULL);
|
|
tlk3->setKey(keyset);
|
|
tlk3->setKey(keyset);
|
|
tlk3->append(createKeySegmentMonitor(false, sset1.getLink(), 0, 7));
|
|
tlk3->append(createKeySegmentMonitor(false, sset1.getLink(), 0, 7));
|
|
tlk3->append(createKeySegmentMonitor(false, sset2.getLink(), 7, 3));
|
|
tlk3->append(createKeySegmentMonitor(false, sset2.getLink(), 7, 3));
|
|
@@ -3118,7 +3116,7 @@ class IKeyManagerTest : public CppUnit::TestFixture
|
|
ASSERT(!tlk3->lookupSkip("081", 7, 3));
|
|
ASSERT(!tlk3->lookupSkip("081", 7, 3));
|
|
ASSERT(!tlk3->lookup(true));
|
|
ASSERT(!tlk3->lookup(true));
|
|
|
|
|
|
- Owned <IKeyManager> tlk4 = createKeyMerger(NULL, maxSize, 7, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk4 = createKeyMerger(NULL, 7, NULL);
|
|
tlk4->setKey(keyset);
|
|
tlk4->setKey(keyset);
|
|
tlk4->append(createKeySegmentMonitor(false, sset1.getLink(), 0, 7));
|
|
tlk4->append(createKeySegmentMonitor(false, sset1.getLink(), 0, 7));
|
|
tlk4->append(createKeySegmentMonitor(false, sset3.getLink(), 7, 3));
|
|
tlk4->append(createKeySegmentMonitor(false, sset3.getLink(), 7, 3));
|
|
@@ -3243,14 +3241,14 @@ protected:
|
|
{
|
|
{
|
|
unsigned maxSize = (variable && blobby) ? 18 : 10;
|
|
unsigned maxSize = (variable && blobby) ? 18 : 10;
|
|
Owned <IKeyIndex> index1 = createKeyIndex("keyfile1.$$$", 0, false, false);
|
|
Owned <IKeyIndex> index1 = createKeyIndex("keyfile1.$$$", 0, false, false);
|
|
- Owned <IKeyManager> tlk1 = createLocalKeyManager(index1, maxSize, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk1 = createLocalKeyManager(index1, NULL);
|
|
Owned<IStringSet> sset1 = createStringSet(10);
|
|
Owned<IStringSet> sset1 = createStringSet(10);
|
|
sset1->addRange("0000000001", "0000000100");
|
|
sset1->addRange("0000000001", "0000000100");
|
|
tlk1->append(createKeySegmentMonitor(false, sset1.getClear(), 0, 10));
|
|
tlk1->append(createKeySegmentMonitor(false, sset1.getClear(), 0, 10));
|
|
tlk1->finishSegmentMonitors();
|
|
tlk1->finishSegmentMonitors();
|
|
tlk1->reset();
|
|
tlk1->reset();
|
|
|
|
|
|
- Owned <IKeyManager> tlk1a = createLocalKeyManager(index1, maxSize, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk1a = createLocalKeyManager(index1, NULL);
|
|
Owned<IStringSet> sset1a = createStringSet(8);
|
|
Owned<IStringSet> sset1a = createStringSet(8);
|
|
sset1a->addRange("00000000", "00000001");
|
|
sset1a->addRange("00000000", "00000001");
|
|
tlk1a->append(createKeySegmentMonitor(false, sset1a.getClear(), 0, 8));
|
|
tlk1a->append(createKeySegmentMonitor(false, sset1a.getClear(), 0, 8));
|
|
@@ -3283,7 +3281,7 @@ protected:
|
|
|
|
|
|
|
|
|
|
Owned <IKeyIndex> index2 = createKeyIndex("keyfile2.$$$", 0, false, false);
|
|
Owned <IKeyIndex> index2 = createKeyIndex("keyfile2.$$$", 0, false, false);
|
|
- Owned <IKeyManager> tlk2 = createLocalKeyManager(index2, maxSize, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk2 = createLocalKeyManager(index2, NULL);
|
|
Owned<IStringSet> sset2 = createStringSet(10);
|
|
Owned<IStringSet> sset2 = createStringSet(10);
|
|
sset2->addRange("0000000001", "0000000100");
|
|
sset2->addRange("0000000001", "0000000100");
|
|
ASSERT(sset2->numValues() == 65536);
|
|
ASSERT(sset2->numValues() == 65536);
|
|
@@ -3298,7 +3296,7 @@ protected:
|
|
both->addIndex(index1.getLink());
|
|
both->addIndex(index1.getLink());
|
|
both->addIndex(index2.getLink());
|
|
both->addIndex(index2.getLink());
|
|
Owned<IStringSet> sset3 = createStringSet(10);
|
|
Owned<IStringSet> sset3 = createStringSet(10);
|
|
- tlk3.setown(createKeyMerger(NULL, maxSize, 0, NULL));
|
|
|
|
|
|
+ tlk3.setown(createKeyMerger(NULL, 0, NULL));
|
|
tlk3->setKey(both);
|
|
tlk3->setKey(both);
|
|
sset3->addRange("0000000001", "0000000100");
|
|
sset3->addRange("0000000001", "0000000100");
|
|
tlk3->append(createKeySegmentMonitor(false, sset3.getClear(), 0, 10));
|
|
tlk3->append(createKeySegmentMonitor(false, sset3.getClear(), 0, 10));
|
|
@@ -3306,7 +3304,7 @@ protected:
|
|
tlk3->reset();
|
|
tlk3->reset();
|
|
}
|
|
}
|
|
|
|
|
|
- Owned <IKeyManager> tlk2a = createLocalKeyManager(index2, maxSize, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk2a = createLocalKeyManager(index2, NULL);
|
|
Owned<IStringSet> sset2a = createStringSet(10);
|
|
Owned<IStringSet> sset2a = createStringSet(10);
|
|
sset2a->addRange("0000000048", "0000000048");
|
|
sset2a->addRange("0000000048", "0000000048");
|
|
ASSERT(sset2a->numValues() == 1);
|
|
ASSERT(sset2a->numValues() == 1);
|
|
@@ -3314,7 +3312,7 @@ protected:
|
|
tlk2a->finishSegmentMonitors();
|
|
tlk2a->finishSegmentMonitors();
|
|
tlk2a->reset();
|
|
tlk2a->reset();
|
|
|
|
|
|
- Owned <IKeyManager> tlk2b = createLocalKeyManager(index2, maxSize, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk2b = createLocalKeyManager(index2, NULL);
|
|
Owned<IStringSet> sset2b = createStringSet(10);
|
|
Owned<IStringSet> sset2b = createStringSet(10);
|
|
sset2b->addRange("0000000047", "0000000049");
|
|
sset2b->addRange("0000000047", "0000000049");
|
|
ASSERT(sset2b->numValues() == 3);
|
|
ASSERT(sset2b->numValues() == 3);
|
|
@@ -3322,7 +3320,7 @@ protected:
|
|
tlk2b->finishSegmentMonitors();
|
|
tlk2b->finishSegmentMonitors();
|
|
tlk2b->reset();
|
|
tlk2b->reset();
|
|
|
|
|
|
- Owned <IKeyManager> tlk2c = createLocalKeyManager(index2, maxSize, NULL);
|
|
|
|
|
|
+ Owned <IKeyManager> tlk2c = createLocalKeyManager(index2, NULL);
|
|
Owned<IStringSet> sset2c = createStringSet(10);
|
|
Owned<IStringSet> sset2c = createStringSet(10);
|
|
sset2c->addRange("0000000047", "0000000047");
|
|
sset2c->addRange("0000000047", "0000000047");
|
|
tlk2c->append(createKeySegmentMonitor(false, sset2c.getClear(), 0, 10));
|
|
tlk2c->append(createKeySegmentMonitor(false, sset2c.getClear(), 0, 10));
|