Re: JDBC 4 Compliance - Mailing list pgsql-jdbc

From Andreas Joseph Krogh
Subject Re: JDBC 4 Compliance
Date
Msg-id OrigoEmail.2ba.7d515e0774624e3.13f8511b41e@prod2
Whole thread Raw
In response to Re: JDBC 4 Compliance  (Gavin Flower <GavinFlower@archidevsys.co.nz>)
List pgsql-jdbc
<div>På torsdag 27. juni 2013 kl. 02:20:17, skrev Gavin Flower <<a href="mailto:GavinFlower@archidevsys.co.nz"
target="_blank">GavinFlower@archidevsys.co.nz</a>>:</div><blockquotestyle="border-left: 1px solid rgb(204, 204,
204);margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="moz-cite-prefix">On 27/06/13 11:57, Kevin Wooten
wrote:</div><blockquotecite="mid:9C4E6298-527E-4142-ACD0-0015FFBA7B5F@me.com" type="cite"><div><div>On Jun 26, 2013, at
3:44PM, Dave Cramer <<a href="mailto:pg@fastcrypt.com" moz-do-not-send="true"
target="_blank">pg@fastcrypt.com</a>>wrote:</div>   <blockquote type="cite"><div dir="ltr">Well I'm curious about a
fewthings. <div> </div><div style="">1) I just tried to build it, given I have no idea how it's not surprising it
failedto build. But there are no clear instructions on how to build it.</div></div></blockquote><div> </div> It's a
mavenbuild 'mvn package' should suffice.  About 4 or 5 other people have contributed in some way and nobody has yet run
intoissues building the project.  You are correct there isn't much documentation for anything as I am the only regular
contributorit hasn't been necessary.  On the github page there is a link to a snapshot release build for people to
downloadand try (a single jar).<br />   <blockquote type="cite"><div dir="ltr"><div style="">2) it appears to pull in
atleast a few other jars, how big is it when it's built? I personally use this on an embedded system where size
matters</div></div></blockquote><div> </div><div>Itonly uses Netty for async i/o and Guava for utils (which can be
removed). Currently the jar is built using the maven assembly plugin and produces a large jar because it pulls all of
Nettyand Guava into it; which is 3.8MB.   Netty and Guava combine to contribute over 3MB of that size but the necessary
bitsof both projects are small.  Switching from the maven assembly plugin to the maven shade plugin would reduce the
sizedramatically as it only pulls in the used class files.  My best guess would be that it ends up around 700k or so.
 Giventhat the current driver is around 580k it shouldn't be that much different in the final version.</div>  
<blockquotetype="cite"><div dir="ltr"><div style="">3) It's my understanding that there will be resistance by larger
consumersto using external jars even if they are built into a single jar.</div></div></blockquote><div> </div><div>I
don'tcare to get into this discussion again.  I'll just say this… Netty is one of the few well respected async i/o
librariesout there.  Synchronous i/o is very hard to get right without a framework and asynchronous i/o is downright
impossible.The current driver doesn't use async i/o and has to program around deadlocks/stalls related to it's
synchronousi/o approach; and according to the current code comments doesn't seem to be completely protected against
them. For these reasons, and the added benefits of supporting asynchronous notifications from the server make using a
librarya no-brainer.</div>   <blockquote type="cite"><div dir="ltr"><div style=""> </div><div style="">4) as it appears
toonly target one JDBC version what is the plan to deal with other versions without using abstract classes like the
currentjar, and if so how is that any better ?</div></div></blockquote><div> </div><div>To support other JDBC versions
Iplan to use a maven java preprocessor plugin rather than the abstract/concrete class approach which make the code very
toget introduced to.</div>   <blockquote type="cite"><div dir="ltr"><div style="">5) does it support all current
versionsof postgresql (ie back to 8.4) ?</div></div></blockquote><div> </div> No. It was written knowing it's adoption
wouldtake time and as such I wrote it specifically for 9.2+.</div><div> </div><div><blockquote type="cite"><div
dir="ltr"><divstyle=""> </div><div style="">Lastly, I've never heard of an open source project where a bunch of totally
newpeople come in and propose forking the project without any prior commitment to the project
?</div></div></blockquote><blockquotetype="cite"><div dir="ltr"><div style=""> </div><div style="">Why is there a big
desireto drop the existing code base just to support a few new very unused features (I'm presuming this because there
aren'tthat many requests for them) ?</div><div style=""> </div></div></blockquote><div> </div><div><div>I believe this
speaksto the larger point that is at discussion here.  A number of people are/were enthusiastic to help out with the
mainstreamdriver by adding support for new features in PostgreSQL itself and bringing the driver up to date with
regardsto JDBC and other spec. conformance.  Due to the issues  and perceptions, that I and others, laid out at the
openingof this thread it seems a number of people think this project is moving at too slow a pace.  It also seems that
anumber of people think that the project could move forward faster by not specifically tying new development to the
mainstreamcodebase.</div><div> </div><div>Alas, as we discuss this, it's becoming obvious that point I've been trying
tomake is somewhat failing on deaf ears.  The current driver is a hinderance to people who want to use the new and
interestingfeatures of PostgreSQL.   In my example, UDT's are well supported, and have been for years, in both
PostgreSQLand JDBC but the driver has completely ignored them for years as well.   As a person who has implemented
thesenew features I can tell you a major overhaul in core is required to add these features properly.  All I've heard
inresponse is "don't touch it, it's stable!".  So, I supposed you'll continue by band aiding it yet again; adding just
enoughcode to claim some level of conformance and leave it in a state extremely far behind the server
itself.</div><div> </div><div>Iwant to add one last example to further my point.  You asked "Why is there a big desire
todrop the existing code base just to support a few new very unused features?".  It's not just to support some unused
features. Java 6/JDBC 4 has been EOL'd by Oracle and this driver hasn't even bothered to support the Java 7/JDBC 4.1
spec. That's the whole reason this thread got started. Somebody was looking for a feature the Java documentation
clearlysaid should be there and could not find it.  Confusion ensued and now here we are.  That, to me, speaks volumes
aboutthe lethargic pace of this project.</div><div> </div><div>My apologies for joining the discussion and especially
formy above rant.  I never intended to disrupt this project as it appears you believe it has.  Actually, I intended to
comehere and help out in an impactful way.  I wanted a driver that unlocks all the potential of the server that I
preferand instead of complaining, I chose to do something about it.   At this point it sounds like my best bet is to
quietlyreturn to my work on that project and stop causing a disruption around here.  I will say that I welcome any and
allpeople who would like to join me in my effort.  It seems the political climate is just not there for joining
forces.</div><div> </div></div><blockquotetype="cite"><div dir="ltr"><div style=""> </div></div><div
class="gmail_extra"> <div>Dave Cramer<br /><br /> dave.cramer(at)credativ(dot)ca<br /><a href="http://www.credativ.ca/"
moz-do-not-send="true"target="_blank">http://www.credativ.ca</a></div>   <div class="gmail_quote">On Wed, Jun 26, 2013
at6:29 PM, Marc G. Fournier <span dir="ltr"><<a href="mailto:scrappy@hub.org" moz-do-not-send="true"
target="_blank">scrappy@hub.org</a>></span>wrote: <blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px#ccc solid;padding-left:1ex"><div style="word-wrap:break-word">  <div><div class="im"><div>On
2013-06-26,at 15:15 , Gavin Flower <<a href="mailto:GavinFlower@archidevsys.co.nz" moz-do-not-send="true"
target="_blank">GavinFlower@archidevsys.co.nz</a>>wrote:</div>   <blockquote type="cite"><div bgcolor="#FFFFFF"
text="#000000"><div>On27/06/13 09:45, Stephen Nelson wrote:</div><blockquote type="cite"><div dir="ltr"><div
class="gmail_extra">Inmy view the driver has already been forked by Kevin Wooten so it's more of a case of will it be
anofficial fork or not? I think it would be a good idea to harness the enthusiasm from the contributors to the newer
driver.However I think it would be a shame and a mistake to throw away the work that has gone into the stable driver.
Ifit's not feasible to merge the code of both drivers I do think it would be useful to share what can be - particularly
thefunctional tests.</div><div class="gmail_extra"> </div><div class="gmail_extra">If it is decided to promote both
driversas official projects I think, for the benefit of the users confused about the choice, that the newer driver be
labelledas a beta until such time as everyone is convinced in its stability and functionality, that it is pushed as the
currentdriver and then the older one can become legacy.</div><div class="gmail_extra"> </div><div
class="gmail_extra">Myinterest in the project has mainly been around getting the jars automatically uploaded to Maven.
I'minterested in reviewing driver patches but I don't have the knowledge of the protocol at the moment to provide any
usefulfeedback other than obvious things. I would like to experiment with an alternative build system called Gradle and
getcontinuous integration and deployment sorted out so that upon check-in the driver is built on a variety of
platforms,tested on a variety of servers and automatically deployed to Maven central as well as the website. My time is
abit variable with kids/work/life taking a big chunk of it so I would like to collaborate with people on the
project. </div><divclass="gmail_extra"> </div><div class="gmail_extra">Cheers,</div><div
class="gmail_extra"> </div><divclass="gmail_extra">Stephen</div></div></blockquote><font size="-1">How about</font>,
whenKevin's driver is ready: <ol><li>recommending the existing driver for JDBC3 and earlier<li>and Kevin's driver for
JDBC4and greater?</ol></div></blockquote><div> </div></div> Why not just create a 'pre-JDBC4 branch for the current
officialone and import Kevin's as JDBC4, for going forward?  What I've read seems to indicate a reluctance to make a
wholewhack of changes on the current code, so putting it over to a branch shouldn't cause to much angst, should
it?</div><div> </div><div> </div></div></blockquote></div></div></blockquote></div></blockquote><fontsize="-1"><font
size="-1"><fontsize="-1">Kevin, w</font>hile </font>I can give you only moral support</font> - I would really like you
tocontinue!</blockquote><div> </div><div>+1 for Kevin's driver and hopefully an actively developed
driver.</div><div> </div><div>Isee Kevin's driver also supports Connection.createBlob, which is handy for EclipseLink
users(which I'm planning on migrating to, from Hibernate) as EclipseLink doesn't offer a blog-helper util for creating
blobs,like Hibernate does.</div><div> </div><div>Kevin; I have quite a large project and I'm willing to give your
drivera spin. Will give feedback soon.</div><div> </div><div class="origo-email-signature">--<br /> Andreas Joseph
Krogh<andreak@officenet.no>      mob: +47 909 56 963<br /> Senior Software Developer / CTO - OfficeNet AS -
http://www.officenet.no<br/> Public key: http://home.officenet.no/~andreak/public_key.asc</div><div> </div> 

pgsql-jdbc by date:

Previous
From: Gavin Flower
Date:
Subject: Re: JDBC 4 Compliance
Next
From: Dave Cramer
Date:
Subject: Re: Versioning - was JDBC 4 Compliance