You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by Michael Hart <mi...@baselinesols.com> on 2004/08/17 03:45:20 UTC

Howto: OJB 1.0.0 + Torque 3.1 + HSQLDB 1.7.2

G'day,

I posted this message on the OJB user group - but just in case some 
developers don't frequent there, I figured I'd post it here as well.

Could these small changes be considered for the next release of OJB?

--- snip ---

Torque 3.1 seems to work out of the box with OJB 1.0.0, but not with the
OJB JUnit tests because Torque 3.1 doesn't like the schema files used
for these tests. I've created some new schema files that seem to work OK
(linked to below).

HSQLDB 1.7.2 has problems with Torque because databases created using
HSQLDB's "In-Process" mode (as the standard DB is in the OJB JUnit
tests) must now be explicitly closed with a "SHUTDOWN" command for other
processes to use them. I've contacted the HSQLDB guys about a way to do
this using SQL, so that it could be included in Torque's template files,
but for now I've settled on patching the build-torque.xml file to do
this during the build process, if necessary.

HSQLDB 1.7.2 also has problems with one of OJB's testcases that uses
hardcoded SQL commands, specifically
org.apache.ojb.broker.sequence.NativeIdentifierTest as the syntax used
in this file is not allowed.

So, here are the steps to get Torque 3.1 working with OJB 1.0.0:

- Download OJB 1.0.0 from:
http://db.apache.org/builds/ojb/1.0.0/db-ojb-1.0.0-src.zip
and unpack the db-ojb-1.0.0 dir.

- Download torque-gen-3.1 from:
http://db.apache.org/builds/torque/release/3.1/torque-gen-3.1.zip
and unpack the torque-gen-3.1 dir.

- Remove old db-ojb-1.0.0/lib/torque-3.0.2.jar

- Copy torque-gen-3.1.jar and village-2.0-dev-20030825.jar from
torque-gen-3.1/lib/ to db-ojb-1.0.0/lib/

- Replace db-ojb-1.0.0/build-torque.xml with torque-gen-3.1/build-torque.xml

- Copy over
http://www.alphalink.com.au/~mwhart/ojb/ojbtest-data.dtd and
http://www.alphalink.com.au/~mwhart/ojb/ojbtest-data.xml
to db-ojb-1.0.0/src/schema/

- Grab copies of j2ee.jar and jdo.jar if you don't already have them and
copy them to db-ojb-1.0.0/lib/

- Make sure junit.jar is in $ANT_HOME/lib/ and then run "ant junit" from
the db-ojb-1.0.0 dir
(ignore the SQL error when trying to create the DB - you can get rid of
this by removing the "ECHO Not implemented" on the first line of
sql/db-init/hypersonic/createdb.vm in torque-gen-3.1.jar - and also
ignore the log4j ERROR messages - you can get rid of these by removing
the ", org.apache.torque.engine" at the end of line 15 of
log4j.properties in torque-gen-3.1.jar)

With any luck, all tests will pass!

Now, to get HSQLDB 1.7.2 working with OJB 1.0.0 (assuming previous steps
have been done):

- Download HSQLDB 1.7.2 from
http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_2_3.zip?download
and unpack the hsqldb dir.

- Replace db-ojb-1.0.0/lib/hsqldb.jar with new hsqldb/lib/hsqldb.jar

- Replace
db-ojb-1.0.0/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java 


with http://www.alphalink.com.au/~mwhart/ojb/NativeIdentifierTest.java
(diff below)

- If you want to support the new sequences in HSQLDB 1.7.2, replace
db-ojb-1.0.0/src/java/org/apache/ojb/broker/platforms/PlatformHsqldbImpl.java 


with http://www.alphalink.com.au/~mwhart/ojb/PlatformHsqldbImpl.java
(diff below)

- Replace db-ojb-1.0.0/build-torque.xml with
http://www.alphalink.com.au/~mwhart/ojb/build-torque.xml (diff below)

- Run "ant junit" from the db-ojb-1.0.0 dir

Hopefully, all tests will pass again!

