Skip to content

Commit

Permalink
Add preliminary support for JDBC4.2.
Browse files Browse the repository at this point in the history
No new methods are implemented, but the framework is in place.

Author: Alexis Meneses
  • Loading branch information
kjurka committed Apr 10, 2015
1 parent f9a956b commit bd05fd2
Show file tree
Hide file tree
Showing 28 changed files with 1,156 additions and 329 deletions.
87 changes: 57 additions & 30 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,35 +64,30 @@
<include name="${package}/jdbc2/**"/>

<!-- jdbc3 subpackage -->
<include name="${package}/jdbc3/Abstract*.java"/>
<include name="${package}/jdbc3/PSQLSavepoint.java"/>
<include name="${package}/jdbc3/**"/>

<!-- jdbc3g subpackage -->
<include name="${package}/jdbc3g/*.java"/>
<include name="${package}/jdbc3g/**"/>

<!-- jdbc4 subpackage -->
<include name="${package}/jdbc4/*.java" if="jdbc4any"/>
<exclude name="${package}/jdcb4/Jdbc4*.java" unless="jdbc4any"/>
<include name="${package}/jdbc4/Abstract*.java"/>
<exclude name="${package}/jdbc4/Jdbc4*.java" unless="jdbc42"/>

<!-- jdbc42 subpackage -->
<include name="${package}/jdbc42/**" if="jdbc42" />

<!-- ssl -->
<include name="${package}/ssl/SingleCertValidatingFactory.java" if="jdbc4any"/>
<include name="${package}/ssl/jdbc4/*.java" if="jdbc4any"/>
<include name="${package}/ssl/*.java" if="jdbc4any"/>
<include name="${package}/ssl/**" />

<!-- gss and sspi -->
<include name="${package}/gss/*.java"/>
<include name="${package}/sspi/*.java"/>

<!-- datasource stuff -->
<include name="${package}/ds/*.java"/>
<include name="${package}/ds/common/*.java"/>
<include name="${package}/ds/jdbc23/*.java"/>
<include name="${package}/ds/jdbc4/*.java" if="jdbc4any"/>
<include name="${package}/ds/**"/>

<!-- XA stuff -->
<include name="${package}/xa/*.java"/>
<include name="${package}/xa/jdbc3/*.java"/>
<include name="${package}/xa/jdbc4/*.java" if="jdbc4any"/>
<include name="${package}/xa/**"/>

<!-- OSGi package -->
<include name="${package}/osgi/*.java"/>
Expand Down Expand Up @@ -262,17 +257,33 @@
<equals arg1="${java.specification.version}" arg2="1.6"/>
</condition>
<condition property="jdbc41">
<or>
<equals arg1="${java.specification.version}" arg2="1.7"/>
</condition>
<condition property="jdbc42">
<equals arg1="${java.specification.version}" arg2="1.8"/>
</or>
</condition>
<condition property="jdbc4any">
<or>
<isset property="jdbc4" />
<isset property="jdbc41" />
<isset property="jdbc42" />
</or>
</condition>
<condition property="jdbc4_or_jdbc41">
<or>
<isset property="jdbc4" />
<isset property="jdbc41" />
</or>
</condition>
<condition property="jdbc41plus">
<or>
<isset property="jdbc41" />
<isset property="jdbc42" />
</or>
</condition>
<condition property="jdbc42plus">
<isset property="jdbc42" />
</condition>

<condition property="unknownjvm">
<not>
Expand All @@ -288,12 +299,12 @@

<available property="junit.task" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"/>

<condition property="jdbc4tests">
<isset property="jdbc4any" />
<condition property="jdbc41tests">
<isset property="jdbc41plus" />
</condition>

<condition property="jdbc41tests">
<isset property="jdbc41" />
<condition property="jdbc42tests">
<isset property="jdbc42plus" />
</condition>

<condition property="jdbc.version" value="jdbc4">
Expand All @@ -304,6 +315,10 @@
<isset property="jdbc41" />
</condition>

<condition property="jdbc.version" value="jdbc42">
<isset property="jdbc42" />
</condition>

<condition property="jdbc.version.upper" value="JDBC4">
<isset property="jdbc4" />
</condition>
Expand All @@ -312,13 +327,22 @@
<isset property="jdbc41" />
</condition>

