[BioSQL-l] FW: [Biojava-dev] Re: MORE Oracle BioSQL & BioJava problems

Hilmar Lapp hlapp at gnf.org
Thu Aug 26 20:07:18 EDT 2004


Michael, sorry for the delay in responding. I'll add the table to 
biosql. Thanks a lot for collecting this and getting it to work. (I 
assume it does work now?)

As for fixing Biojava, that Matt's/Thomas'/Mark's domain.

	-hilmar

On Aug 24, 2004, at 7:55 AM, Michael Griffith wrote:

> Hello all,
>
> For some reason this message was rejected by the moderator of the 
> bio-sql
> mail list.  I believe it may because I had a zip file attachment of the
> bio-sql/oracle scripts attached. I was asked by the moderator to 
> resend it.
>
> I am doing so, and posting to the bioJava group as well.  I would like 
> to
> help Shepard this problem to resolution, but have had no real 
> experience
> working on Open source projects to make fixes, etc.  Please let me 
> know what
> else I may do.
>
> Cheers!
>
> MG
> ------ Forwarded Message
> From: Michael Griffith <mg at base-pair.com>
> Date: Thu, 19 Aug 2004 16:00:02 -0500
> To: Michael Heuer <heuermh at acm.org>
> Cc: <biojava-dev at biojava.org>, <biosql-l at open-bio.org>
> Subject: Re: [Biojava-dev] Re: MORE Oracle BioSQL & BioJava problems
>
> Michael,
>
> The BioSQL DDL is the current version that is in the CVS for bio-sql
> project. It is also attached here as a zip file.  In the create objects
> section there is a missing table that needs to get created after all 
> the
> other objects are created:
>
> CREATE TABLE term_relationship_term (
>     term_relationship_id    int NOT NULL,
>     term_id                 int NOT NULL
>     )
>
> In the class org.biojava.bio.seq.db.biosql.BioSQLSequenceDB.java, at 
> line
> 446, the Prepare statement reads:
>
> PreparedStatement create_biosequence = conn.prepareStatement("insert 
> into
> biosequence " + "(bioentry_id, version, length, seq, alphabet) " +
> "values(?, ?, ?, ?, ?)");
>
> I think it should be something like:
>
> PreparedStatement create_biosequence = conn.prepareStatement("insert 
> into
> biosequence " + "(bioentry_id, version, length, seq, alphabet) " +
> "values(?, ?, ?, empty_clob(), ?)");
>
> Then -- I think you can do this with the JDBC clob classes, but I have
> always used the Oracle JDBC/CLOB classes.  I would think you'd want to 
> keep
> all the oracle stuff segregated out...
>
> After your insert is successful in biosequence, you'll want to update 
> the
> clob table.  You have to select the record for update using the newly
> inserted id.
>
>     String sqlLock= "SELECT seq FROM biosequence WHERE bioentry_id = ? 
> FOR
> UPDATE";
>     String sqlUpdate="UPDATE biosequence SET seq=? where 
> bioentry_id=?";
>         try {
>             // First get the locator (necessary for Oracle)
>             //
>             // Get newly created record from DB
>             stNew = conn.prepareStatement(sqlLock);
>             stNew.setInt(1, bioentry_id);
>             rsNew = stNew.executeQuery();
>             rsNew.next();
>
>             oracle.sql.CLOB dbClob = (oracle.sql.CLOB) 
> rsNew.getClob(1);
>             pst = conn.prepareStatement(sqlUpdate);
>             dbClob.putString(1, seqstr);
>             pst.setClob(1, dbClob);
>             pst.setInt(2, bioentry_id);
>             result = pst.executeUpdate();
>             if (result < 0) {
>                 conn.rollback();
>             } else {
>                 conn.commit();
>             }
>         } catch (Exception e) {
>             // Log the error...
>         } finally {
>             try {
>                 // Close all resources...
>                 //
>             }
>             catch (Exception e) {
>                 // Log any errors
>             }
>         }
>
>     }
>
>
> On 8/18/04 2:49 PM, "Michael Heuer" <heuermh at acm.org> wrote:
>
>> Hello Michael,
>>
>> I found a couple of instances of Oracle on which to test, 8.1.7.4.0 on
>> Solaris and 9.2.0.1.0 on Solaris.
>>
>> If you could send me your version of the biosql DDL and a source code
>> example of what you mean by
>>
>>> In all Java/Oracle applications we've developed, we've always 
>>> inserted
>>> an empty_clob(), and then updated the clob separately using the 
>>> record
>>> locator.
>>
>> then I'll give it a go.
>>
>> Or alternatively, if you know what changes need to be made to the 
>> biojava
>> codebase, then you just need to do
>>
>> $ cvs -d :pserver:cvs at cvs.open-bio.org:/home/repository/biojava login
>> (when prompted, the password is 'cvs')
>>
>> $ cvs -d :pserver:cvs at cvs.open-bio.org:/home/repository/biojava co
>> biojava-live
>> $ cd biojava-live
>>
>> (make changes to source code)
>>
>> $ ant
>> (to make sure it builds properly)
>>
>> $ cvs diff -u . > patch.txt
>> (to generate the patch)
>>
>>  michael
>>
>>
>
> ------ End of Forwarded Message
>
> _______________________________________________
> BioSQL-l mailing list
> BioSQL-l at open-bio.org
> http://open-bio.org/mailman/listinfo/biosql-l
>
-- 
-------------------------------------------------------------
Hilmar Lapp                            email: lapp at gnf.org
GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
-------------------------------------------------------------



More information about the BioSQL-l mailing list