There are probably quite a few more changes introduced in HSQLDB 1.7.2
that could be updated in OJB, but sequences was all I was interested in
and they seem to work fine so far.

Cheers,

Michael

P.S.

Here are the diffs for those interested (sorry if it wraps):

diff for NativeIdentifierTest.java:

48c48
<             " REF_ID int(11),NAME VARCHAR(250))";
---
>             " REF_ID INT, NAME VARCHAR(250))";
58c58
<             " NAME VARCHAR(250), FK_ID BIGINT, REF_ID int(11),
SINGLE_REF_FK BIGINT)";
---
>             " NAME VARCHAR(250), FK_ID BIGINT, REF_ID INT, SINGLE_REF_FK BIGINT)";


diff for PlatformHsqldbImpl.java:

67a68,81
>     public String createSequenceQuery(String sequenceName)
>     {
>         return "CREATE SEQUENCE " + sequenceName;
>     }
>
>     public String nextSequenceQuery(String sequenceName)
>     {
>         return "CALL NEXT VALUE FOR " + sequenceName;
>     }
>
>     public String dropSequenceQuery(String sequenceName)
>     {
>         return "DROP SEQUENCE " + sequenceName;
>     }



diff for build-torque.xml (based on the file found in torque-gen-3.1,
not OJB):

249a250,318
>   <!-- S H U T D O W N   C H E C K 
    -->
>   <!-- 
================================================================ -->
>   <!-- Hack to check if we need to shutdown the DB after we're done 
    -->
>   <!-- using it. At the moment, the only DB which this must be done 
for -->
>   <!-- is HSQLDB when running in the "In-Process" mode. 
    -->
>   <!-- As this mode can be specified without a keyword, we just check 
   -->
>   <!-- that the JDBC URL (specified in the dbUrlToCheck property) is 
    -->
>   <!-- an HSQLDB URL, but not one of the other modes. 
    -->
>   <!-- 
================================================================ -->
>
>   <target name="shutdown-check">
>     <condition property="torque.internal.shutdownAfterSql">
>       <and>
>         <contains string="${dbUrlToCheck}" substring="jdbc:hsqldb" />
>         <not>
>           <or>
>             <contains string="${dbUrlToCheck}"
>                       substring="jdbc:hsqldb:hsql://" />
>             <contains string="${dbUrlToCheck}"
>                       substring="jdbc:hsqldb:hsqls://" />
>             <contains string="${dbUrlToCheck}"
>                       substring="jdbc:hsqldb:http://" />
>             <contains string="${dbUrlToCheck}"
>                       substring="jdbc:hsqldb:https://" />
>           </or>
>         </not>
>       </and>
>     </condition>
>   </target>
>
>   <!-- 
================================================================ -->
>   <!-- A P P E N D   S H U T D O W N   S Q L 
    -->
>   <!-- 
================================================================ -->
>   <!-- Appends a SHUTDOWN statement to the file specified in the 
    -->
>   <!-- shutdownAppendFile property after first checking that it's 
    -->
>   <!-- necessary using the shutdown-check task. 
    -->
>   <!-- 
================================================================ -->
>
>   <target name="append-shutdown-sql"
>           depends="shutdown-check"
>           if="torque.internal.shutdownAfterSql">
>
>     <echo file="${shutdownAppendFile}" append="true">;
> SHUTDOWN;
>     </echo>
>
>   </target>
>
>   <!-- 
================================================================ -->
>   <!-- A D D   S H U T D O W N   S Q L   F I L E 
    -->
>   <!-- 
================================================================ -->
>   <!-- Adds a shutdown.sql file to the sql dir with a SHUTDOWN 
    -->
>   <!-- statement in it and also adds this file to sqldb.map after 
first -->
>   <!-- checking that it's necessary using the shutdown-check task. 
    -->
