/*
* Copyright (c) 2004, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
package org.postgresql.jdbc;
import org.postgresql.largeobject.LargeObject;
import java.sql.SQLException;
public class PgBlob extends AbstractBlobClob implements java.sql.Blob {
public PgBlob(org.postgresql.core.BaseConnection conn, long oid) throws SQLException {
super(conn, oid);
}
public synchronized java.io.InputStream getBinaryStream(long pos, long length)
throws SQLException {
checkFreed();
LargeObject subLO = getLo(false).copy();
addSubLO(subLO);
if (pos > Integer.MAX_VALUE) {
subLO.seek64(pos - 1, LargeObject.SEEK_SET);
} else {
subLO.seek((int) pos - 1, LargeObject.SEEK_SET);
}
return subLO.getInputStream(length);
}
public synchronized int setBytes(long pos, byte[] bytes) throws SQLException {
return setBytes(pos, bytes, 0, bytes.length);
}
public synchronized int setBytes(long pos, byte[] bytes, int offset, int len)
throws SQLException {
assertPosition(pos);
getLo(true).seek((int) (pos - 1));
getLo(true).write(bytes, offset, len);
return len;
}
}