<condition property="jdbc.version.upper" value="JDBC42">
<isset property="jdbc42" />
</condition>

<condition property="jdbc.version.numeric" value="4.0">
<isset property="jdbc4" />
</condition>

<condition property="jdbc.version.numeric" value="4.1">
<isset property="jdbc41" />
</condition>

<condition property="jdbc.version.numeric" value="4.2">
<isset property="jdbc42" />
</condition>

</target>

<!-- default target -->
Expand Down Expand Up @@ -485,15 +509,18 @@ Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=opt
<condition property="edition" value="JDBC4.1">
<equals arg1="${jdbc41}" arg2="true" />
</condition>
<condition property="edition" value="JDBC4.2">
<equals arg1="${jdbc42}" arg2="true" />
</condition>

<!-- determine the connection class -->
<condition property="connectclass" value="org.postgresql.jdbc4.Jdbc4Connection">
<equals arg1="${jdbc4any}" arg2="true" />
<equals arg1="${jdbc4_or_jdbc41}" arg2="true" />
</condition>

<condition property="notimplementedexception" value="java.sql.SQLException">
<equals arg1="${jdbc3any}" arg2="true" />
<condition property="connectclass" value="org.postgresql.jdbc42.Jdbc42Connection">
<equals arg1="${jdbc42}" arg2="true" />
</condition>

<condition property="notimplementedexception" value="java.sql.SQLFeatureNotSupportedException">
<equals arg1="${jdbc4any}" arg2="true" />
</condition>
Expand Down Expand Up @@ -643,9 +670,8 @@ Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=opt
<classpath refid="dependency.test.classpath" />
<include name="${package}/test/**" />

<exclude name="${package}/test/jdbc4/**" unless="jdbc4tests" />
<exclude name="${package}/test/jdbc4/jdbc41/**" unless="jdbc41tests" />
<exclude name="${package}/test/ssl/**" unless="jdbc4tests" />
<exclude name="${package}/test/jdbc42/**" unless="jdbc42tests" />

<classpath>
<pathelement location="${artifact.jar}"/>
Expand Down Expand Up @@ -693,11 +719,12 @@ Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=opt
<test name="org.postgresql.test.xa.XATestSuite" outfile="${testResultsDir}/xa"/>
<test name="org.postgresql.test.extensions.ExtensionsSuite" outfile="${testResultsDir}/extensions"/>
<test name="org.postgresql.test.osgi.OsgiTestSuite" outfile="${testResultsDir}/osgi"/>
<test name="org.postgresql.test.jdbc4.Jdbc4TestSuite" if="jdbc4tests" outfile="${testResultsDir}/jdbc4"/>
<test name="org.postgresql.test.jdbc4.Jdbc4TestSuite" outfile="${testResultsDir}/jdbc4"/>
<test name="org.postgresql.test.jdbc4.jdbc41.Jdbc41TestSuite" if="jdbc41tests" outfile="${testResultsDir}/jdbc41"/>
<test name="org.postgresql.test.jdbc42.Jdbc42TestSuite" if="jdbc42tests" outfile="${testResultsDir}/jdbc42"/>
<test name="org.postgresql.test.hostchooser.MultiHostSuite" outfile="${testResultsDir}/hostchooser"/>
<test name="org.postgresql.test.ssl.SslTestSuite" if="jdbc4tests" outfile="${testResultsDir}/ssl"/>
<test name="org.postgresql.test.ssl.SingleCertValidatingFactoryTest" if="jdbc4tests" outfile="${testResultsDir}/scsf-ssl"/>
<test name="org.postgresql.test.ssl.SslTestSuite" outfile="${testResultsDir}/ssl"/>
<test name="org.postgresql.test.ssl.SingleCertValidatingFactoryTest" outfile="${testResultsDir}/scsf-ssl"/>
</junit>
<fail if="test.fail" message="Some tests are in failure or error"/>
</target>
Expand Down
6 changes: 6 additions & 0 deletions org/postgresql/jdbc4/AbstractJdbc4Array.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,15 @@
import java.sql.*;
import org.postgresql.core.*;
import org.postgresql.jdbc2.AbstractJdbc2Array;
import org.postgresql.jdbc2.ArrayAssistantRegistry;
import org.postgresql.jdbc4.array.UUIDArrayAssistant;

