Daniel John Debrunner wrote:
Deepa Remesh wrote:
On 3/22/06, Rick Hillegas <[EMAIL PROTECTED]> wrote:
It appears that changes to the database are partitioned into two
buckets: those accomplished by Hard Upgrade and those accomplished by
Soft Upgrade. Examples of Soft Upgrade changes appear under item (2)
under the heading "Upgrading System Catalogs" on the webpage
http://db.apache.org/derby/papers/versionupgrade.html#Version+Upgrade+Mechanism.
These are useful examples.
I was looking at this document and it is not very clear to me what can
be categorized as "safe changes" as mentioned in this statement:
"Apply "safe changes" from category 2) in a single transaction. An
example would be fixing incorrect information. ".
Does this help (javadoc for DD_Version.applySafeChanges)?
http://db.apache.org/derby/javadoc/engine/org/apache/derby/impl/sql/catalog/DD_Version.html#applySafeChanges(org.apache.derby.iapi.store.access.TransactionController,%20int,%20int)
It's nice to see this documented, but it's not clearing up my confusion.
The definition given here implies that a change is "safe" as long as you
can reboot the database using old versions of Derby. What if, many hours
after booting the old Derby version, a method returns odd results or the
server actually crashes?
So far I have seen only two examples of "safe" changes
o changing the nullability of a system column
o changing the value in a set of rows to support new functionality (I'm
a bit unclear on what this means, a concrete example would help)
It's hard for me to generalize from these two examples. Maybe the answer is:
o We can't spell out the rules yet because we haven't played with this
scheme long enough.
o Over several releases, we will collect more examples and distill a
definition based on a case-by-case study of every upgrade-induced
database change we introduce
Regards,
-Rick