Commit Graph

903 Commits

Author SHA1 Message Date
Michael Bayne 07934f0187 A bare-bones transaction test.
Seems to be working...
2014-10-01 14:48:47 -07:00
Michael Bayne 9cead5e7e5 Oops, let's put those statements int the right order. 2014-10-01 14:33:08 -07:00
Michael Bayne 872b2d9ef3 Some robustness bits.
It's not clear what the right thing to do is if the database connection fails
during the middle of a transaction. In general, one can't talk to the database
after that, so I'm assuming the transaction is aborted (or eventually aborted)
and rolled back, and everything has to be retried.

I'm not currently tracking state inside a Transaction, which means that I don't
freak out if you call commit() then call rollback(), I just ignore the latter
call, and it's also possible to do something stupid like:

  Transaction tx = Transaction.start(ctx);
  try {
    _somRepo.doOp(..);
  } catch (DatabaseException de) {
    // no problem!, keep on keepin' on
  }
  _someRepo.doAnotherOp(...);
  tx.commit();

If the first repo op fails due to a database connection failure, the
transaction will get a new database connection for the second op and do the
last half of the op in a new connection.

I guess I'll have to do some state tracking, because stupid as the above code
is, I'm sure some circumstance will arise where it seems like a reasonable
thing to do, and hilarity will ensue. Blah.
2014-10-01 14:27:55 -07:00
Michael Bayne d676847c24 Initial pass at transaction support.
Now to test it!
2014-10-01 14:16:48 -07:00
Michael Bayne 63f69eb843 Tweaky tweak. 2014-10-01 11:25:16 -07:00
Michael Bayne 9874be4034 Added special update() provided by Ray.
This allows one to update a record iff some additional criteria are met.
2014-10-01 11:19:21 -07:00
Michael Bayne f663ac9bd4 Bump version in docs. 2014-06-26 11:57:47 -07:00
Michael Bayne 0047c94dc4 [maven-release-plugin] prepare for next development iteration 2014-06-26 11:55:38 -07:00
Michael Bayne 3f8400447c [maven-release-plugin] prepare release depot-1.6.5 2014-06-26 11:55:35 -07:00
Michael Bayne 1d826d903f Beans/frank.
I should probably add a test for this. Ha!
2014-06-26 11:50:45 -07:00
Michael Bayne 0583572f34 More docs link fixes. 2014-06-25 16:19:20 -07:00
Michael Bayne 201a720982 Docs link fixes. 2014-06-25 16:18:20 -07:00
Michael Bayne 38dee2e948 Need the .md suffixes. 2014-06-25 16:16:33 -07:00
Michael Bayne 634651fa5a Moved wiki docs into main project.
Why have them separate? Github allows reading docs right in the main tree.
2014-06-25 16:15:18 -07:00
Michael Bayne 3db7b4445b Fixed wiki links. Added API docs link 2014-06-25 16:12:37 -07:00
Michael Bayne 44091660ea Migrated to Github. 2014-06-25 15:39:13 -07:00
Michael Bayne 712fe35283 [maven-release-plugin] prepare for next development iteration 2014-06-25 21:54:35 +00:00
Michael Bayne ad864e3498 [maven-release-plugin] prepare release depot-1.6.4 2014-06-25 21:54:27 +00:00
Michael Bayne e12e0bf15c Update Maven compiler plugin. 2014-06-25 21:49:12 +00:00
Michael Bayne c60d8e2dde A bunch of Javadoc fixes. 2014-06-25 21:49:09 +00:00
Michael Bayne a961f5e4c2 Version updates! Mostly plugins, samskivert 1.8.2.
Also added maven-dependency-plugin so that hopefully I can release without
freakoutery.
2014-06-25 21:48:53 +00:00
Michael Bayne 97b404c236 Provide a modicum of thread safety for marshaller init.
The _marshallers table must be guarded as computed marshallers can be created
at any time, and marshaller initialization itself must be guarded for the same
reason.

