FoundationDB/sql-layer — pull request #1576 by MMcM (2014-12-10 20:46:43+00:00)
Title: Implement new isolation levels

Requested isolation levels to the two drivers are converted into the recently added transaction scan options.

Specific questions for review:

* To allow setting our new isolation levels via embedded JDBC, this branch invents new integer constants. If one of them is given, it then exposes the actual isolation level (perhaps not the one requested), not just the standard ones. Would a whole new method be superior?

* What should happen if you start a transaction, do some updates, and then request reduced isolation? Right now, changes will be committed somewhere along the way. On the other hand, if the isolation had been set earlier, the update would fail due to the read-only transaction that it implies.

* Note that test case for DDL during a long-running scan. Is the assumption correct that changes are never done in-place? But instead the new form is in a new directory. So that out-of-date meta-data cannot be used to try to interpret key-value pairs in a changed directory. It would be straightforward to add a check that the AIS generation has not changed in the new transaction. But that would mean that *any* DDL would cause an error, which might be inconvenient in production.

* What is a good way to test this with more data to check that it actually provides a way of avoiding past_version? Actually adding a test that takes 30 seconds, say, to run, is easy enough, but obviously adds that time to development testing.