Browse Source

HPCC-20090 Support multiple Blooms

Signed-off-by: wangkx <kevin.wang@lexisnexis.com>
wangkx 6 years ago
parent
commit
76177d1d70
2 changed files with 15 additions and 9 deletions
  1. 1 1
      esp/scm/ws_dfu.ecm
  2. 14 8
      esp/services/ws_dfu/ws_dfuService.cpp

+ 1 - 1
esp/scm/ws_dfu.ecm

@@ -175,7 +175,7 @@ ESPStruct [nil_remove] DFUFileDetail
     [min_ver("1.37")] binary binInfo;
     [min_ver("1.37")] binary binInfo;
     [min_ver("1.38")] string PackageID;
     [min_ver("1.38")] string PackageID;
     [min_ver("1.39")] ESPstruct DFUFilePartition Partition;
     [min_ver("1.39")] ESPstruct DFUFilePartition Partition;
-    [min_ver("1.39")] ESPstruct DFUFileBloom Bloom;
+    [min_ver("1.39")] ESParray<ESPstruct DFUFileBloom> Blooms;
 };
 };
 
 
 ESPStruct DFUSpaceItem
 ESPStruct DFUSpaceItem

+ 14 - 8
esp/services/ws_dfu/ws_dfuService.cpp

@@ -2165,19 +2165,25 @@ void CWsDfuEx::doGetFileDetails(IEspContext &context, IUserDescriptor *udesc, co
             partition.setFieldNames(partitionFieldNames);
             partition.setFieldNames(partitionFieldNames);
         }
         }
 
 
-        IPropertyTree *bloomTree = df->queryAttributes().queryPropTree("Bloom");
-        if (bloomTree)
+        IArrayOf<IEspDFUFileBloom> bloomList;
+        Owned<IPropertyTreeIterator> itr= df->queryAttributes().getElements("Bloom");
+        ForEach(*itr)
         {
         {
+            IPropertyTree &bloomTree = itr->query();
+
             StringArray bloomFieldNames;
             StringArray bloomFieldNames;
-            unsigned __int64 bloomFieldMask = bloomTree->getPropInt64("@bloomFieldMask");
+            unsigned __int64 bloomFieldMask = bloomTree.getPropInt64("@bloomFieldMask");
             queryFieldNames(context, name, cluster, bloomFieldMask, bloomFieldNames);
             queryFieldNames(context, name, cluster, bloomFieldMask, bloomFieldNames);
 
 
-            IEspDFUFileBloom &bloom = FileDetails.updateBloom();
-            bloom.setFieldMask(bloomFieldMask);
-            bloom.setFieldNames(bloomFieldNames);
-            bloom.setLimit(bloomTree->getPropInt64("@bloomLimit"));
-            bloom.setProbability(bloomTree->queryProp("@bloomProbability"));
+            Owned<IEspDFUFileBloom> bloom= createDFUFileBloom();
+            bloom->setFieldMask(bloomFieldMask);
+            bloom->setFieldNames(bloomFieldNames);
+            bloom->setLimit(bloomTree.getPropInt64("@bloomLimit"));
+            bloom->setProbability(bloomTree.queryProp("@bloomProbability"));
+            bloomList.append(*bloom.getLink());
         }
         }
+        if (bloomList.ordinality())
+            FileDetails.setBlooms(bloomList);
     }
     }
 
 
     //#14280
     //#14280