Sidnei da Silva wrote:
| Jim asked about it on zope-dev, and got no response; see: | | "Can we forsake database backward compatability on the head for | a while?" | | http://mail.zope.org/pipermail/zope-dev/2003-November/021055.html | | ... | | > This would mean that old databases would not be useable with the | > CVS head in the near term. Would this cause anyone any problems? | | I'm happy no one responded to this. Silence is assent, :)
:P
Is there any special trick to such script? Provided some pointers of what the script should do, I wouldn't mind writing and testing it.
There are lots of special tricks to such a script. Otherwise, I would have written it already. :) OK, here's how I think it needs to happen, with some, hopefuly helpful notes. 1. The script needs to be run under Zope 2.6 or 2.7. There should be a product that people can install that installs some method to be run. People should be able to run this method in a running zope. They should not need to shut down their site to do the conversion. 2. The method should walk the object tree, converting: - old-style BTrees to modern BTrees - old-style buckets to modern buckets - intSets to IITreeSets. The individual conversions should be pretty simple. At worst involving a for loop, but, in many cases, the constructors for the new types will be able to accept the old types. 3. The hard part is walking the object tree. You will need a function that, given an object, will return the oids of the objects it references. Perhaps Jeremy can help you with that. 4. You should do each conversion in a separate transaction. That is, when you encounter an object that needs to be converted, you should convert it and commit. 5. You will want to keep a dictionary of the oids visited, just in case there are any cyles. Also, if you encounter an oid that was converted, you will need to subtitute the new value. This might be really hard. :( I think this probably won't happen, but perhaps you should at least check for it. 6. After the conversion has been run, the database should be usable with the head. Jim -- Jim Fulton mailto:jim@zope.com Python Powered! CTO (540) 361-1714 http://www.python.org Zope Corporation http://www.zope.com http://www.zope.org