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

Reply via email to