@@ -353,9 +353,7 @@ bool CBlockCompressedWriteNode::add(offset_t pos, const void *indata, size32_t i
353353 bool isVariable = keyHdr->isVariable ();
354354 bool hasFilepos = !context.zeroFilePos ;
355355 size32_t fixedKeySize = isVariable ? 0 : (hasFilepos ? keyLen + sizeof (offset_t ) : keyLen);
356-
357- ICompressHandler * handler = queryCompressHandler (context.compressionMethod );
358- compressor.open (keyPtr, maxBytes-hdr.keyBytes , handler, context.compressionOptions , isVariable, fixedKeySize);
356+ compressor.open (keyPtr, maxBytes-hdr.keyBytes , context.compressor , isVariable, fixedKeySize);
359357 }
360358
361359 unsigned writeOptions = (context.zeroFilePos ? KeyCompressor::NoFilePosition : KeyCompressor::TrailingFilePosition);
@@ -381,6 +379,15 @@ void CBlockCompressedWriteNode::finalize()
381379
382380// =========================================================================================================
383381
382+ void CBlockCompressedBuildContext::initCompressor ()
383+ {
384+ compressionHandler = queryCompressHandler (compressionMethod);
385+ if (!compressionHandler)
386+ throw MakeStringException (0 , " Unknown compression method %d" , (int )compressionMethod);
387+
388+ compressor.setown (compressionHandler->getCompressor (compressionOptions.str ()));
389+ }
390+
384391HybridIndexCompressor::HybridIndexCompressor (unsigned keyedSize, const CKeyHdr* keyHdr, IHThorIndexWriteArg *helper, const char * compression, bool isTLK)
385392{
386393 // Process options for leaf (block-compressed) nodes
@@ -419,9 +426,7 @@ HybridIndexCompressor::HybridIndexCompressor(unsigned keyedSize, const CKeyHdr*
419426 if (colon)
420427 processOptionString (colon+1 , processOption);
421428
422- leafContext.compressionHandler = queryCompressHandler (leafContext.compressionMethod );
423- if (!leafContext.compressionHandler )
424- throw MakeStringException (0 , " Unknown compression method %d" , (int )leafContext.compressionMethod );
429+ leafContext.initCompressor ();
425430
426431 if (!isTLK && helper && (helper->getFlags () & TIWzerofilepos))
427432 leafContext.zeroFilePos = true ;
0 commit comments