public abstract class AbstractJdbc4Array extends AbstractJdbc2Array
{
static {
ArrayAssistantRegistry.register(Oid.UUID, new UUIDArrayAssistant());
ArrayAssistantRegistry.register(Oid.UUID_ARRAY, new UUIDArrayAssistant());
}

public AbstractJdbc4Array(BaseConnection connection, int oid, byte[] fieldBytes) throws SQLException
{
Expand Down
14 changes: 9 additions & 5 deletions org/postgresql/jdbc4/AbstractJdbc4Connection.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import java.util.regex.Pattern;

import org.postgresql.PGProperty;
import org.postgresql.core.BaseConnection;
import org.postgresql.core.Oid;
import org.postgresql.core.Utils;
import org.postgresql.core.TypeInfo;
Expand All @@ -26,7 +27,7 @@
import org.postgresql.util.PSQLException;
import org.postgresql.jdbc2.AbstractJdbc2Array;

abstract class AbstractJdbc4Connection extends org.postgresql.jdbc3g.AbstractJdbc3gConnection
public abstract class AbstractJdbc4Connection extends org.postgresql.jdbc3g.AbstractJdbc3gConnection
{
private static final SQLPermission SQL_PERMISSION_ABORT = new SQLPermission("callAbort");

Expand Down Expand Up @@ -55,6 +56,11 @@ public AbstractJdbc4Connection(HostSpec[] hostSpecs, String user, String databas
}
}

protected abstract Array makeArray(int oid, String fieldString) throws SQLException;
protected abstract Clob makeClob(long oid) throws SQLException;
protected abstract Blob makeBlob(long oid) throws SQLException;
protected abstract SQLXML makeSQLXML() throws SQLException;

public Clob createClob() throws SQLException
{
checkClosed();
Expand All @@ -76,7 +82,7 @@ public NClob createNClob() throws SQLException
public SQLXML createSQLXML() throws SQLException
{
checkClosed();
return new Jdbc4SQLXML(this);
return makeSQLXML();
}

public Struct createStruct(String typeName, Object[] attributes) throws SQLException
Expand All @@ -96,9 +102,7 @@ public Array createArrayOf(String typeName, Object[] elements) throws SQLExcepti
StringBuilder sb = new StringBuilder();
appendArray(sb, elements, delim);

// This will not work once we have a JDBC 5,
// but it'll do for now.
return new Jdbc4Array(this, oid, sb.toString());
return makeArray(oid, sb.toString());
}

private static void appendArray(StringBuilder sb, Object elements, char delim)
Expand Down
6 changes: 3 additions & 3 deletions org/postgresql/jdbc4/AbstractJdbc4ResultSet.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
import java.util.List;
import org.postgresql.core.*;

abstract class AbstractJdbc4ResultSet extends org.postgresql.jdbc3g.AbstractJdbc3gResultSet
public abstract class AbstractJdbc4ResultSet extends org.postgresql.jdbc3g.AbstractJdbc3gResultSet
{
AbstractJdbc4ResultSet(Query originalQuery, BaseStatement statement, Field[] fields, List tuples, ResultCursor cursor,
int maxRows, int maxFieldSize, int rsType, int rsConcurrency, int rsHoldability) throws SQLException
protected AbstractJdbc4ResultSet(Query originalQuery, BaseStatement statement, Field[] fields, List tuples, ResultCursor cursor,
int maxRows, int maxFieldSize, int rsType, int rsConcurrency, int rsHoldability) throws SQLException
{
super(originalQuery, statement, fields, tuples, cursor, maxRows, maxFieldSize, rsType, rsConcurrency, rsHoldability);
}
Expand Down
4 changes: 2 additions & 2 deletions org/postgresql/jdbc4/AbstractJdbc4ResultSetMetaData.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@

import java.sql.SQLException;

abstract class AbstractJdbc4ResultSetMetaData extends org.postgresql.jdbc2.AbstractJdbc2ResultSetMetaData
public abstract class AbstractJdbc4ResultSetMetaData extends org.postgresql.jdbc2.AbstractJdbc2ResultSetMetaData
{

public AbstractJdbc4ResultSetMetaData(BaseConnection connection, Field[] fields)
protected AbstractJdbc4ResultSetMetaData(BaseConnection connection, Field[] fields)
{
super(connection, fields);
}
Expand Down
Loading

0 comments on commit bd05fd2

Please sign in to comment.