From: thhal at mailblocks.com (Thomas Hallgren) Date: Thu, 24 Feb 2005 21:03:49 +0100 Subject: [Pljava-dev] Re: postgresql jdbc driver In-Reply-To: <421E20CA.8000001@cbm.on.ca> References: <421C3C10.2070005@mailblocks.com> <421E20CA.8000001@cbm.on.ca> Message-ID: <421E3325.6080008@mailblocks.com> Bart, > So why do you also need the jdbc3-810 driver? > I realize that I might have misread what you asked for. But if the requirements that he listed was an answer to "why they use the jdbc3-810 driver as a complement (or instead of?) the PLJava driver", then his answer just make no sense at all: > # Full support of ANSI SQL 99 (CASE, all JOIN types, ..) Neither of the JDBC drivers are concerned with this. > # Support of Views and Views on Views Neither of the JDBC drivers are concerned with this. > # Support of User Defined Functions > (preferably via SQLJ - Java running in the database) PLJava *is* user defined functions and it's JDBC driver allows you to call other JDBC driver functions through SQL. Neither of the JDBC drivers are concerned with SQLJ. > # Inline Views (e.g. SELECT ... FROM (SELECT xx FROM yy) ..) > # JDBC 3.0 Support (especially RowSet) > As stated before, RowSet's just makes no sense at all in the PLJava domain, i.e. inside of a user defined function running inside the database backend. A final note and I'm not at all sure it's in any way applicable: Using the client jdbc driver inside of PLJava is a *very* bad idea since it would result in a new remote connection to the backend and hence, not only severely degraded performance but also a different transaction. The PLJava jdbc driver runs within the transaction that was started by the caller of the user defined function. Virtually everything will break if your violate transaction boundaries. Regards, Thomas Hallgren