>   <!-- 
================================================================ -->
>
>   <target name="add-shutdown-sql-file"
>           depends="shutdown-check"
>           if="torque.internal.shutdownAfterSql">
>
>     <echo file="${torque.sql.dir}/shutdown.sql"
>           message="SHUTDOWN;" />
>
>     <echo file="${torque.sql.dir}/sqldb.map" append="true"
>             message="shutdown.sql=${torque.project}" />
>
>   </target>
>
>   <!-- 
================================================================ -->
280a350,357
>     <!-- Append the SHUTDOWN statement if need be -->
>     <antcall target="append-shutdown-sql">
>       <param name="dbUrlToCheck"
>              value="${torque.database.createUrl}" />
>       <param name="shutdownAppendFile"
>              value="${torque.sql.dir}/create-db.sql" />
>     </antcall>
>
294a372
>
304a383,388
>     <!-- Add the shutdown.sql file if need be -->
>     <antcall target="add-shutdown-sql-file">
>       <param name="dbUrlToCheck"
>              value="${torque.database.buildUrl}" />
>     </antcall>
>
315a400
>

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


Re: Howto: OJB 1.0.0 + Torque 3.1 + HSQLDB 1.7.2

Posted by Michael Hart <mi...@baselinesols.com>.
Jakob Braeuchi wrote:
> hi michael,
> 
> i updated ojb 1.1 to use torque 3.1.1 (commons-collection 3.1 is 
> supported). i had to update all profiles as well because the properties 
> changed.

Thanks Jakob!

I haven't had a chance to look at the problems you were having with the 
debugging output though - I hope that's just a case of changing some 
properties in Torque's logging configuration.

Checking out the latest now - looking forward to using it!

Thanks again,

Michael

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


Re: Howto: OJB 1.0.0 + Torque 3.1 + HSQLDB 1.7.2

Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi michael,

i updated ojb 1.1 to use torque 3.1.1 (commons-collection 3.1 is supported). i 
had to update all profiles as well because the properties changed.

jakob

