Fwd: [JIRA] Commented: (CAY-790) commitChanges() doesn't imply commit in db ?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu Jun 28 2007 - 12:27:28 EDT

  • Next message: Andrus Adamchik (JIRA): "[JIRA] Created: (CAY-817) HSQLDB schema generation may not correctly flush the changes"

    Looks like HSQLDB caching data in memory bites a bunch of users
    (there were more comments on CAY-790). I have a solution that we are
    using in CayenneModeler (see comment below)... Wonder where we can
    put it in the docs? What would be a good place though?

    Andrus

    Begin forwarded message:
    > From: "Andrus Adamchik (JIRA)" <de..ayenne.apache.org>
    > Date: June 28, 2007 7:24:27 PM GMT+03:00
    > To: andru..bjectstyle.org
    > Subject: [JIRA] Commented: (CAY-790) commitChanges() doesn't imply
    > commit in db ?
    >
    >
    > [ https://issues.apache.org/cayenne/browse/CAY-790?
    > page=com.atlassian.jira.plugin.system.issuetabpanels:comment-
    > tabpanel#action_12361 ]
    >
    > Andrus Adamchik commented on CAY-790:
    > -------------------------------------
    >
    > Doing search on Google, looks like HSQLDB keeps some data in
    > memory , without flushing it down to the storage file (unless some
    > limit is reached I guess). Here is a trick that might help you.
    > When your application is about to exit, run the following command
    > to shut down HSQLDB:
    >
    >
    > DataContext context = DataContext.createDataContext();
    > context
    > .performGenericQuery(new SQLTemplate
    > (Someclass.class, "SHUTDOWN"));
    >
    > Could you please report whether this worked or not?
    >
    > Otherwise I don't see a Cayenne-level fix... But we need to confirm
    > that it works and document the workaround somewhere.
    >
    >
    >
    >> commitChanges() doesn't imply commit in db ?
    >> ---------------------------------------------
    >>
    >> Key: CAY-790
    >> URL: https://issues.apache.org/cayenne/browse/CAY-790
    >> Project: Cayenne
    >> Issue Type: Bug
    >> Components: CayenneModeler GUI
    >> Environment: Winxp, Eclipse SDK Version: 3.2.2 Build id:
    >> M20070212-1330, Cayenne, Version: 2.0.2 (January 14 2007),
    >> Reporter: K. Wood
    >> Assignee: Andrus Adamchik
    >> Priority: Blocker
    >>
    >> have been reading the mail archives and didn't see where this
    >> problem ever got fixed.
    >> I am have the exact same thing going on with HSQLDB.
    >> I have the latest versions of that and Cayenne, etc.
    >> Everythign looks hunkey dorey no runtime errors & such, until you
    >> access the db with Squirrel SQL. Nothing is there at all!! No
    >> commits.
    >> This is just the little demo program with the artists and
    >> paintings I'm sure you've seen a zillion times. ( got too many
    >> imports, for testing things atm.)
    >> Nothing I have tried works at all.
    >> I even tried with Derby..which I haven't been able to get to work
    >> without compiler errors as yet.,
    >> (the Cayenne GUI Modeler creates the empty db but this same code
    >> wont compile) anyway...
    >> After reading all the other mail, I think there is a widespread
    >> problem here.
    >> Hope you can shed some light on this.
    >> See what you think:
    >> Code:
    >> package cayenne.tutorial;
    >> import org.apache.cayenne.query.SQLTemplate;
    >> import org.apache.cayenne.query.SelectQuery;
    >> import org.apache.cayenne.query.UpdateQuery;
    >> import org.apache.cayenne.access.DataContext;
    >> import java.util.List;
    >> import java.util.*;
    >> import org.apache.cayenne.exp.Expression;
    >> import org.apache.cayenne.exp.ExpressionFactory;
    >> import org.apache.cayenne.exp.ExpressionParameter;
    >> import org.apache.cayenne.query.SelectQuery;
    >> public class up_dt {
    >> public static void main(String[] args) {
    >>
    >> DataContext ctxt = DataContext.createDataContext();
    >>
    >> Artist picasso = (Artist) ctxt.newObject(Artist.class);
    >>
    >>
    >> picasso.setName("Pablo Picasso");
    >> picasso.setDateOfBirthString("18811025");
    >> Gallery metropolitan = (Gallery) ctxt.newObject(Gallery.class);
    >> metropolitan.setName("Metropolitan Museum of Art");
    >>
    >> Painting selfPortrait = (Painting)
    >> ctxt.createAndRegisterNewObject(Painting.class);
    >> selfPortrait.setName("Self-portrait");
    >> selfPortrait.setYear(new Integer(1907));
    >> selfPortrait.setArtist(picasso);
    >> metropolitan.addToPaintings(selfPortrait);
    >>
    >> Painting theDream = (Painting) ctxt.createAndRegisterNewObject
    >> (Painting.class);
    >> theDream.setName("The Dream");
    >> theDream.setYear(new Integer(1932));
    >> theDream.setArtist(picasso);
    >> metropolitan.addToPaintings(theDream);
    >> // Set artist on both paintings; as a side effect this will
    >> automatically
    >> // add these paintings to the Artist's paintings collection.
    >>
    >> // theDream.setArtist(picasso);
    >>
    >>
    >> // Painting girl = (Painting) ctxt.newObject(Painting.class);
    >> // girl.setName("Girl Reading at a Table");
    >>
    >>
    >> // Painting stein = (Painting) ctxt.newObject(Painting.class);
    >> // stein.setName("Gertrude Stein");
    >> // picasso.addToPaintings(girl);
    >> // picasso.addToPaintings(stein);
    >>
    >> // girl.setGallery(metropolitan);
    >> // stein.setGallery(metropolitan);
    >>
    >> ctxt.commitChangesToParent(); // not committing the updates. Why?
    >>
    >>
    >> //
    >> }
    >> }
    >> Heres the log:
    >> INFO QueryLogger: Created connection pool: jdbc:hsqldb:C:/db_area/
    >> cayenne/testdb
    >> Driver class: org.hsqldb.jdbcDriver
    >> Min. connections in the pool: 1
    >> Max. connections in the pool: 1
    >> INFO QueryLogger: Opening connection: jdbc:hsqldb:C:/db_area/
    >> cayenne/testdb
    >> Login: sa
    >> Password: *******
    >> INFO QueryLogger: +++ Connecting: SUCCESS.
    >> INFO QueryLogger: Detected and installed adapter:
    >> org.apache.cayenne.dba.hsqldb.HSQLDBAdapter
    >> INFO QueryLogger: --- will run 2 queries.
    >> INFO QueryLogger: --- transaction started.
    >> INFO QueryLogger: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE
    >> TABLE_NAME = 'GALLERY'
    >> INFO QueryLogger: === returned 1 row. - took 32 ms.
    >> INFO QueryLogger: UPDATE AUTO_PK_SUPPORT SET NEXT_ID = NEXT_ID +
    >> 20 WHERE TABLE_NAME = 'GALLERY'
    >> INFO QueryLogger: === updated 1 row.
    >> INFO QueryLogger: --- will run 2 queries.
    >> INFO QueryLogger: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE
    >> TABLE_NAME = 'ARTIST'
    >> INFO QueryLogger: === returned 1 row. - took 0 ms.
    >> INFO QueryLogger: UPDATE AUTO_PK_SUPPORT SET NEXT_ID = NEXT_ID +
    >> 20 WHERE TABLE_NAME = 'ARTIST'
    >> INFO QueryLogger: === updated 1 row.
    >> INFO QueryLogger: --- will run 2 queries.
    >> INFO QueryLogger: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE
    >> TABLE_NAME = 'PAINTING'
    >> INFO QueryLogger: === returned 1 row. - took 0 ms.
    >> INFO QueryLogger: UPDATE AUTO_PK_SUPPORT SET NEXT_ID = NEXT_ID +
    >> 20 WHERE TABLE_NAME = 'PAINTING'
    >> INFO QueryLogger: === updated 1 row.
    >> INFO QueryLogger: --- will run 3 queries.
    >> INFO QueryLogger: INSERT INTO GALLERY (ID, NAME) VALUES (?, ?)
    >> INFO QueryLogger: [bind: 200, 'Metropolitan Museum of Art'] INFO
    >> QueryLogger: === updated 1 row.
    >> INFO QueryLogger: INSERT INTO ARTIST (DATE_OF_BIRTH, ID, NAME)
    >> VALUES (?, ?, ?) INFO QueryLogger: [bind: '1881-10-25
    >> 00:00:00.0', 200, 'Pablo Picasso'] INFO QueryLogger: === updated
    >> 1 row.
    >> INFO QueryLogger: INSERT INTO PAINTING (ARTIST_ID, GALLERY_ID,
    >> ID, NAME, YEAR) VALUES (?, ?, ?, ?, ?) INFO QueryLogger: [bind:
    >> 200, 200, 200, 'The Dream', 1932] INFO QueryLogger: === updated 1
    >> row.
    >> INFO QueryLogger: [bind: 200, 200, 201, 'Self-portrait', 1907]
    >> INFO QueryLogger: === updated 1 row.
    >> INFO QueryLogger: +++ transaction committed.
    >> ***** end *****
    >
    > --
    > This message is automatically generated by JIRA.
    > -
    > You can reply to this email to add a comment to the issue online.
    >
    >



    This archive was generated by hypermail 2.0.0 : Thu Jun 28 2007 - 12:28:14 EDT