Преглед на файлове

HPCC-18899 Avoid modifying prefetcher for grouped data

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman преди 7 години
родител
ревизия
a09cdfa832
променени са 4 файла, в които са добавени 11 реда и са изтрити 18 реда
  1. 2 2
      roxie/ccd/ccdactivities.cpp
  2. 2 5
      roxie/ccd/ccdfile.cpp
  3. 6 10
      roxie/ccd/ccdkey.cpp
  4. 1 1
      roxie/ccd/ccdstate.hpp

+ 2 - 2
roxie/ccd/ccdactivities.cpp

@@ -3704,7 +3704,7 @@ public:
         : CRoxieFetchActivityBase(_logctx, _packet, _hFactory, _aFactory, _translators, _files)
     {
         // If we ever supported superfiles this would need to move to setPartNo, and pass proper subfile idx in
-        rowPrefetcher.setown(translators->getPrefetcher(0, false));
+        rowPrefetcher.setown(translators->getPrefetcher(0));
 
         IOutputMetaData *diskMeta = helper->queryProjectedDiskRecordSize();
         diskAllocator.setown(getRowAllocator(diskMeta, basefactory->queryId()));
@@ -4333,7 +4333,7 @@ class CRoxieKeyedJoinFetchActivity : public CRoxieSlaveActivity
         rawFile.setown(files->getFilePart(lastPartNo.partNo, base)); // MORE - superfiles
         translator = translators->queryTranslator(0);                // MORE - superfiles
         rawStream.setown(createFileSerialStream(rawFile, 0, -1, 0));
-        prefetcher.setown(translators->getPrefetcher(0, false));
+        prefetcher.setown(translators->getPrefetcher(0));
         prefetchSource.setStream(rawStream);
     }
 

+ 2 - 5
roxie/ccd/ccdfile.cpp

@@ -1730,14 +1730,11 @@ public:
         return nullptr;
     }
 
-    virtual ISourceRowPrefetcher *getPrefetcher(unsigned subFile, bool addGroupFlag) const override
+    virtual ISourceRowPrefetcher *getPrefetcher(unsigned subFile) const override
     {
         IOutputMetaData *actualLayout = actualLayouts.item(subFile);
         assertex(actualLayout);
-        if (addGroupFlag && actualLayout->isGrouped())
-            return new CSuffixedRowPrefetcher(1, actualLayout->createDiskPrefetcher());
-        else
-            return actualLayout->createDiskPrefetcher();
+        return actualLayout->createDiskPrefetcher();
     }
 
     virtual IOutputMetaData *queryActualLayout(unsigned subFile) const override

+ 6 - 10
roxie/ccd/ccdkey.cpp

@@ -443,13 +443,9 @@ protected:
 
     void _nextRow()
     {
-        if (prefetcher)
-            prefetcher->readAhead(deserializeSource);  // MORE - is it ever NULL ?
+        prefetcher->readAhead(deserializeSource);
         if (grouped)
-        {
-            size32_t sizeRead = deserializeSource.queryRowSize();
-            eogPending = (bool) deserializeSource.queryRow()[sizeRead-1];
-        }
+            deserializeSource.read(1, &eogPending);
         if (translator)
         {
             MemoryBufferBuilder aBuilder(buf, 0);
@@ -527,7 +523,7 @@ public:
         : CDirectReaderBase(_translators, _postFilter, _grouped), baseMap(_baseMap)
     {
         translator = translators->queryTranslator(0);  // Any one would do
-        prefetcher.setown(translators->getPrefetcher(0, false));
+        prefetcher.setown(translators->getPrefetcher(0));
         deserializeSource.setStream(this);
         if (_numParts == 1)
         {
@@ -685,7 +681,7 @@ public:
         {       
             curStream.setown(createFileSerialStream(thisPart, _startPos));
             unsigned subFileIdx = f->getSubFile(thisPartIdx);
-            prefetcher.setown(translators->getPrefetcher(subFileIdx, true));
+            prefetcher.setown(translators->getPrefetcher(subFileIdx));
             translator = translators->queryTranslator(subFileIdx);
         }
         else
@@ -710,7 +706,7 @@ public:
         {
             curStream.setown(createFileSerialStream(thisPart));
             unsigned subFileIdx = f->getSubFile(thisPartIdx);
-            prefetcher.setown(translators->getPrefetcher(subFileIdx, true));
+            prefetcher.setown(translators->getPrefetcher(subFileIdx));
             translator = translators->queryTranslator(subFileIdx);
         }
     }
@@ -1273,7 +1269,7 @@ protected:
     class CDummyTranslatorSet : implements CInterfaceOf<ITranslatorSet>
     {
         virtual const IDynamicTransform *queryTranslator(unsigned subFile) const override { return nullptr; }
-        virtual ISourceRowPrefetcher *getPrefetcher(unsigned subFile, bool addGroupedFlag) const override { throwUnexpected(); }
+        virtual ISourceRowPrefetcher *getPrefetcher(unsigned subFile) const override { throwUnexpected(); }
         virtual IOutputMetaData *queryActualLayout(unsigned subFile) const override { throwUnexpected(); }
         virtual int queryTargetFormatCrc() const override { throwUnexpected(); }
         virtual const RtlRecord &queryTargetFormat() const override { throwUnexpected(); }

+ 1 - 1
roxie/ccd/ccdstate.hpp

@@ -104,7 +104,7 @@ interface IFileIOArray : extends IInterface
 interface ITranslatorSet : extends IInterface
 {
     virtual const IDynamicTransform *queryTranslator(unsigned subFile) const = 0;
-    virtual ISourceRowPrefetcher *getPrefetcher(unsigned subFile, bool addGroupedFlag) const = 0;
+    virtual ISourceRowPrefetcher *getPrefetcher(unsigned subFile) const = 0;
     virtual IOutputMetaData *queryActualLayout(unsigned subFile) const = 0;
     virtual int queryTargetFormatCrc() const = 0;
     virtual const RtlRecord &queryTargetFormat() const = 0;