This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to tag REL8_0_312 in repository libpostgresql-jdbc-java.
commit 965d14885768750f664cd62f59b3f25d5e48dba9 Author: Kris Jurka <[email protected]> Date: Sun May 8 23:17:48 2005 +0000 In Blob.getBytes(long position, int length) position is an offset starting at 1, not zero as the driver was previously doing. Thanks to Emmanuel Bernard for the report. --- org/postgresql/jdbc2/AbstractJdbc2Blob.java | 13 +++++++--- org/postgresql/test/jdbc2/BlobTest.java | 37 +++++++++++++++-------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/org/postgresql/jdbc2/AbstractJdbc2Blob.java b/org/postgresql/jdbc2/AbstractJdbc2Blob.java index 230ec19..3a1147b 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.7 2005/01/11 08:25:45 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java,v 1.7.2.1 2005/02/15 08:55:50 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -16,6 +16,10 @@ import java.io.InputStream; import java.sql.Blob; import java.sql.SQLException; +import org.postgresql.util.GT; +import org.postgresql.util.PSQLState; +import org.postgresql.util.PSQLException; + public abstract class AbstractJdbc2Blob { private LargeObject lo; @@ -38,7 +42,10 @@ public abstract class AbstractJdbc2Blob public byte[] getBytes(long pos, int length) throws SQLException { - lo.seek((int)pos, LargeObject.SEEK_SET); + if (pos < 1) { + throw new PSQLException(GT.tr("LOB positioning offsets start at 1."), PSQLState.INVALID_PARAMETER_VALUE); + } + lo.seek((int)(pos-1), LargeObject.SEEK_SET); return lo.read(length); } @@ -55,7 +62,7 @@ public abstract class AbstractJdbc2Blob */ public long position(Blob pattern, long start) throws SQLException { - return position(pattern.getBytes(0, (int)pattern.length()), start); + return position(pattern.getBytes(1, (int)pattern.length()), start); } } diff --git a/org/postgresql/test/jdbc2/BlobTest.java b/org/postgresql/test/jdbc2/BlobTest.java index cc9ab4c..7cb80c2 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.14 2005/01/11 08:25:48 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/BlobTest.java,v 1.14.2.1 2005/04/28 14:18:09 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -28,7 +28,6 @@ public class BlobTest extends TestCase private static final int LOOP = 0; // LargeObject API using loop private static final int NATIVE_STREAM = 1; // LargeObject API using OutputStream - private static final int JDBC_STREAM = 2; // JDBC API using OutputStream public BlobTest(String name) { @@ -39,10 +38,12 @@ public class BlobTest extends TestCase { con = TestUtil.openDB(); TestUtil.createTable(con, "testblob", "id name,lo oid"); + con.setAutoCommit(false); } protected void tearDown() throws Exception { + con.setAutoCommit(true); TestUtil.dropTable(con, "testblob"); TestUtil.closeDB(con); } @@ -75,9 +76,6 @@ public class BlobTest extends TestCase */ public void testUploadBlob_LOOP() throws Exception { - con.setAutoCommit(false); - assertTrue(!con.getAutoCommit()); - assertTrue(uploadFile("build.xml", LOOP) > 0); // Now compare the blob & the file. Note this actually tests the @@ -85,8 +83,6 @@ public class BlobTest extends TestCase assertTrue(compareBlobsLOAPI()); assertTrue(compareBlobs()); assertTrue(compareClobs()); - - con.setAutoCommit(true); } /* @@ -94,16 +90,28 @@ public class BlobTest extends TestCase */ public void testUploadBlob_NATIVE() throws Exception { - con.setAutoCommit(false); - assertTrue(!con.getAutoCommit()); - assertTrue(uploadFile("build.xml", NATIVE_STREAM) > 0); // Now compare the blob & the file. Note this actually tests the // InputStream implementation! assertTrue(compareBlobs()); + } - con.setAutoCommit(true); + public void testGetBytesOffset() throws Exception + { + assertTrue(uploadFile("build.xml", NATIVE_STREAM) > 0); + + Statement stmt = con.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT lo FROM testblob"); + assertTrue(rs.next()); + + Blob lob = rs.getBlob(1); + byte data[] = lob.getBytes(2,4); + assertEquals(data.length, 4); + assertEquals(data[0], '?'); + assertEquals(data[1], 'x'); + assertEquals(data[2], 'm'); + assertEquals(data[3], 'l'); } /* @@ -147,13 +155,6 @@ public class BlobTest extends TestCase os.close(); break; - case JDBC_STREAM: - File f = new File(file); - PreparedStatement ps = con.prepareStatement(TestUtil.insertSQL("testblob", "?")); - ps.setBinaryStream(1, fis, (int) f.length()); - ps.execute(); - break; - default: assertTrue("Unknown method in uploadFile", false); } -- 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

