Explorar o código

Merge pull request #10863 from jakesmith/hpcc-19079

HPCC-19079 Fix issues with disk grouped datasets and translation

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman %!s(int64=7) %!d(string=hai) anos
pai
achega
053fe47bd1
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      ecl/hthor/hthor.cpp

+ 3 - 1
ecl/hthor/hthor.cpp

@@ -8237,6 +8237,8 @@ bool CHThorDiskReadBaseActivity::openNext()
                     if (thisFormatCrc != helper.getFormatCrc() && helper.getFormatCrc() && (helper.getFlags() & TDRnocrccheck) == 0)
                     {
                         actualDiskMeta.setown(getDaliLayoutInfo(props));
+                        if (grouped)
+                            actualDiskMeta.setown(new CSuffixedOutputMeta(+1, actualDiskMeta));
                         if (actualDiskMeta)
                         {
                             translator.setown(createRecordTranslator(projectedDiskMeta->queryRecordAccessor(true), actualDiskMeta->queryRecordAccessor(true)));
@@ -8567,6 +8569,7 @@ const void *CHThorDiskReadActivity::nextRow()
                     prefetcher->readAhead(prefetchBuffer);
                     const byte * next = prefetchBuffer.queryRow();
                     size32_t sizeRead = prefetchBuffer.queryRowSize();
+                    bool eog = grouped && next[sizeRead-1];
                     size32_t thisSize;
                     if (segMonitorsMatch(next)) // NOTE - keyed fields are checked pre-translation
                     {
@@ -8582,7 +8585,6 @@ const void *CHThorDiskReadActivity::nextRow()
                     else
                         thisSize = 0;
 
-                    bool eog = grouped && next[sizeRead-1];
                     prefetchBuffer.finishedRow();
 
                     localOffset += sizeRead;