Let GetAll be aware of specific version
authorrgrosso <Raffaele.Grosso@cern.ch>
Fri, 30 Jan 2015 17:13:16 +0000 (18:13 +0100)
committerrgrosso <Raffaele.Grosso@cern.ch>
Fri, 30 Jan 2015 17:19:11 +0000 (18:19 +0100)
Modify GetAll so that it is aware of a specific (subversion) set via
SetSpecificStorage, as was already the case with Get.
If both the arguments passed to GetAll and a previous call to
SetSpecificStorage specify a (sub)version, then precedence is given to
the one specified via SetSpecificStorage.

STEER/CDB/AliCDBManager.cxx

index 7f45849..192a50d 100644 (file)
@@ -1339,7 +1339,7 @@ TList* AliCDBManager::GetAll(const AliCDBId& query) {
   if(fLock && query.GetFirstRun() != fRun)
     AliFatal("Lock is ON: cannot use different run number than the internal one!");
 
-  AliCDBParam *aPar=SelectSpecificStorage(query.GetPath());
+  AliCDBParam *aPar = SelectSpecificStorage(query.GetPath());
 
   AliCDBStorage *aStorage;
   if(aPar) {
@@ -1370,11 +1370,23 @@ TList* AliCDBManager::GetAll(const AliCDBId& query) {
       AliCDBStorage *chkStorage = GetStorage(chkPar);
       AliDebug(2, Form("Found specific storage! %s", chkPar->GetURI().Data()));
 
-      AliCDBEntry *newEntry=0;
       chkId.SetRunRange(query.GetFirstRun(), query.GetLastRun());
-      chkId.SetVersion(query.GetVersion());
-      chkId.SetSubVersion(query.GetSubVersion());
+      UInt_t uId = chkPar->GetUniqueID();
+      Int_t version = -1, subVersion = -1;
+      version = Int_t(uId&0xffff) - 1;
+      subVersion = Int_t(uId>>16) - 1;
+      if(version!=-1){
+        chkId.SetVersion(version);
+      }else{
+        chkId.SetVersion(query.GetVersion());
+      }
+      if(subVersion!=-1){
+        chkId.SetSubVersion(subVersion);
+      }else{
+        chkId.SetSubVersion(query.GetSubVersion());
+      }
 
+      AliCDBEntry *newEntry=0;
       if(chkStorage) newEntry = chkStorage->Get(chkId);
       if(!newEntry) continue;