Thanks to Ray for pointing this out.
2014-06-25 21:48:50 +00:00
Ray Greenwell c02625f0d7 Preparing for 1.7-SNAPSHOT development. 2014-05-20 18:37:46 +00:00
Ray Greenwell 832f934faf Preparing for depot-1.6.3 release. 2014-05-20 18:34:06 +00:00
Ray Greenwell d45af7c98c Depend on samskivert 1.7.4.. 2014-05-20 18:33:19 +00:00
Michael Bayne 3906c69a88 Liaison now handles exceptioning for us. 2014-05-02 20:46:36 +00:00
Michael Bayne f2be63ec19 Choke usefully if we can't obtain last inserted id. 2014-05-02 20:14:43 +00:00
Ray Greenwell 800add9667 Clean up imports. 2014-05-02 18:28:50 +00:00
Michael Bayne 9ebd2c677c Use new smarter DatabaseLiaison.lastInsertedId. 2014-05-02 18:19:51 +00:00
Ray Greenwell 2cf224dd18 Whoops! My last edit didn't actually work, it ended up falling back.
This works, but mdb is going to move the special caseyness inside the Liaison.
2014-05-02 18:12:46 +00:00
Ray Greenwell 1a9fc404ba Ok, this works on both mysql and postgres.
On mysql the column name ends up being "GENERATED_KEY".
2014-05-02 01:31:58 +00:00
Ray Greenwell e2a9702c46 This getGeneratedKeys business doesn't seem to work for us on mysql.
Trying a catch/fallback. This should at least provide a workaround for now...
2014-05-01 23:01:55 +00:00
Michael Bayne e08911369e Only use RETURN_GENERATED_KEYS on inserts.
This works around "unsophisticated" Postgres JDBC drivers which blindly tack
"RETURNING *" onto a query if RETURN_GENERATED_KEYS is supplied.
2013-11-20 19:45:24 +00:00
Michael Bayne ca4ec1f4d3 Reverse order in addAll(List,Cons).
This causes the elements of the list to match the original order they were
added to the cons list (which stores elements "backwards").

This order matters for joins, as Ray discovered.
2013-10-10 22:06:34 +00:00
Michael Bayne 1547c7d44c [maven-release-plugin] prepare for next development iteration 2013-09-17 19:11:08 +00:00
Michael Bayne 7e1f8d4230 [maven-release-plugin] prepare release depot-1.6.2 2013-09-17 19:11:04 +00:00
Michael Bayne 99a4d7a18e Only rewrite record file if it changed. 2013-09-17 19:07:19 +00:00
Michael Bayne bc8a18dec5 Factor the logic of genrecord from the Ant harness. 2013-09-17 19:07:16 +00:00
Michael Bayne 58ede042a6 Fixed some use of wrong log helper. 2013-05-24 18:45:26 +00:00
Michael Bayne 8a74276caf Various tidyings. 2013-05-24 18:30:57 +00:00
Michael Bayne 952d01c55b Info -> debug for initial version record message.
It's not that important. We already log a message indicating that we created
the table for the first time, which will always follow this message.
2013-05-24 18:30:53 +00:00
Michael Bayne 1bee1d0351 Revamp identity value generator to use Statement getGeneratedKeys.
Most JDBC drivers have supported this for ages. No longer do we need the
hackery of turning around and doing another query to obtain generated key
values.
2013-05-16 18:42:16 +00:00
Michael Bayne 81c24f56bf Fix rawtypes. 2013-05-16 18:42:13 +00:00
Michael Bayne 0b5369fd11 Do this cast in a way that Java 7 doesn't complain about. 2013-05-16 18:42:09 +00:00
Michael Bayne 0c26a26ce0 Bump HSQLDB to 2.9, fix test that assumed count(*) returned int. 2013-05-16 18:42:05 +00:00
Michael Bayne e468e2937a Add nexus-staging-maven-plugin; makes releases easier. 2013-05-08 23:33:03 +00:00
Michael Bayne f3b7af452d [maven-release-plugin] prepare for next development iteration 2013-05-07 19:54:03 +00:00
Michael Bayne 1f0a64b8e3 [maven-release-plugin] prepare release depot-1.6.1 2013-05-07 19:53:59 +00:00
Michael Bayne 8803b2de12 Use latest guava and samskivert. 2013-05-07 19:51:36 +00:00
Michael Bayne c340e7062d Use normal Guava. 2013-05-07 19:39:37 +00:00