This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to tag REL8_1_409 in repository libpostgresql-jdbc-java.
commit ce6f457f622f7fe467f061965fb2ba0ed2ed9020 Author: Kris Jurka <[email protected]> Date: Mon Feb 19 06:05:02 2007 +0000 When manipulating large objects we must handle the oid as a Java long rather than an int so it works when the oid counter exceeds Integer.MAX_VALUE. This doesn't remove the existing int API to avoid breaking code, but instead adds a parallel API that uses long. --- doc/pgjdbc.xml | 8 +- org/postgresql/fastpath/Fastpath.java | 35 +++++++- org/postgresql/jdbc2/AbstractJdbc2Blob.java | 4 +- org/postgresql/jdbc2/AbstractJdbc2BlobClob.java | 4 +- org/postgresql/jdbc2/AbstractJdbc2Clob.java | 4 +- org/postgresql/jdbc2/AbstractJdbc2ResultSet.java | 6 +- org/postgresql/jdbc2/AbstractJdbc2Statement.java | 22 +++--- org/postgresql/jdbc2/Jdbc2Blob.java | 4 +- org/postgresql/jdbc2/Jdbc2Clob.java | 4 +- org/postgresql/jdbc2/Jdbc2ResultSet.java | 6 +- org/postgresql/jdbc3/AbstractJdbc3Blob.java | 4 +- org/postgresql/jdbc3/AbstractJdbc3Clob.java | 4 +- org/postgresql/jdbc3/Jdbc3Blob.java | 4 +- org/postgresql/jdbc3/Jdbc3Clob.java | 4 +- org/postgresql/jdbc3/Jdbc3ResultSet.java | 6 +- org/postgresql/jdbc3g/Jdbc3gBlob.java | 4 +- org/postgresql/jdbc3g/Jdbc3gClob.java | 4 +- org/postgresql/jdbc3g/Jdbc3gResultSet.java | 6 +- org/postgresql/largeobject/LargeObject.java | 17 +++- org/postgresql/largeobject/LargeObjectManager.java | 92 ++++++++++++++++++++-- org/postgresql/test/jdbc2/BlobTest.java | 8 +- 21 files changed, 187 insertions(+), 63 deletions(-) diff --git a/doc/pgjdbc.xml b/doc/pgjdbc.xml index 8c35312..8c7d7f5 100644 --- a/doc/pgjdbc.xml +++ b/doc/pgjdbc.xml @@ -1,7 +1,7 @@ <?xml version="1.0"?> <!-- Copyright (c) 2004-2005, PostgreSQL Global Development Group - $PostgreSQL: pgjdbc/doc/pgjdbc.xml,v 1.25.2.1 2006/05/22 19:40:07 jurka Exp $ + $PostgreSQL: pgjdbc/doc/pgjdbc.xml,v 1.25.2.2 2006/09/26 05:18:11 jurka Exp $ --> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> @@ -1373,7 +1373,7 @@ conn.setAutoCommit(false); LargeObjectManager lobj = ((org.postgresql.PGConnection)conn).getLargeObjectAPI(); // Create a new large object -int oid = lobj.create(LargeObjectManager.READ | LargeObjectManager.WRITE); +long oid = lobj.createLO(LargeObjectManager.READ | LargeObjectManager.WRITE); // Open the large object for writing LargeObject obj = lobj.open(oid, LargeObjectManager.WRITE); @@ -1396,7 +1396,7 @@ obj.close(); // Now insert the row into imageslo PreparedStatement ps = conn.prepareStatement("INSERT INTO imageslo VALUES (?, ?)"); ps.setString(1, file.getName()); -ps.setInt(2, oid); +ps.setLong(2, oid); ps.executeUpdate(); ps.close(); fis.close(); @@ -1421,7 +1421,7 @@ ps.setString(1, "myimage.gif"); ResultSet rs = ps.executeQuery(); while (rs.next()) { // Open the large object for reading - int oid = rs.getInt(1); + long oid = rs.getLong(1); LargeObject obj = lobj.open(oid, LargeObjectManager.READ); // Read the data diff --git a/org/postgresql/fastpath/Fastpath.java b/org/postgresql/fastpath/Fastpath.java index 716a10c..84189a6 100644 --- a/org/postgresql/fastpath/Fastpath.java +++ b/org/postgresql/fastpath/Fastpath.java @@ -3,7 +3,7 @@ * Copyright (c) 2003-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/fastpath/Fastpath.java,v 1.31 2005/01/11 08:25:45 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/fastpath/Fastpath.java,v 1.32 2005/01/14 01:20:18 oliver Exp $ * *------------------------------------------------------------------------- */ @@ -31,6 +31,11 @@ import org.postgresql.util.GT; */ public class Fastpath { + // Java passes oids around as longs, but in the backend + // it's an unsigned int, so we use this to make the conversion + // of long -> signed int which the backend interprets as unsigned. + private final static long NUM_OIDS = 4294967296L; // 2^32 + // This maps the functions names to their id's (possible unique just // to a connection). private final Hashtable func = new Hashtable(); @@ -127,6 +132,20 @@ public class Fastpath } /** + * This convenience method assumes that the return value is an oid. + * @param name Function name + * @param args Function arguments + * @exception SQLException if a database-access error occurs or no result + */ + public long getOID(String name, FastpathArg[] args) throws SQLException + { + long oid = getInteger(name, args); + if (oid < 0) + oid += NUM_OIDS; + return oid; + } + + /** * This convenience method assumes that the return value is not an Integer * @param name Function name * @param args Function arguments @@ -220,5 +239,19 @@ public class Fastpath return id.intValue(); } + + /** + * Creates a FastpathArg with an oid parameter. + * This is here instead of a constructor of FastpathArg + * because the constructor can't tell the difference between + * an long that's really int8 and a long thats an oid. + */ + public static FastpathArg createOIDArg(long oid) + { + if (oid > Integer.MAX_VALUE) + oid -= NUM_OIDS; + return new FastpathArg((int)oid); + } + } diff --git a/org/postgresql/jdbc2/AbstractJdbc2Blob.java b/org/postgresql/jdbc2/AbstractJdbc2Blob.java index a21cab4..ecbba55 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2Blob.java +++ b/org/postgresql/jdbc2/AbstractJdbc2Blob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java,v 1.8 2005/02/15 08:56:25 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java,v 1.9 2005/03/28 08:52:35 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -18,7 +18,7 @@ public abstract class AbstractJdbc2Blob extends AbstractJdbc2BlobClob { private LargeObject lo; - public AbstractJdbc2Blob(PGConnection conn, int oid) throws SQLException + public AbstractJdbc2Blob(PGConnection conn, long oid) throws SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc2/AbstractJdbc2BlobClob.java b/org/postgresql/jdbc2/AbstractJdbc2BlobClob.java index eb3cdb4..6ab0058 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2BlobClob.java +++ b/org/postgresql/jdbc2/AbstractJdbc2BlobClob.java @@ -3,7 +3,7 @@ * Copyright (c) 2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2BlobClob.java,v 1.2 2005/05/08 23:18:24 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2BlobClob.java,v 1.3 2005/05/09 03:17:18 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -33,7 +33,7 @@ public class AbstractJdbc2BlobClob { private LargeObject lo; - public AbstractJdbc2BlobClob(PGConnection conn, int oid) throws SQLException + public AbstractJdbc2BlobClob(PGConnection conn, long oid) throws SQLException { LargeObjectManager lom = conn.getLargeObjectAPI(); this.lo = lom.open(oid); diff --git a/org/postgresql/jdbc2/AbstractJdbc2Clob.java b/org/postgresql/jdbc2/AbstractJdbc2Clob.java index 2231121..a20a3ec 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2Clob.java +++ b/org/postgresql/jdbc2/AbstractJdbc2Clob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Clob.java,v 1.7 2005/01/11 08:25:45 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Clob.java,v 1.8 2005/02/15 08:56:25 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -23,7 +23,7 @@ public class AbstractJdbc2Clob { private LargeObject lo; - public AbstractJdbc2Clob(PGConnection conn, int oid) throws SQLException + public AbstractJdbc2Clob(PGConnection conn, long oid) throws SQLException { LargeObjectManager lom = conn.getLargeObjectAPI(); this.lo = lom.open(oid); diff --git a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java index 48ebec8..6d85ca5 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java +++ b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java @@ -3,7 +3,7 @@ * Copyright (c) 2003-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java,v 1.80.2.1 2005/12/04 21:41:21 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java,v 1.80.2.2 2006/08/06 18:11:43 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -2062,7 +2062,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg if ( fields[columnIndex - 1].getOID() == 26) { LargeObjectManager lom = connection.getLargeObjectAPI(); - LargeObject lob = lom.open(getInt(columnIndex)); + LargeObject lob = lom.open(getLong(columnIndex)); byte buf[] = lob.read(lob.size()); lob.close(); return trimBytes(columnIndex, buf); @@ -2178,7 +2178,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg if ( fields[columnIndex - 1].getOID() == 26) { LargeObjectManager lom = connection.getLargeObjectAPI(); - LargeObject lob = lom.open(getInt(columnIndex)); + LargeObject lob = lom.open(getLong(columnIndex)); return lob.getInputStream(); } } diff --git a/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/org/postgresql/jdbc2/AbstractJdbc2Statement.java index 0452c65..3409bee 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2Statement.java +++ b/org/postgresql/jdbc2/AbstractJdbc2Statement.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java,v 1.84.2.7 2006/11/05 05:44:44 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java,v 1.84.2.8 2007/01/04 21:59:26 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -1273,11 +1273,11 @@ public abstract class AbstractJdbc2Statement implements BaseStatement { //Version 7.1 and earlier support done as LargeObjects LargeObjectManager lom = connection.getLargeObjectAPI(); - int oid = lom.create(); + long oid = lom.createLO(); LargeObject lob = lom.open(oid); lob.write(x); lob.close(); - setInt(parameterIndex, oid); + setLong(parameterIndex, oid); } } @@ -1473,7 +1473,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement //but the jdbc spec indicates that streams should be //available for LONGVARBINARY instead LargeObjectManager lom = connection.getLargeObjectAPI(); - int oid = lom.create(); + long oid = lom.createLO(); LargeObject lob = lom.open(oid); OutputStream los = lob.getOutputStream(); try @@ -1496,7 +1496,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement throw new PSQLException(GT.tr("Provided InputStream failed."), PSQLState.UNEXPECTED_ERROR, se); } // lob is closed by the stream so don't call lob.close() - setInt(parameterIndex, oid); + setLong(parameterIndex, oid); } } @@ -2714,7 +2714,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement InputStream l_inStream = x.getBinaryStream(); LargeObjectManager lom = connection.getLargeObjectAPI(); - int oid = lom.create(); + long oid = lom.createLO(); LargeObject lob = lom.open(oid); OutputStream los = lob.getOutputStream(); byte[] buf = new byte[4096]; @@ -2750,7 +2750,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement { } } - setInt(i, oid); + setLong(i, oid); } public void setCharacterStream(int i, java.io.Reader x, int length) throws SQLException @@ -2806,7 +2806,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement //but the jdbc spec indicates that streams should be //available for LONGVARCHAR instead LargeObjectManager lom = connection.getLargeObjectAPI(); - int oid = lom.create(); + long oid = lom.createLO(); LargeObject lob = lom.open(oid); OutputStream los = lob.getOutputStream(); try @@ -2829,7 +2829,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement throw new PSQLException(GT.tr("Unexpected error writing large object to database."), PSQLState.UNEXPECTED_ERROR, se); } // lob is closed by the stream so don't call lob.close() - setInt(i, oid); + setLong(i, oid); } } @@ -2846,7 +2846,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement InputStream l_inStream = x.getAsciiStream(); int l_length = (int) x.length(); LargeObjectManager lom = connection.getLargeObjectAPI(); - int oid = lom.create(); + long oid = lom.createLO(); LargeObject lob = lom.open(oid); OutputStream los = lob.getOutputStream(); try @@ -2869,7 +2869,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement throw new PSQLException(GT.tr("Unexpected error writing large object to database."), PSQLState.UNEXPECTED_ERROR, se); } // lob is closed by the stream so don't call lob.close() - setInt(i, oid); + setLong(i, oid); } public void setNull(int i, int t, String s) throws SQLException diff --git a/org/postgresql/jdbc2/Jdbc2Blob.java b/org/postgresql/jdbc2/Jdbc2Blob.java index b1abe0f..9742443 100644 --- a/org/postgresql/jdbc2/Jdbc2Blob.java +++ b/org/postgresql/jdbc2/Jdbc2Blob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/Jdbc2Blob.java,v 1.3 2004/11/09 08:49:03 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/Jdbc2Blob.java,v 1.4 2005/01/11 08:25:46 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -13,7 +13,7 @@ package org.postgresql.jdbc2; public class Jdbc2Blob extends AbstractJdbc2Blob implements java.sql.Blob { - public Jdbc2Blob(org.postgresql.PGConnection conn, int oid) throws java.sql.SQLException + public Jdbc2Blob(org.postgresql.PGConnection conn, long oid) throws java.sql.SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc2/Jdbc2Clob.java b/org/postgresql/jdbc2/Jdbc2Clob.java index 1572ba0..e46f002 100644 --- a/org/postgresql/jdbc2/Jdbc2Clob.java +++ b/org/postgresql/jdbc2/Jdbc2Clob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/Jdbc2Clob.java,v 1.3 2004/11/09 08:49:10 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/Jdbc2Clob.java,v 1.4 2005/01/11 08:25:46 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -13,7 +13,7 @@ package org.postgresql.jdbc2; public class Jdbc2Clob extends AbstractJdbc2Clob implements java.sql.Clob { - public Jdbc2Clob(org.postgresql.PGConnection conn, int oid) throws java.sql.SQLException + public Jdbc2Clob(org.postgresql.PGConnection conn, long oid) throws java.sql.SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc2/Jdbc2ResultSet.java b/org/postgresql/jdbc2/Jdbc2ResultSet.java index b42a054..5911a49 100644 --- a/org/postgresql/jdbc2/Jdbc2ResultSet.java +++ b/org/postgresql/jdbc2/Jdbc2ResultSet.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java,v 1.15 2004/12/17 21:24:29 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java,v 1.16 2005/01/11 08:25:46 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ public class Jdbc2ResultSet extends org.postgresql.jdbc2.AbstractJdbc2ResultSet if (wasNullFlag) return null; - return new org.postgresql.jdbc2.Jdbc2Clob(connection, getInt(i)); + return new org.postgresql.jdbc2.Jdbc2Clob(connection, getLong(i)); } public java.sql.Blob getBlob(int i) throws SQLException @@ -51,7 +51,7 @@ public class Jdbc2ResultSet extends org.postgresql.jdbc2.AbstractJdbc2ResultSet if (wasNullFlag) return null; - return new org.postgresql.jdbc2.Jdbc2Blob(connection, getInt(i)); + return new org.postgresql.jdbc2.Jdbc2Blob(connection, getLong(i)); } public java.sql.Array createArray(int i) throws SQLException diff --git a/org/postgresql/jdbc3/AbstractJdbc3Blob.java b/org/postgresql/jdbc3/AbstractJdbc3Blob.java index 04cb070..629bafa 100644 --- a/org/postgresql/jdbc3/AbstractJdbc3Blob.java +++ b/org/postgresql/jdbc3/AbstractJdbc3Blob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/AbstractJdbc3Blob.java,v 1.7 2005/03/28 08:52:35 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/AbstractJdbc3Blob.java,v 1.8 2005/05/08 23:18:24 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -17,7 +17,7 @@ import org.postgresql.largeobject.LargeObject; public abstract class AbstractJdbc3Blob extends org.postgresql.jdbc2.AbstractJdbc2Blob { - public AbstractJdbc3Blob(org.postgresql.PGConnection conn, int oid) throws SQLException + public AbstractJdbc3Blob(org.postgresql.PGConnection conn, long oid) throws SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc3/AbstractJdbc3Clob.java b/org/postgresql/jdbc3/AbstractJdbc3Clob.java index bf13b88..429fc19 100644 --- a/org/postgresql/jdbc3/AbstractJdbc3Clob.java +++ b/org/postgresql/jdbc3/AbstractJdbc3Clob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/AbstractJdbc3Clob.java,v 1.5 2005/01/11 08:25:46 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/AbstractJdbc3Clob.java,v 1.6 2005/02/15 08:56:26 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -15,7 +15,7 @@ import java.sql.*; public abstract class AbstractJdbc3Clob extends org.postgresql.jdbc2.AbstractJdbc2Clob { - public AbstractJdbc3Clob(org.postgresql.PGConnection conn, int oid) throws SQLException + public AbstractJdbc3Clob(org.postgresql.PGConnection conn, long oid) throws SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc3/Jdbc3Blob.java b/org/postgresql/jdbc3/Jdbc3Blob.java index c26a5a8..37f761e 100644 --- a/org/postgresql/jdbc3/Jdbc3Blob.java +++ b/org/postgresql/jdbc3/Jdbc3Blob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/Jdbc3Blob.java,v 1.3 2004/11/09 08:50:11 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/Jdbc3Blob.java,v 1.4 2005/01/11 08:25:46 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -15,7 +15,7 @@ import java.sql.*; public class Jdbc3Blob extends org.postgresql.jdbc3.AbstractJdbc3Blob implements java.sql.Blob { - public Jdbc3Blob(org.postgresql.PGConnection conn, int oid) throws SQLException + public Jdbc3Blob(org.postgresql.PGConnection conn, long oid) throws SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc3/Jdbc3Clob.java b/org/postgresql/jdbc3/Jdbc3Clob.java index de82abf..005f4a9 100644 --- a/org/postgresql/jdbc3/Jdbc3Clob.java +++ b/org/postgresql/jdbc3/Jdbc3Clob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/Jdbc3Clob.java,v 1.3 2004/11/09 08:50:21 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/Jdbc3Clob.java,v 1.4 2005/01/11 08:25:46 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -13,7 +13,7 @@ package org.postgresql.jdbc3; public class Jdbc3Clob extends org.postgresql.jdbc3.AbstractJdbc3Clob implements java.sql.Clob { - public Jdbc3Clob(org.postgresql.PGConnection conn, int oid) throws java.sql.SQLException + public Jdbc3Clob(org.postgresql.PGConnection conn, long oid) throws java.sql.SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc3/Jdbc3ResultSet.java b/org/postgresql/jdbc3/Jdbc3ResultSet.java index 72eaea3..f1db9c7 100644 --- a/org/postgresql/jdbc3/Jdbc3ResultSet.java +++ b/org/postgresql/jdbc3/Jdbc3ResultSet.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java,v 1.12 2004/12/17 21:24:30 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java,v 1.13 2005/01/11 08:25:47 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ public class Jdbc3ResultSet extends org.postgresql.jdbc3.AbstractJdbc3ResultSet if (wasNullFlag) return null; - return new Jdbc3Clob(connection, getInt(i)); + return new Jdbc3Clob(connection, getLong(i)); } public java.sql.Blob getBlob(int i) throws SQLException @@ -51,7 +51,7 @@ public class Jdbc3ResultSet extends org.postgresql.jdbc3.AbstractJdbc3ResultSet if (wasNullFlag) return null; - return new Jdbc3Blob(connection, getInt(i)); + return new Jdbc3Blob(connection, getLong(i)); } public Array createArray(int i) throws SQLException diff --git a/org/postgresql/jdbc3g/Jdbc3gBlob.java b/org/postgresql/jdbc3g/Jdbc3gBlob.java index bc73e32..1ff7dfb 100644 --- a/org/postgresql/jdbc3g/Jdbc3gBlob.java +++ b/org/postgresql/jdbc3g/Jdbc3gBlob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc3g/Jdbc3gBlob.java,v 1.3 2004/11/09 08:51:22 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc3g/Jdbc3gBlob.java,v 1.4 2005/01/11 08:25:47 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -15,7 +15,7 @@ import java.sql.*; public class Jdbc3gBlob extends org.postgresql.jdbc3.AbstractJdbc3Blob implements java.sql.Blob { - public Jdbc3gBlob(org.postgresql.PGConnection conn, int oid) throws SQLException + public Jdbc3gBlob(org.postgresql.PGConnection conn, long oid) throws SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc3g/Jdbc3gClob.java b/org/postgresql/jdbc3g/Jdbc3gClob.java index c71bbd8..8ab1ba2 100644 --- a/org/postgresql/jdbc3g/Jdbc3gClob.java +++ b/org/postgresql/jdbc3g/Jdbc3gClob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc3g/Jdbc3gClob.java,v 1.3 2004/11/09 08:51:22 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc3g/Jdbc3gClob.java,v 1.4 2005/01/11 08:25:47 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -13,7 +13,7 @@ package org.postgresql.jdbc3g; public class Jdbc3gClob extends org.postgresql.jdbc3.AbstractJdbc3Clob implements java.sql.Clob { - public Jdbc3gClob(org.postgresql.PGConnection conn, int oid) throws java.sql.SQLException + public Jdbc3gClob(org.postgresql.PGConnection conn, long oid) throws java.sql.SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc3g/Jdbc3gResultSet.java b/org/postgresql/jdbc3g/Jdbc3gResultSet.java index 5d8c41d..9e116bb 100644 --- a/org/postgresql/jdbc3g/Jdbc3gResultSet.java +++ b/org/postgresql/jdbc3g/Jdbc3gResultSet.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc3g/Jdbc3gResultSet.java,v 1.4 2004/12/17 21:24:30 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc3g/Jdbc3gResultSet.java,v 1.5 2005/01/11 08:25:47 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ public class Jdbc3gResultSet extends org.postgresql.jdbc3.AbstractJdbc3ResultSet if (wasNullFlag) return null; - return new Jdbc3gClob(connection, getInt(i)); + return new Jdbc3gClob(connection, getLong(i)); } public java.sql.Blob getBlob(int i) throws SQLException @@ -51,7 +51,7 @@ public class Jdbc3gResultSet extends org.postgresql.jdbc3.AbstractJdbc3ResultSet if (wasNullFlag) return null; - return new Jdbc3gBlob(connection, getInt(i)); + return new Jdbc3gBlob(connection, getLong(i)); } public Array createArray(int i) throws SQLException diff --git a/org/postgresql/largeobject/LargeObject.java b/org/postgresql/largeobject/LargeObject.java index 50561b9..2ede2be 100644 --- a/org/postgresql/largeobject/LargeObject.java +++ b/org/postgresql/largeobject/LargeObject.java @@ -3,7 +3,7 @@ * Copyright (c) 2003-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/largeobject/LargeObject.java,v 1.16 2005/01/11 08:25:47 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/largeobject/LargeObject.java,v 1.17 2005/01/14 01:20:22 oliver Exp $ * *------------------------------------------------------------------------- */ @@ -61,7 +61,7 @@ public class LargeObject public static final int SEEK_END = 2; private Fastpath fp; // Fastpath API to use - private int oid; // OID of this object + private long oid; // OID of this object private int fd; // the descriptor of the open large object private BlobOutputStream os; // The current output stream @@ -80,13 +80,13 @@ public class LargeObject * @exception SQLException if a database-access error occurs. * @see org.postgresql.largeobject.LargeObjectManager */ - protected LargeObject(Fastpath fp, int oid, int mode) throws SQLException + protected LargeObject(Fastpath fp, long oid, int mode) throws SQLException { this.fp = fp; this.oid = oid; FastpathArg args[] = new FastpathArg[2]; - args[0] = new FastpathArg(oid); + args[0] = Fastpath.createOIDArg(oid); args[1] = new FastpathArg(mode); this.fd = fp.getInteger("lo_open", args); } @@ -104,9 +104,18 @@ public class LargeObject /** * @return the OID of this LargeObject + * @deprecated As of 8.3, replaced by {@link #getLongOID()} */ public int getOID() { + return (int)oid; + } + + /** + * @return the OID of this LargeObject + */ + public long getLongOID() + { return oid; } diff --git a/org/postgresql/largeobject/LargeObjectManager.java b/org/postgresql/largeobject/LargeObjectManager.java index 4fa5a9e..ea1db89 100644 --- a/org/postgresql/largeobject/LargeObjectManager.java +++ b/org/postgresql/largeobject/LargeObjectManager.java @@ -3,7 +3,7 @@ * Copyright (c) 2003-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/largeobject/LargeObjectManager.java,v 1.18 2005/01/11 08:25:47 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/largeobject/LargeObjectManager.java,v 1.19 2005/01/14 01:20:22 oliver Exp $ * *------------------------------------------------------------------------- */ @@ -152,9 +152,23 @@ public class LargeObjectManager * @param oid of large object * @return LargeObject instance providing access to the object * @exception SQLException on error + * @deprecated As of 8.3, replaced by {@link #open(long)} */ public LargeObject open(int oid) throws SQLException { + return open((long)oid); + } + + /** + * This opens an existing large object, based on its OID. This method + * assumes that READ and WRITE access is required (the default). + * + * @param oid of large object + * @return LargeObject instance providing access to the object + * @exception SQLException on error + */ + public LargeObject open(long oid) throws SQLException + { return open(oid, READWRITE); } @@ -165,9 +179,23 @@ public class LargeObjectManager * @param mode mode of open * @return LargeObject instance providing access to the object * @exception SQLException on error + * @deprecated As of 8.3, replaced by {@link #open(long, int)} */ public LargeObject open(int oid, int mode) throws SQLException { + return open((long)oid, mode); + } + + /** + * This opens an existing large object, based on its OID + * + * @param oid of large object + * @param mode mode of open + * @return LargeObject instance providing access to the object + * @exception SQLException on error + */ + public LargeObject open(long oid, int mode) throws SQLException + { if (conn.getAutoCommit()) throw new PSQLException(GT.tr("Large Objects may not be used in auto-commit mode."), PSQLState.NO_ACTIVE_SQL_TRANSACTION); @@ -181,6 +209,7 @@ public class LargeObjectManager * * @return oid of new object * @exception SQLException on error + * @deprecated As of 8.3, replaced by {@link #createLO()} */ public int create() throws SQLException { @@ -188,20 +217,46 @@ public class LargeObjectManager } /** + * This creates a large object, returning its OID. + * + * <p>It defaults to READWRITE for the new object's attributes. + * + * @return oid of new object + */ + public long createLO() throws SQLException + { + return createLO(READWRITE); + } + + /** * This creates a large object, returning its OID * * @param mode a bitmask describing different attributes of the new object * @return oid of new object * @exception SQLException on error */ - public int create(int mode) throws SQLException + public long createLO(int mode) throws SQLException { if (conn.getAutoCommit()) throw new PSQLException(GT.tr("Large Objects may not be used in auto-commit mode."), PSQLState.NO_ACTIVE_SQL_TRANSACTION); FastpathArg args[] = new FastpathArg[1]; args[0] = new FastpathArg(mode); - return fp.getInteger("lo_creat", args); + return fp.getOID("lo_creat", args); + } + + /** + * This creates a large object, returning its OID + * + * @param mode a bitmask describing different attributes of the new object + * @return oid of new object + * @exception SQLException on error + * @deprecated As of 8.3, replaced by {@link #createLO(int)} + */ + public int create(int mode) throws SQLException + { + long oid = createLO(mode); + return (int)oid; } /** @@ -210,10 +265,10 @@ public class LargeObjectManager * @param oid describing object to delete * @exception SQLException on error */ - public void delete(int oid) throws SQLException + public void delete(long oid) throws SQLException { FastpathArg args[] = new FastpathArg[1]; - args[0] = new FastpathArg(oid); + args[0] = Fastpath.createOIDArg(oid); fp.fastpath("lo_unlink", false, args); } @@ -225,10 +280,37 @@ public class LargeObjectManager * * @param oid describing object to delete * @exception SQLException on error + * @deprecated As of 8.3, replaced by {@link #unlink(long)} */ public void unlink(int oid) throws SQLException { + delete((long)oid); + } + + /** + * This deletes a large object. + * + * <p>It is identical to the delete method, and is supplied as the C API uses + * unlink. + * + * @param oid describing object to delete + * @exception SQLException on error + */ + public void unlink(long oid) throws SQLException + { delete(oid); } + /** + * This deletes a large object. + * + * @param oid describing object to delete + * @exception SQLException on error + * @deprecated As of 8.3, replaced by {@link #delete(long)} + */ + public void delete(int oid) throws SQLException + { + delete((long)oid); + } + } diff --git a/org/postgresql/test/jdbc2/BlobTest.java b/org/postgresql/test/jdbc2/BlobTest.java index ed005f4..99f0682 100644 --- a/org/postgresql/test/jdbc2/BlobTest.java +++ b/org/postgresql/test/jdbc2/BlobTest.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/BlobTest.java,v 1.17 2005/09/29 20:49:23 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/BlobTest.java,v 1.18 2005/10/03 17:27:33 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -158,13 +158,13 @@ public class BlobTest extends TestCase * because it always works, and we can use it as a base to test the new * methods. */ - private int uploadFile(String file, int method) throws Exception + private long uploadFile(String file, int method) throws Exception { LargeObjectManager lom = ((org.postgresql.PGConnection)con).getLargeObjectAPI(); FileInputStream fis = new FileInputStream(file); - int oid = lom.create(LargeObjectManager.READWRITE); + long oid = lom.createLO(LargeObjectManager.READWRITE); LargeObject blob = lom.open(oid); int s, t; @@ -227,7 +227,7 @@ public class BlobTest extends TestCase while (rs.next()) { String file = rs.getString(1); - int oid = rs.getInt(2); + long oid = rs.getLong(2); FileInputStream fis = new FileInputStream(file); LargeObject blob = lom.open(oid); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

