http://commons.apache.org/proper/commons-pool/ 2.2
The clojure end should manage connection handling for you, if you need to keep a connection open (or transactions) there are (shadow.pgsql/with-connection db ...) and (shadow.pgsql/with-transaction db ...) macros, you should never actually need to touch the Connection object yourself. For Java the intended interface is shadow.pgsql.DatabasePool.withConnection(DatabaseTask ...). HTH, /thomas On Monday, August 25, 2014 2:45:29 AM UTC+2, Shashy Dass wrote: > > What does the library do for connection pooling? > > Thanks, > Shashy > > On Saturday, August 23, 2014 8:05:37 PM UTC-4, Thomas Heller wrote: >> >> EDN/Transit on the backend might be nice, but a little much for me. I'll >> take it if you feel like a lot of C. jsonb in 9.4 will have to do for now. >> >> Transparent encoding/decoding is already built-in to the client though, >> even with array support to encode a clojure set to postgres text[] and back. >> >> See: >> https://github.com/thheller/shadow-pgsql/blob/master/src/examples/repl.clj >> >> https://github.com/thheller/shadow-pgsql/blob/90639eabc9f70ab9f8898b47088e7c07baa4f9d7/test/shadow/pgsql_test.clj#L45-L63 >> >> edn-type is in there too, just need to start writing proper tests and >> documentation. >> >> Cheers, >> /thomas >> >> >> On Saturday, August 23, 2014 11:24:14 PM UTC+2, Jason Jackson wrote: >>> >>> This makes me wonder if it would make sense to create a Postgresql >>> plugin that adds a keyword type and other similar types, that would >>> allow for a more precise roundtrip between Clojure and Postgres. >>> >>> Jason >>> >>> On Sat, Aug 23, 2014 at 11:23 AM, Thomas Heller <th.h...@gmail.com> >>> wrote: >>> > Hey Kyle, >>> > >>> > thanks for the Feedback. Appreciate it. >>> > >>> > I think you misunderstood the meaning of a "type" in shadow-psql. A >>> "type" >>> > is merely the format of how a given value is represented on the wire >>> since >>> > the backend needs to understand what we send it. Postgres supports 2 >>> > different Wire Formats: Text and Binary. While Text is considered the >>> > "default", binary is usually a lot more efficient. pgjdbc for example >>> only >>> > supports the text format. I try to be binary first, which works for >>> most >>> > types so far. (Numeric is giving me trouble, but I'll eventually >>> figure that >>> > out). I allow overwriting the "types" cause not everything I store in >>> > postgres is understood by it (EDN, Keywords, ...). By hooking directly >>> into >>> > the encode/decode code I can efficiently do the transformation >>> on-the-fly. >>> > In my completely unscientific preliminary benchmark I cut the query >>> time >>> > from pgjdbc 650ms to shadow-pgsql 200ms and that is for very simple >>> types >>> > (50k rows) with no optimizations done yet. I expect the difference to >>> be >>> > much larger if you use a timestamp, timestamptz or bytea for example, >>> as the >>> > text format for those types carries a bit more overhead. But once >>> everything >>> > is stable I will do some real benchmarks. Better performance was not >>> the >>> > reason I wrote this, just a pleasant side-effect. >>> > >>> > As for the amount of work: its pretty much done. Some more exotic >>> features >>> > need to be implemented, but those were never available via JDBC >>> anyways (eg. >>> > COPY). I think its stable enough that I will begin moving my projects >>> > "soon", when I release everything to production I'll probably release >>> a >>> > 1.0.0-RC. shadow-pgsql can not be layered on top of JDBC, well >>> technically >>> > thats what I did for the last 2 years >>> > (https://gist.github.com/thheller/de7ecce0db58130ae6b7) BUT it >>> required some >>> > ugly reflection calls since the PGJDBC does not expose all the >>> information I >>> > needed. In the end I decided that I'd feel better to rewrite >>> everything from >>> > scratch as the documentation is quite good and the protocol is simple. >>> > >>> > Since the non-Java world does just fine without JDBC, I think we can >>> do too. >>> > ;) Also, the "Illusion" JDBC provides that you can just switch >>> databases if >>> > you feel like it only holds until you start using postgres-specific >>> > features. Not all databases have arrays, hstore or json types. >>> > >>> > Regards, >>> > /thomas >>> > >>> > >>> > On Saturday, August 23, 2014 5:12:30 PM UTC+2, Kyle Cordes wrote: >>> >> >>> >> On Thursday, August 21, 2014 at 1:00 PM, Thomas Heller wrote: >>> >> > Hey Clojure Folk, >>> >> > >>> >> > I'm close to releasing the first alpha version of >>> >> > https://github.com/thheller/shadow-pgsql a "native" interface to >>> PostgreSQL >>> >> > I wrote. >>> >> > >>> >> > Its an implementation of the native binary protocol without any >>> intent >>> >> > to ever support JDBC. Mostly because that provides a bunch of >>> features I >>> >> > never use, but no support for features I wanted. It is mostly Java >>> but I >>> >> > will probably only use it from Clojure so that is my primary goal >>> going >>> >> > forward. I think the Java bits are close to stable. >>> >> > >>> >> > I'm looking for interested beta testers and feedback. I'm bad at >>> writing >>> >> > docs cause I never know where to start since there are so many >>> features and >>> >> > differences to JDBC. >>> >> > >>> >> >>> >> >>> >> As a user of both Postgres and Clojure, I find this very interesting. >>> It’s >>> >> helps with a couple of pain points around JDBC, such the fact that >>> any >>> >> nonstandard feature ends up hidden behind a untyped interface passing >>> >> strings around. But I also have a couple of bits of feedback that are >>> a >>> >> little more skeptical: >>> >> >>> >> First, the amount of work it will take to get this to a complete >>> enough >>> >> state that large projects could safely switch to it, could be >>> substantial. >>> >> It makes me wonder if, instead, this could be built as a layer up on >>> top of >>> >> the Postgres JDBC driver. This would not be as elegant because it >>> would not >>> >> strip out as much unnecessary code, but it may be quite a lot less >>> work. >>> >> >>> >> Second, it seems to most effectively target people who are both very >>> type >>> >> oriented, yet are using Java or Clojure. It seems to me that folks >>> who are >>> >> so concerned with types that they would step away from the standard >>> way of >>> >> talking to databases generically, might be found over in the >>> community of >>> >> people using more rigidly typed languages like Haskell etc. >>> >> >>> >> Third, although I like the idea of leveraging the features of the >>> tool you >>> >> are using (like Postgres), at the same time experiences taught me >>> that, the >>> >> more firmly a project seems destined to never switch to a different >>> brand of >>> >> database, the more likely some future unexpected opportunity will >>> come up >>> >> where that is exactly what is needed. I suppose this is just Murphy’s >>> Law. >>> >> >>> >> I don’t want to sound discouraging though, I really like this idea. >>> >> >>> >> -- >>> >> Kyle Cordes >>> >> http://kylecordes.com >>> >> >>> >> >>> >> >>> > -- >>> > You received this message because you are subscribed to the Google >>> > Groups "Clojure" group. >>> > To post to this group, send email to clo...@googlegroups.com >>> > Note that posts from new members are moderated - please be patient >>> with your >>> > first post. >>> > To unsubscribe from this group, send email to >>> > clojure+u...@googlegroups.com >>> > For more options, visit this group at >>> > http://groups.google.com/group/clojure?hl=en >>> > --- >>> > You received this message because you are subscribed to the Google >>> Groups >>> > "Clojure" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> an >>> > email to clojure+u...@googlegroups.com. >>> > For more options, visit https://groups.google.com/d/optout. >>> >> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.