Re: [ROOT] Versioning and kOverwrite

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri May 07 2004 - 21:29:22 MEST


Guido,

I cannot reproduce this problem. Could you send me a very short test 
script?

If you want to see the changes, look at the differences in the function
TObject::Write in CVS and your version.

Rene Brun

On 
Thu, 6 May 2004, Guido Gagliardi wrote:

> Rene,
> thank for your help. However, the code you suggest is not behavioring for me as i expect - suppose you have version cycles 1 and 2, and you want to replace the version 2. Using your code i get the same results as before: cycle 2 and a new cycle 3 is on the disk. 
> 
> I am using version 3.10/02 and i cannot upgrade to version 4 for project rules. Can i implement the code changes in version 3.10/02?
> 
> Many thanks
> Guido
> 
> 
> 
> >Hi Guido,
> >
> >Thanks for reporting this problem that is now fixed in CVS.
> >
> >In your case, instead of your statement
> >  rootInquire->Write(rootInquire->getName().c_str(),TObject::kOverwrite);
> >you can do, eg
> >  const char* name = rootInquire->getName().c_str();
> >  delete gDirectory->GetKey(name);
> >  rootInquire->Write(name);
> >
> >Rene Brun
> >
> >
> >Guido Gagliardi wrote:
> >
> >>> 
> >>> Hi all,
> >>> 
> >>> i am using the key versioning of  objects in TFile. I would like to
> >>> replace objects written with a definite cycle using kOverwrite, like this:
> >>> 
> >>>     rootInquire->Write(rootInquire->getName().c_str(),TObject::kOverwrite);
> >>> 
> >>> Where rootInquire->getName().c_str() returns something like:
> >>> "application;1" or "application;2"
> >>> Everyithing is working fine when the cycle number is 1 and there is only
> >>> one iteration of the object in the TFile, and i got my object in TFile
> >>> replaced as desired. If the number of iterations present in the TFile is
> >>> two, i get this behavior:
> >>> 
> >>> before the overwriting of object of cycle 1, in the directory:
> >>> 
> >>> application;1
> >>> application;2
> >>> 
> >>> after the overwriting:
> >>> 
> >>> application;2
> >>> application;3
> >>> 
> >>> That is, the key cycle 1 is deleted, but the object is written with key
> >>> cycle 3 (which is, i think, the expected behavior for the kOverwrite
> >>> option in the method Write())
> >>> 
> >>> Since the key cycles gymnic is mandatory for my project, i have to
> >>> obtain the desired behavior. How can i do that, even not using the
> >>> kOverwrite option and instead using lower level instructions?
> >>> 
> >>> Many thanks,
> >>> 
> >>> Guido Gagliardi
> 
> 



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET