Thread: [Squirrel-sql-develop] JDBC 3.0 compliant == md.supportsSavepoints()?
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
From: Joseph W. <jo...@be...> - 2006-09-22 16:40:26
|
Hi. I saw a sybase driver newsgroup post about squirrel saying sybase's 3.0 driver wasn't JDBC 3.0 compliant. I looked at Session.java, which decides a driver isn't 3.0 compliant if the DBMS doesn't support savepoints. That seems silly. HTH, Joe Weinstein at BEA Systems >>Register now for BEA World 2006 --- See http://www.bea.com/beaworld<< _______________________________________________________________________ Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it. |
From: Stan B. <sb...@po...> - 2006-09-22 16:57:40
|
Joseph, FYI, there is a nice and stable driver for Sybase that doesn't have this problem and seems actually better than the jConnect. It's called jTDS and is here: http://sourceforge.net/projects/jtds -- Best regards, Stan Berka Joseph Weinstein wrote: > Hi. > I saw a sybase driver newsgroup post about squirrel saying > sybase's 3.0 driver wasn't JDBC 3.0 compliant. I looked at > Session.java, which decides a driver isn't 3.0 compliant > if the DBMS doesn't support savepoints. That seems silly. > HTH, > Joe Weinstein at BEA Systems > > >>> Register now for BEA World 2006 --- See http://www.bea.com/beaworld<< >>> > _______________________________________________________________________ > Notice: This email message, together with any attachments, may contain > information of BEA Systems, Inc., its subsidiaries and affiliated > entities, that may be confidential, proprietary, copyrighted and/or > legally privileged, and is intended solely for the use of the individual > or entity named in this message. If you are not the intended recipient, > and have received this message in error, please immediately return this > by email and then delete it. > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Squirrel-sql-develop mailing list > Squ...@li... > https://lists.sourceforge.net/lists/listinfo/squirrel-sql-develop > > |
From: Joseph W. <jo...@be...> - 2006-09-22 17:33:27
|
At 09:57 AM 9/22/2006, Stan Berka wrote: >Joseph, >FYI, there is a nice and stable driver for Sybase that doesn't have this problem and seems actually better than the jConnect. It's called jTDS and is here: http://sourceforge.net/projects/jtds >-- >Best regards, >Stan Berka Actually, I take my post back mostly. The Squirrel code is determining whether a driver is 3.0 compliant if that method exists and doesn't throw an exception. It seems the Sybase driver does implement the call (the driver does implement JDBC 3.0) but the method is one that the driver has implemented to throw an exception about not using it. This is because the Sybase driver can be used with a gateway to ASA (a lighter-weight DBMS) as well as ASE. ASA doesn't support savepoints, so the driver cannot definitvely answer the method's question, and I expect that the jTDS driver could also connect to ASA through the same gateway, and in that case, it's supportsSavePoint() method would return the wrong value. I would suggest that squirrel introspect the DatabaseMetaData object and determine 3.0 compliance (to a first rough guess) if the object simply has a supportsSavePoints() method. HTH, Joe Weinstein at BEA Systems >Joseph Weinstein wrote: >>Hi. >>I saw a sybase driver newsgroup post about squirrel saying >>sybase's 3.0 driver wasn't JDBC 3.0 compliant. I looked at >>Session.java, which decides a driver isn't 3.0 compliant >>if the DBMS doesn't support savepoints. That seems silly. >>HTH, >>Joe Weinstein at BEA Systems >> >> >>>>Register now for BEA World 2006 --- See http://www.bea.com/beaworld<< >>>> >>_______________________________________________________________________ >>Notice: This email message, together with any attachments, may contain >>information of BEA Systems, Inc., its subsidiaries and affiliated >>entities, that may be confidential, proprietary, copyrighted and/or >>legally privileged, and is intended solely for the use of the individual >>or entity named in this message. If you are not the intended recipient, >>and have received this message in error, please immediately return this >>by email and then delete it. >> >>------------------------------------------------------------------------- >>Take Surveys. Earn Cash. Influence the Future of IT >>Join SourceForge.net's Techsay panel and you'll get the chance to share your >>opinions on IT & business topics through brief surveys -- and earn cash >>http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >>_______________________________________________ >>Squirrel-sql-develop mailing list >>Squ...@li... >>https://lists.sourceforge.net/lists/listinfo/squirrel-sql-develop >> >> >>Register now for BEA World 2006 --- See http://www.bea.com/beaworld<< _______________________________________________________________________ Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it. |
From: Joseph W. <jo...@be...> - 2006-09-22 17:56:20
|
At 10:33 AM 9/22/2006, Joseph Weinstein wrote: >At 09:57 AM 9/22/2006, Stan Berka wrote: >>Joseph, >>FYI, there is a nice and stable driver for Sybase that doesn't have this problem and seems actually better than the jConnect. It's called jTDS and is here: http://sourceforge.net/projects/jtds >>-- >>Best regards, >>Stan Berka > >Actually, I take my post back mostly. The Squirrel >code is determining whether a driver is 3.0 compliant >if that method exists and doesn't throw an exception. >It seems the Sybase driver does implement the call >(the driver does implement JDBC 3.0) but the method >is one that the driver has implemented to throw an >exception about not using it. This is because the >Sybase driver can be used with a gateway to ASA (a >lighter-weight DBMS) as well as ASE. ASA doesn't support >savepoints, so the driver cannot definitvely answer >the method's question, and I expect that the jTDS driver >could also connect to ASA through the same gateway, >and in that case, it's supportsSavePoint() method >would return the wrong value. > I would suggest that squirrel introspect the >DatabaseMetaData object and determine 3.0 compliance >(to a first rough guess) if the object simply has a >supportsSavePoints() method. > >HTH, >Joe Weinstein at BEA Systems I would suggest changing the Session.java to do this: isJDBC3.0Compliant = false; try { md.getClass().getMethod("supportsSavepoint", null); isJDBC3.0Compliant = true; } catch ( Exception ignore){} Joe Weinstein at BEA Systems >>Joseph Weinstein wrote: >>>Hi. >>>I saw a sybase driver newsgroup post about squirrel saying >>>sybase's 3.0 driver wasn't JDBC 3.0 compliant. I looked at >>>Session.java, which decides a driver isn't 3.0 compliant >>>if the DBMS doesn't support savepoints. That seems silly. >>>HTH, >>>Joe Weinstein at BEA Systems >>> >>> >>>>>Register now for BEA World 2006 --- See http://www.bea.com/beaworld<< >>>>> >>>_______________________________________________________________________ >>>Notice: This email message, together with any attachments, may contain >>>information of BEA Systems, Inc., its subsidiaries and affiliated >>>entities, that may be confidential, proprietary, copyrighted and/or >>>legally privileged, and is intended solely for the use of the individual >>>or entity named in this message. If you are not the intended recipient, >>>and have received this message in error, please immediately return this >>>by email and then delete it. >>> >>>------------------------------------------------------------------------- >>>Take Surveys. Earn Cash. Influence the Future of IT >>>Join SourceForge.net's Techsay panel and you'll get the chance to share your >>>opinions on IT & business topics through brief surveys -- and earn cash >>>http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >>>_______________________________________________ >>>Squirrel-sql-develop mailing list >>>Squ...@li... >>>https://lists.sourceforge.net/lists/listinfo/squirrel-sql-develop >>> >>> >>Register now for BEA World 2006 --- See http://www.bea.com/beaworld<< _______________________________________________________________________ Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it. |
From: Robert M. <rob...@gm...> - 2006-09-22 21:35:32
|
On 9/22/06, Joseph Weinstein <jo...@be...> wrote: > At 10:33 AM 9/22/2006, Joseph Weinstein wrote: > > > >Actually, I take my post back mostly. The Squirrel > >code is determining whether a driver is 3.0 compliant > >if that method exists and doesn't throw an exception. Joe, First, let me say that You can always turn this warning off in the Global preferences under the general tab -> "Warning for JRE/JDBC Mismatch". Now regarding your alternate implementation of testing for JDBC 3.0 compliance - as I read the JDBC 3.0 specification, it spells out what a driver _must_ do to be considered 3.0 compliant. Among other things it must "fully implement" all of the methods in the DatabaseMetaData interface. That includes supportsSavepoints. According to the spec: "Fully Implement - a term applied to an interface that has all of its methods implemented to support the semantics defined in the relevant specifications." "If a feature is not supported, the corresponding DatabaseMetaData method must say so. Attempting to access the unsupported feature causes an SQLException to be thrown." As far as the Sybase JDBC driver goes, there are many ways to accomplish a universal driver for engines that both support and don't support SavePoints. On connection, ask the database which kind it is, then set a supportsSavepoints flag and return the value when the user asks for it. Just don't throw an SQLException. That will mean you are not compliant with the JDBC 3.0 API. When someone attempts to set a save point with the database that doesn't support it, that method should throw an SQLException. Merely asking the database what it supports and doesn't support isn't "exceptional" ;) I agree with you that it's SQuirreL's attempt to determine 3.0 compliance is inadequate. However, in order to judge compliance I think SQuirreL perhaps needs a plugin that would go much further than what SQuirreL does today and apply the same test to *every* new interface method that must be fully implemented according to the spec. And ideally, it would do this for every JDBC API version and compare that API compliance to the version of the JVM that the user is running. But I believe there are more important plugins that could be written at the moment. Rob |
From: Joseph W. <jo...@be...> - 2006-09-22 21:50:38
|
At 11:36 AM 9/22/2006, Robert Manning wrote: >On 9/22/06, Joseph Weinstein <jo...@be...> wrote: >>At 10:33 AM 9/22/2006, Joseph Weinstein wrote: >>> >>>Actually, I take my post back mostly. The Squirrel >>>code is determining whether a driver is 3.0 compliant >>>if that method exists and doesn't throw an exception. >Joe, > >First, let me say that You can always turn this warning off in the >Global preferences under the general tab -> "Warning for JRE/JDBC Mismatch". Hi Rob, cool, that will help the person I am asking for. >Now regarding your alternate implementation of testing for JDBC 3.0 compliance - >as I read the JDBC 3.0 specification, it spells out what a driver >_must_ do to be >considered 3.0 compliant. Among other things it must "fully implement" all of >the methods in the DatabaseMetaData interface. That includes >supportsSavepoints. According to the spec: > >"Fully Implement - a term applied to an interface that has all of its methods >implemented to support the semantics defined in the relevant specifications." > >"If a feature is not supported, the corresponding DatabaseMetaData method >must say so. Attempting to access the unsupported feature causes an >SQLException to be thrown." > >As far as the Sybase JDBC driver goes, there are many ways to accomplish >a universal driver for engines that both support and don't support SavePoints. >On connection, ask the database which kind it is, then set a supportsSavepoints >flag and return the value when the user asks for it. Just don't throw an >SQLException. That will mean you are not compliant with the JDBC 3.0 API. >When someone attempts to set a save point with the database that doesn't >support it, that method should throw an SQLException. Merely asking the >database what it supports and doesn't support isn't "exceptional" ;) Yep, I'll buy that. Sybase could do better. >I agree with you that it's SQuirreL's attempt to determine 3.0 compliance is >inadequate. However, in order to judge compliance I think SQuirreL perhaps >needs a plugin that would go much further than what SQuirreL does today >and apply the same test to *every* new interface method that must be fully >implemented according to the spec. And ideally, it would do this for every >JDBC API version and compare that API compliance to the version of the >JVM that the user is running. But I believe there are more important plugins >that could be written at the moment. Understood. I am actually totally ignorant of Squirrel, I'm just a JDBC wonk. Someone posted something to a jconnect group asking if the sybase driver was jdbc 3.0 compliant, because squirrel said it wasn't. If we're strict, it's not, but if we completely tested all the 3.0 semantics, I'll bet most drivers wouldn't pass 100%. The practical question is whether the driver will function as a JDBC 3.0 driver in the squirrel environment. I don't know whether or how much of the JDBC 3.0 spec that squirrel and/or the squirrel user will demand of the driver. If that is bounded and specific, maybe that can serve to define a practical test. Joe Weinstein at BEA Systems >>Register now for BEA World 2006 --- See http://www.bea.com/beaworld<< _______________________________________________________________________ Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it. |