Hi list,

as a H2 developer and user myself, I was unhappy about the situation,
that one can't open a non page store database with version 1.2. Thomas
wrote a little tool for converting the database, but I think the tool
lacks some important things:

- Doesn't care about connect parameters (like split:)
- The old version (h2-1.2.127.jar) must be shipped or the tool must
download it
- The users must include the code in their software and customize it
(no drop in replacement)

I respect Thomas decision to drop the non page store format, because
he has reasonable arguments for doing that. But I know at least two
companies which are unhappy about the current situation.

So I decided to write my own tool. Of course the database must be
converted, so it internally uses "script to" and "runscript from". But
the main point is, that the last non page store version (1.2.128) is
integrated in the new h2 versions relocated as a new package
(org.h2.upgrade.v1_1_to_v1_2).

/**
 * Class org.h2.upgrade.v1_1_to_v1_2.Migrate
 *
 * Class to convert a 1.1 DB (non page store) to a 1.2 DB (page store)
format.
 * Conversion is done via "script to" and "runscript from"
 *
 * Features:
 * - Every database opened will be converted on the fly, by calling
 *
org.h2.upgrade.v1_1_to_v1_2.Migrate.convertToPageStoreIfNeeded(url,
info)
 *     from org.h2.Driver.connect(url, info)
 * - Conversion can be customized via
 *   public static void
org.h2.upgrade.v1_1_to_v1_2.Migrate.initConversion(
 *     PrintStream outputStream,  the stream to print info messages
 *     PrintStream errorStream,   the stream to print error messages
 *     boolean scriptInDbDir      true if the temporary conversion
script should be placed
 *                                in the db dir rather than the
default tmp dir
 *   )
 * - To get information, if a conversion is needed, the function
 *     public static boolean
org.h2.upgrade.v1_1_to_v1_2.Migrate.mustBeConverted(String url,
Properties info)
 *   can be used. The parameters are the same as for a Driver connect.
 * - To convert before connecting, the function
 *     public static void
org.h2.upgrade.v1_1_to_v1_2.Migrate.convertToPageStoreIfNeeded(String
url, Properties info)
 *   can be used. The parameters are the same as for a Driver connect.
 * - To get information, whether the conversion was sucessfully, use
 *     public static boolean
org.h2.upgrade.v1_1_to_v1_2.Migrate.wasSuccessful()
 *   afterwards.
 *
 */

The files are located here:

http://inputsys.de/h2/h2mig-1.2.137.jar    <= Every version will get a
new filename
http://inputsys.de/h2/h2mig-latest.jar       <= Points to the latest
version
http://inputsys.de/h2/Migrate.java            <= Sourcecode of the
main conversion class

This works for me, but of course it may not work for you. So please
give me feedback!

Regards

Christian Peter

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to