Jakob Braeuchi schrieb:
> hi,
> 
> thanks for your very detailed description. i'm currently trying to 
> replace the old torque with torque 3.1 (for ojb 1.1) and with the help 
> of your post it runs quite fine.
> 
> but i do have some questions:
> 
> how can i get rid of these debug infos ?
> 
> [torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
> [torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
> [torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
> [torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
> [torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
> [torque-data-sql] [DEBUG] XmlToAppData - endElement(, , reference) called
> [torque-data-sql] [DEBUG] XmlToAppData - endElement(, , foreign-key) called
> [torque-data-sql] [DEBUG] XmlToAppData - endElement(, , table) called
> 
> is it possible to use commons-collections 3.1 with torque 3.1 ?
> 
> tia
> jakob
> 
> Michael Hart schrieb:
> 
>> G'day,
>>
>> I posted this message on the OJB user group - but just in case some 
>> developers don't frequent there, I figured I'd post it here as well.
>>
>> Could these small changes be considered for the next release of OJB?
>>
>> --- snip ---
>>
>> Torque 3.1 seems to work out of the box with OJB 1.0.0, but not with the
>> OJB JUnit tests because Torque 3.1 doesn't like the schema files used
>> for these tests. I've created some new schema files that seem to work OK
>> (linked to below).
>>
>> HSQLDB 1.7.2 has problems with Torque because databases created using
>> HSQLDB's "In-Process" mode (as the standard DB is in the OJB JUnit
>> tests) must now be explicitly closed with a "SHUTDOWN" command for other
>> processes to use them. I've contacted the HSQLDB guys about a way to do
>> this using SQL, so that it could be included in Torque's template files,
>> but for now I've settled on patching the build-torque.xml file to do
>> this during the build process, if necessary.
>>
>> HSQLDB 1.7.2 also has problems with one of OJB's testcases that uses
>> hardcoded SQL commands, specifically
>> org.apache.ojb.broker.sequence.NativeIdentifierTest as the syntax used
>> in this file is not allowed.
>>
>> So, here are the steps to get Torque 3.1 working with OJB 1.0.0:
>>
>> - Download OJB 1.0.0 from:
>> http://db.apache.org/builds/ojb/1.0.0/db-ojb-1.0.0-src.zip
>> and unpack the db-ojb-1.0.0 dir.
>>
>> - Download torque-gen-3.1 from:
>> http://db.apache.org/builds/torque/release/3.1/torque-gen-3.1.zip
>> and unpack the torque-gen-3.1 dir.
>>
>> - Remove old db-ojb-1.0.0/lib/torque-3.0.2.jar
>>
>> - Copy torque-gen-3.1.jar and village-2.0-dev-20030825.jar from
>> torque-gen-3.1/lib/ to db-ojb-1.0.0/lib/
>>
>> - Replace db-ojb-1.0.0/build-torque.xml with 
>> torque-gen-3.1/build-torque.xml
>>
>> - Copy over
>> http://www.alphalink.com.au/~mwhart/ojb/ojbtest-data.dtd and
>> http://www.alphalink.com.au/~mwhart/ojb/ojbtest-data.xml
>> to db-ojb-1.0.0/src/schema/
>>
>> - Grab copies of j2ee.jar and jdo.jar if you don't already have them and
>> copy them to db-ojb-1.0.0/lib/
>>
>> - Make sure junit.jar is in $ANT_HOME/lib/ and then run "ant junit" from
>> the db-ojb-1.0.0 dir
>> (ignore the SQL error when trying to create the DB - you can get rid of
>> this by removing the "ECHO Not implemented" on the first line of
>> sql/db-init/hypersonic/createdb.vm in torque-gen-3.1.jar - and also
>> ignore the log4j ERROR messages - you can get rid of these by removing
>> the ", org.apache.torque.engine" at the end of line 15 of
>> log4j.properties in torque-gen-3.1.jar)
>>
>> With any luck, all tests will pass!
>>
>> Now, to get HSQLDB 1.7.2 working with OJB 1.0.0 (assuming previous steps
>> have been done):
>>
>> - Download HSQLDB 1.7.2 from
>> http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_2_3.zip?download
>> and unpack the hsqldb dir.
>>
>> - Replace db-ojb-1.0.0/lib/hsqldb.jar with new hsqldb/lib/hsqldb.jar
>>
>> - Replace
>> db-ojb-1.0.0/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java 
>>
>>
>> with http://www.alphalink.com.au/~mwhart/ojb/NativeIdentifierTest.java
>> (diff below)
>>
>> - If you want to support the new sequences in HSQLDB 1.7.2, replace
>> db-ojb-1.0.0/src/java/org/apache/ojb/broker/platforms/PlatformHsqldbImpl.java 
>>
>>
>> with http://www.alphalink.com.au/~mwhart/ojb/PlatformHsqldbImpl.java
>> (diff below)
>>
>> - Replace db-ojb-1.0.0/build-torque.xml with
>> http://www.alphalink.com.au/~mwhart/ojb/build-torque.xml (diff below)
>>
>> - Run "ant junit" from the db-ojb-1.0.0 dir
>>
>> Hopefully, all tests will pass again!
>>
>> There are probably quite a few more changes introduced in HSQLDB 1.7.2
>> that could be updated in OJB, but sequences was all I was interested in
>> and they seem to work fine so far.
>>
>> Cheers,
>>
>> Michael
>>
>> P.S.
>>
>> Here are the diffs for those interested (sorry if it wraps):
>>
>> diff for NativeIdentifierTest.java:
>>
>> 48c48
>> <             " REF_ID int(11),NAME VARCHAR(250))";
>> ---
>>
>>>             " REF_ID INT, NAME VARCHAR(250))";
>>
>>
>> 58c58
>> <             " NAME VARCHAR(250), FK_ID BIGINT, REF_ID int(11),
>> SINGLE_REF_FK BIGINT)";
>> ---
>>
>>>             " NAME VARCHAR(250), FK_ID BIGINT, REF_ID INT, 
>>> SINGLE_REF_FK BIGINT)";
>>
>>
>>
>>
>> diff for PlatformHsqldbImpl.java:
>>
>> 67a68,81
>>
>>>     public String createSequenceQuery(String sequenceName)
>>>     {
>>>         return "CREATE SEQUENCE " + sequenceName;
>>>     }
>>>
>>>     public String nextSequenceQuery(String sequenceName)
>>>     {
>>>         return "CALL NEXT VALUE FOR " + sequenceName;
>>>     }
>>>
>>>     public String dropSequenceQuery(String sequenceName)
>>>     {
>>>         return "DROP SEQUENCE " + sequenceName;
>>>     }
>>
>>
>>
>>
>>
>> diff for build-torque.xml (based on the file found in torque-gen-3.1,
>> not OJB):
>>
>> 249a250,318
>>
>>>   <!-- S H U T D O W N   C H E C K 
>>
>>
>>    -->
>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>>
>>>   <!-- Hack to check if we need to shutdown the DB after we're done 
>>
>>
>>    -->
>>
>>>   <!-- using it. At the moment, the only DB which this must be done 
>>
>>
>> for -->
>>
>>>   <!-- is HSQLDB when running in the "In-Process" mode. 
>>
>>
>>    -->
>>
>>>   <!-- As this mode can be specified without a keyword, we just check 
>>
>>
>>   -->
>>
>>>   <!-- that the JDBC URL (specified in the dbUrlToCheck property) is 
>>
>>
>>    -->
>>
>>>   <!-- an HSQLDB URL, but not one of the other modes. 
>>
>>
>>    -->
>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>>
>>>
>>>   <target name="shutdown-check">
>>>     <condition property="torque.internal.shutdownAfterSql">
>>>       <and>
>>>         <contains string="${dbUrlToCheck}" substring="jdbc:hsqldb" />
>>>         <not>
>>>           <or>
>>>             <contains string="${dbUrlToCheck}"
>>>                       substring="jdbc:hsqldb:hsql://" />
>>>             <contains string="${dbUrlToCheck}"
>>>                       substring="jdbc:hsqldb:hsqls://" />
>>>             <contains string="${dbUrlToCheck}"
>>>                       substring="jdbc:hsqldb:http://" />
>>>             <contains string="${dbUrlToCheck}"
>>>                       substring="jdbc:hsqldb:https://" />
>>>           </or>
>>>         </not>
>>>       </and>
>>>     </condition>
>>>   </target>
>>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>>
>>>   <!-- A P P E N D   S H U T D O W N   S Q L 
>>
>>
>>    -->
>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>>
>>>   <!-- Appends a SHUTDOWN statement to the file specified in the 
>>
>>
>>    -->
>>
>>>   <!-- shutdownAppendFile property after first checking that it's 
>>
>>
>>    -->
>>
>>>   <!-- necessary using the shutdown-check task. 
>>
>>
>>    -->
>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>>
>>>
>>>   <target name="append-shutdown-sql"
>>>           depends="shutdown-check"
>>>           if="torque.internal.shutdownAfterSql">
>>>
>>>     <echo file="${shutdownAppendFile}" append="true">;
>>> SHUTDOWN;
>>>     </echo>
>>>
>>>   </target>
>>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>>
>>>   <!-- A D D   S H U T D O W N   S Q L   F I L E 
>>
>>
>>    -->
>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>>
>>>   <!-- Adds a shutdown.sql file to the sql dir with a SHUTDOWN 
>>
>>
>>    -->
>>
>>>   <!-- statement in it and also adds this file to sqldb.map after 
>>
>>
>> first -->
>>
>>>   <!-- checking that it's necessary using the shutdown-check task. 
>>
>>
>>    -->
>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>>
>>>
>>>   <target name="add-shutdown-sql-file"
>>>           depends="shutdown-check"
>>>           if="torque.internal.shutdownAfterSql">
>>>
>>>     <echo file="${torque.sql.dir}/shutdown.sql"
>>>           message="SHUTDOWN;" />
>>>
>>>     <echo file="${torque.sql.dir}/sqldb.map" append="true"
>>>             message="shutdown.sql=${torque.project}" />
>>>
>>>   </target>
>>>
>>>   <!-- 
>>
>>
>> ================================================================ -->
>> 280a350,357
>>
>>>     <!-- Append the SHUTDOWN statement if need be -->
>>>     <antcall target="append-shutdown-sql">
>>>       <param name="dbUrlToCheck"
>>>              value="${torque.database.createUrl}" />
>>>       <param name="shutdownAppendFile"
>>>              value="${torque.sql.dir}/create-db.sql" />
>>>     </antcall>
>>>
>> 294a372
>>
>>>
>> 304a383,388
>>
>>>     <!-- Add the shutdown.sql file if need be -->
>>>     <antcall target="add-shutdown-sql-file">
>>>       <param name="dbUrlToCheck"
>>>              value="${torque.database.buildUrl}" />
>>>     </antcall>
>>>
>> 315a400
>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>> For additional commands, e-mail: ojb-user-help@db.apache.org
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
>> For additional commands, e-mail: ojb-dev-help@db.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-dev-help@db.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


Re: Howto: OJB 1.0.0 + Torque 3.1 + HSQLDB 1.7.2

Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi,

thanks for your very detailed description. i'm currently trying to replace the 
old torque with torque 3.1 (for ojb 1.1) and with the help of your post it runs 
quite fine.

but i do have some questions:

how can i get rid of these debug infos ?

[torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
[torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
[torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
[torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
[torque-data-sql] [DEBUG] XmlToAppData - endElement(, , column) called
[torque-data-sql] [DEBUG] XmlToAppData - endElement(, , reference) called
[torque-data-sql] [DEBUG] XmlToAppData - endElement(, , foreign-key) called
[torque-data-sql] [DEBUG] XmlToAppData - endElement(, , table) called

is it possible to use commons-collections 3.1 with torque 3.1 ?

tia
jakob

Michael Hart schrieb:

> G'day,
> 
> I posted this message on the OJB user group - but just in case some 
> developers don't frequent there, I figured I'd post it here as well.
> 
> Could these small changes be considered for the next release of OJB?
> 
> --- snip ---
> 
> Torque 3.1 seems to work out of the box with OJB 1.0.0, but not with the
> OJB JUnit tests because Torque 3.1 doesn't like the schema files used
> for these tests. I've created some new schema files that seem to work OK
> (linked to below).
> 
> HSQLDB 1.7.2 has problems with Torque because databases created using
> HSQLDB's "In-Process" mode (as the standard DB is in the OJB JUnit
> tests) must now be explicitly closed with a "SHUTDOWN" command for other
> processes to use them. I've contacted the HSQLDB guys about a way to do
> this using SQL, so that it could be included in Torque's template files,
> but for now I've settled on patching the build-torque.xml file to do
> this during the build process, if necessary.
> 
> HSQLDB 1.7.2 also has problems with one of OJB's testcases that uses
> hardcoded SQL commands, specifically
> org.apache.ojb.broker.sequence.NativeIdentifierTest as the syntax used
> in this file is not allowed.
> 
> So, here are the steps to get Torque 3.1 working with OJB 1.0.0:
> 
> - Download OJB 1.0.0 from:
> http://db.apache.org/builds/ojb/1.0.0/db-ojb-1.0.0-src.zip
> and unpack the db-ojb-1.0.0 dir.
> 
> - Download torque-gen-3.1 from:
> http://db.apache.org/builds/torque/release/3.1/torque-gen-3.1.zip
> and unpack the torque-gen-3.1 dir.
> 
> - Remove old db-ojb-1.0.0/lib/torque-3.0.2.jar
> 
> - Copy torque-gen-3.1.jar and village-2.0-dev-20030825.jar from
> torque-gen-3.1/lib/ to db-ojb-1.0.0/lib/
> 
> - Replace db-ojb-1.0.0/build-torque.xml with 
> torque-gen-3.1/build-torque.xml
> 
> - Copy over
> http://www.alphalink.com.au/~mwhart/ojb/ojbtest-data.dtd and
> http://www.alphalink.com.au/~mwhart/ojb/ojbtest-data.xml
> to db-ojb-1.0.0/src/schema/
> 
> - Grab copies of j2ee.jar and jdo.jar if you don't already have them and
> copy them to db-ojb-1.0.0/lib/
> 
> - Make sure junit.jar is in $ANT_HOME/lib/ and then run "ant junit" from
> the db-ojb-1.0.0 dir
> (ignore the SQL error when trying to create the DB - you can get rid of
> this by removing the "ECHO Not implemented" on the first line of
> sql/db-init/hypersonic/createdb.vm in torque-gen-3.1.jar - and also
> ignore the log4j ERROR messages - you can get rid of these by removing
> the ", org.apache.torque.engine" at the end of line 15 of
> log4j.properties in torque-gen-3.1.jar)
> 
> With any luck, all tests will pass!
> 
> Now, to get HSQLDB 1.7.2 working with OJB 1.0.0 (assuming previous steps
> have been done):
> 
> - Download HSQLDB 1.7.2 from
> http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_2_3.zip?download
> and unpack the hsqldb dir.
> 
> - Replace db-ojb-1.0.0/lib/hsqldb.jar with new hsqldb/lib/hsqldb.jar
> 
> - Replace
> db-ojb-1.0.0/src/test/org/apache/ojb/broker/sequence/NativeIdentifierTest.java 
> 
> 
> with http://www.alphalink.com.au/~mwhart/ojb/NativeIdentifierTest.java
> (diff below)
> 
> - If you want to support the new sequences in HSQLDB 1.7.2, replace
> db-ojb-1.0.0/src/java/org/apache/ojb/broker/platforms/PlatformHsqldbImpl.java 
> 
> 
> with http://www.alphalink.com.au/~mwhart/ojb/PlatformHsqldbImpl.java
> (diff below)
> 
> - Replace db-ojb-1.0.0/build-torque.xml with
> http://www.alphalink.com.au/~mwhart/ojb/build-torque.xml (diff below)
> 
> - Run "ant junit" from the db-ojb-1.0.0 dir
> 
> Hopefully, all tests will pass again!
> 
> There are probably quite a few more changes introduced in HSQLDB 1.7.2
> that could be updated in OJB, but sequences was all I was interested in
> and they seem to work fine so far.
> 
> Cheers,
> 
> Michael
> 
> P.S.
> 
> Here are the diffs for those interested (sorry if it wraps):
> 
> diff for NativeIdentifierTest.java:
> 
> 48c48
> <             " REF_ID int(11),NAME VARCHAR(250))";
> ---
> 
>>             " REF_ID INT, NAME VARCHAR(250))";
> 
> 58c58
> <             " NAME VARCHAR(250), FK_ID BIGINT, REF_ID int(11),
> SINGLE_REF_FK BIGINT)";
> ---
> 
>>             " NAME VARCHAR(250), FK_ID BIGINT, REF_ID INT, 
>> SINGLE_REF_FK BIGINT)";
> 
> 
> 
> diff for PlatformHsqldbImpl.java:
> 
> 67a68,81
> 
>>     public String createSequenceQuery(String sequenceName)
>>     {
>>         return "CREATE SEQUENCE " + sequenceName;
>>     }
>>
>>     public String nextSequenceQuery(String sequenceName)
>>     {
>>         return "CALL NEXT VALUE FOR " + sequenceName;
>>     }
>>
>>     public String dropSequenceQuery(String sequenceName)
>>     {
>>         return "DROP SEQUENCE " + sequenceName;
>>     }
> 
> 
> 
> 
> diff for build-torque.xml (based on the file found in torque-gen-3.1,
> not OJB):
> 
> 249a250,318
> 
>>   <!-- S H U T D O W N   C H E C K 
> 
>    -->
> 
>>   <!-- 
> 
> ================================================================ -->
> 
>>   <!-- Hack to check if we need to shutdown the DB after we're done 
> 
>    -->
> 
>>   <!-- using it. At the moment, the only DB which this must be done 
> 
> for -->
> 
>>   <!-- is HSQLDB when running in the "In-Process" mode. 
> 
>    -->
> 
>>   <!-- As this mode can be specified without a keyword, we just check 
> 
>   -->
> 
>>   <!-- that the JDBC URL (specified in the dbUrlToCheck property) is 
> 
>    -->
> 
>>   <!-- an HSQLDB URL, but not one of the other modes. 
> 
>    -->
> 
>>   <!-- 
> 
> ================================================================ -->
> 
>>
>>   <target name="shutdown-check">
>>     <condition property="torque.internal.shutdownAfterSql">
>>       <and>
>>         <contains string="${dbUrlToCheck}" substring="jdbc:hsqldb" />
>>         <not>
>>           <or>
>>             <contains string="${dbUrlToCheck}"
>>                       substring="jdbc:hsqldb:hsql://" />
>>             <contains string="${dbUrlToCheck}"
>>                       substring="jdbc:hsqldb:hsqls://" />
>>             <contains string="${dbUrlToCheck}"
>>                       substring="jdbc:hsqldb:http://" />
>>             <contains string="${dbUrlToCheck}"
>>                       substring="jdbc:hsqldb:https://" />
>>           </or>
>>         </not>
>>       </and>
>>     </condition>
>>   </target>
>>
>>   <!-- 
> 
> ================================================================ -->
> 
>>   <!-- A P P E N D   S H U T D O W N   S Q L 
> 
>    -->
> 
>>   <!-- 
> 
> ================================================================ -->
> 
>>   <!-- Appends a SHUTDOWN statement to the file specified in the 
> 
>    -->
> 
>>   <!-- shutdownAppendFile property after first checking that it's 
> 
>    -->
> 
>>   <!-- necessary using the shutdown-check task. 
> 
>    -->
> 
>>   <!-- 
> 
> ================================================================ -->
> 
>>
>>   <target name="append-shutdown-sql"
>>           depends="shutdown-check"
>>           if="torque.internal.shutdownAfterSql">
>>
>>     <echo file="${shutdownAppendFile}" append="true">;
>> SHUTDOWN;
>>     </echo>
>>
>>   </target>
>>
>>   <!-- 
> 
> ================================================================ -->
> 
>>   <!-- A D D   S H U T D O W N   S Q L   F I L E 
> 
>    -->
> 
>>   <!-- 
> 
> ================================================================ -->
> 
>>   <!-- Adds a shutdown.sql file to the sql dir with a SHUTDOWN 
> 
>    -->
> 
>>   <!-- statement in it and also adds this file to sqldb.map after 
> 
> first -->
> 
>>   <!-- checking that it's necessary using the shutdown-check task. 
> 
>    -->
> 
>>   <!-- 
> 
> ================================================================ -->
> 
>>
>>   <target name="add-shutdown-sql-file"
>>           depends="shutdown-check"
>>           if="torque.internal.shutdownAfterSql">
>>
>>     <echo file="${torque.sql.dir}/shutdown.sql"
>>           message="SHUTDOWN;" />
>>
>>     <echo file="${torque.sql.dir}/sqldb.map" append="true"
>>             message="shutdown.sql=${torque.project}" />
>>
>>   </target>
>>
>>   <!-- 
> 
> ================================================================ -->
> 280a350,357
> 
>>     <!-- Append the SHUTDOWN statement if need be -->
>>     <antcall target="append-shutdown-sql">
>>       <param name="dbUrlToCheck"
>>              value="${torque.database.createUrl}" />
>>       <param name="shutdownAppendFile"
>>              value="${torque.sql.dir}/create-db.sql" />
>>     </antcall>
>>
> 294a372
> 
>>
> 304a383,388
> 
>>     <!-- Add the shutdown.sql file if need be -->
>>     <antcall target="add-shutdown-sql-file">
>>       <param name="dbUrlToCheck"
>>              value="${torque.database.buildUrl}" />
>>     </antcall>
>>
> 315a400
> 
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-dev-help@db.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org