This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to tag REL8_2_505 in repository libpostgresql-jdbc-java.
commit 48bcb0fe0d5546cf7484370dbeb209cddd7d79bd Author: Kris Jurka <[email protected]> Date: Mon Feb 19 06:04:48 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/jdbc4/AbstractJdbc4Blob.java | 4 +- org/postgresql/jdbc4/AbstractJdbc4Clob.java | 4 +- org/postgresql/jdbc4/Jdbc4Blob.java | 4 +- org/postgresql/jdbc4/Jdbc4Clob.java | 4 +- org/postgresql/jdbc4/Jdbc4ResultSet.java | 6 +- org/postgresql/largeobject/LargeObject.java | 17 +++- org/postgresql/largeobject/LargeObjectManager.java | 92 ++++++++++++++++++++-- org/postgresql/test/jdbc2/BlobTest.java | 8 +- 26 files changed, 198 insertions(+), 74 deletions(-) diff --git a/doc/pgjdbc.xml b/doc/pgjdbc.xml index ff16609..1f0c948 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.29 2006/05/22 19:39:52 jurka Exp $ + $PostgreSQL: pgjdbc/doc/pgjdbc.xml,v 1.30 2006/09/26 05:18:04 jurka Exp $ --> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> @@ -1416,7 +1416,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); @@ -1439,7 +1439,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(); @@ -1464,7 +1464,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 62afedb..520c7f8 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.32 2005/01/14 01:20:18 oliver Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/fastpath/Fastpath.java,v 1.33 2005/11/24 02:29:21 oliver Exp $ * *------------------------------------------------------------------------- */ @@ -30,6 +30,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(); @@ -126,6 +131,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 @@ -219,5 +238,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 3a5ec0f..cfa6f77 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.9 2005/03/28 08:52:35 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java,v 1.10 2006/11/05 05:58:22 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -17,7 +17,7 @@ import org.postgresql.largeobject.LargeObject; public abstract class AbstractJdbc2Blob extends AbstractJdbc2BlobClob { - 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 0c0d506..0769624 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.87 2006/11/05 07:45:16 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java,v 1.88 2006/12/01 10:27:05 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -2163,7 +2163,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); @@ -2279,7 +2279,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 bad5355..89bee5e 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.96 2006/12/01 08:53:46 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java,v 1.96.2.1 2007/01/04 21:59:19 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -1276,11 +1276,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); } } @@ -1476,7 +1476,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 @@ -1499,7 +1499,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); } } @@ -2732,7 +2732,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]; @@ -2768,7 +2768,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 @@ -2824,7 +2824,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 @@ -2847,7 +2847,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); } } @@ -2864,7 +2864,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 @@ -2887,7 +2887,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/jdbc4/AbstractJdbc4Blob.java b/org/postgresql/jdbc4/AbstractJdbc4Blob.java index 3ff83b0..a8f2be0 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4Blob.java +++ b/org/postgresql/jdbc4/AbstractJdbc4Blob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL$ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc4/AbstractJdbc4Blob.java,v 1.1 2006/06/08 10:34:51 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -15,7 +15,7 @@ import java.sql.*; public class AbstractJdbc4Blob extends org.postgresql.jdbc3.AbstractJdbc3Blob { - public AbstractJdbc4Blob(org.postgresql.PGConnection conn, int oid) throws SQLException + public AbstractJdbc4Blob(org.postgresql.PGConnection conn, long oid) throws SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc4/AbstractJdbc4Clob.java b/org/postgresql/jdbc4/AbstractJdbc4Clob.java index 6bed7a3..d1dc966 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4Clob.java +++ b/org/postgresql/jdbc4/AbstractJdbc4Clob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL$ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc4/AbstractJdbc4Clob.java,v 1.1 2006/06/08 10:34:51 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -15,7 +15,7 @@ import java.sql.SQLException; public class AbstractJdbc4Clob extends org.postgresql.jdbc3.AbstractJdbc3Clob { - public AbstractJdbc4Clob(org.postgresql.PGConnection conn, int oid) throws SQLException + public AbstractJdbc4Clob(org.postgresql.PGConnection conn, long oid) throws SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc4/Jdbc4Blob.java b/org/postgresql/jdbc4/Jdbc4Blob.java index 4d1db8d..84d18e0 100644 --- a/org/postgresql/jdbc4/Jdbc4Blob.java +++ b/org/postgresql/jdbc4/Jdbc4Blob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL$ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc4/Jdbc4Blob.java,v 1.1 2006/06/08 10:34:52 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -15,7 +15,7 @@ import java.sql.*; public class Jdbc4Blob extends AbstractJdbc4Blob implements java.sql.Blob { - public Jdbc4Blob(org.postgresql.PGConnection conn, int oid) throws SQLException + public Jdbc4Blob(org.postgresql.PGConnection conn, long oid) throws SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc4/Jdbc4Clob.java b/org/postgresql/jdbc4/Jdbc4Clob.java index 67e200c..4c07892 100644 --- a/org/postgresql/jdbc4/Jdbc4Clob.java +++ b/org/postgresql/jdbc4/Jdbc4Clob.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL$ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc4/Jdbc4Clob.java,v 1.1 2006/06/08 10:34:52 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -13,7 +13,7 @@ package org.postgresql.jdbc4; public class Jdbc4Clob extends AbstractJdbc4Clob implements java.sql.Clob { - public Jdbc4Clob(org.postgresql.PGConnection conn, int oid) throws java.sql.SQLException + public Jdbc4Clob(org.postgresql.PGConnection conn, long oid) throws java.sql.SQLException { super(conn, oid); } diff --git a/org/postgresql/jdbc4/Jdbc4ResultSet.java b/org/postgresql/jdbc4/Jdbc4ResultSet.java index ba8e4be..1d44c56 100644 --- a/org/postgresql/jdbc4/Jdbc4ResultSet.java +++ b/org/postgresql/jdbc4/Jdbc4ResultSet.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2005, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL$ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc4/Jdbc4ResultSet.java,v 1.1 2006/06/08 10:34:52 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ public class Jdbc4ResultSet extends AbstractJdbc4ResultSet implements java.sql.R if (wasNullFlag) return null; - return new Jdbc4Clob(connection, getInt(i)); + return new Jdbc4Clob(connection, getLong(i)); } public java.sql.Blob getBlob(int i) throws SQLException @@ -51,7 +51,7 @@ public class Jdbc4ResultSet extends AbstractJdbc4ResultSet implements java.sql.R if (wasNullFlag) return null; - return new Jdbc4Blob(connection, getInt(i)); + return new Jdbc4Blob(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 fc25549..7715190 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.19 2005/01/14 01:20:22 oliver Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/largeobject/LargeObjectManager.java,v 1.20 2005/11/24 02:29: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 8e5a6b4..a07f351 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.18 2005/10/03 17:27:33 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/BlobTest.java,v 1.19 2006/10/31 06:12:47 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

