Mike Matrigali wrote:

The way I look at it, derby has a very nice default.  We call it soft
upgrade, but in my mind it really is "no upgrade".  We guarantee that
if you do nothing to your existing app, then you can run it and the
database against your current version of the derby software and all
future versions of the derby software.  I think this is a reasonable
"automatic"  default.

This was the conclusion I was happy to come to yesterday after Dan answered my questions in the related thread titled "Hard vs. Soft Upgrade": Soft Upgrade should be a misnomer, and "No Upgrade" should describe the situation better.

Today, however, I was taught the following curious fact about DatabaseMetaData methods:

o When the customer calls one of these methods, it causes the server to fault in some query text from the server jar files, to compile that query text, and to store the compiled form in the database. From that point onward, the compiled form is locked in place and determines the results of the DatabaseMetaData method for all subsequent callers.

o The results from a DatabaseMetaData call therefore depend on whether the first user faulted in the text BEFORE or AFTER the Upgrade. It seems that this indeterminate behavior is induced by Soft Upgrade and maybe by Hard Upgrade as well.

Is this true? What other wormholes lurk in Soft Upgrade? I would think that anyone who has to support Derby would be happier with deterministic behavior.


Because we provide no way to "go back" with database versions I believe
it is reasonable to require the very slight user intervention of connecting and requiring the upgrade=true flag. If you want to use new
stuff then you proactively tell us.  This model is really important if
we ever decide to do some sort of major data upgrade where the cost
of hard upgrade may be hours depending on the size of the db and number
of rows touched.

Upgrade is clearly an operation which stretches the "0-admin" claim a bit past the cracking point.

Reply via email to