Git Product home page Git Product logo

Comments (7)

brettwooldridge avatar brettwooldridge commented on May 20, 2024

I am committing a fix for the former. The trouble with the later is that the user can alter the isolation level of the connection, just like auto-commit, and therefore it needs to be reset.

from hikaricp.

brettwooldridge avatar brettwooldridge commented on May 20, 2024

Fix committed to dev.

from hikaricp.

zimmi avatar zimmi commented on May 20, 2024

Thanks.

Regarding the caching thing, I thought of this:

Make getTransactionIsolation really cheap by caching the isolation level in a field in the wrapping Connection.
setTransactionIsolation does its thing and also writes to this field.

getConnection on the pool then can call the now cheap getTransactionIsolation and only call setTransactionIsolation if the default pool level is different, thus saving the roundtrip to the database.

But if that really is worth the added complexity is up to you.

from hikaricp.

brettwooldridge avatar brettwooldridge commented on May 20, 2024

It's not necessarily the complexity I worry about, I'm more concerned that there is a reason that PostgreSQL is required to make the roundtrip. Otherwise, why would they have implemented the driver that way?

from hikaricp.

zimmi avatar zimmi commented on May 20, 2024

That's a good point. Seems more like an optimization the driver should do if possible. I will check with the pgjdbc team.

from hikaricp.

brettwooldridge avatar brettwooldridge commented on May 20, 2024

You may be interested in this thread:

https://groups.google.com/forum/#!topic/hikari-cp/7hgIWvE7DiY

Basically, like PostgreSQL, this user found that SQL Server performs a roundtrip on setTransactionIsolation(). I have checked in an optimization to the dev branch that will only reset the transaction isolation level if it is detected that the user actually altered it. In the base case, this completely avoids the call.

from hikaricp.

zimmi avatar zimmi commented on May 20, 2024

Thanks for the info.

Just as a follow up:
The pgjdbc drivers setTransactionIsolation sets the isolation level through SQL. So nothing is preventing a user from altering the isolation level without the setTransactionIsolation-API.
I guess that's the reason why getTransactionIsolation has to roundtrip to the database to be certain. If one wants 100% equally configured connections to be handed out from the pool, I'm not sure if the setTransactionIsolation call can be avoided.

from hikaricp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.