diff options
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java')
| -rw-r--r-- | src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java new file mode 100644 index 0000000000..cb6c5b01dc --- /dev/null +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java @@ -0,0 +1,57 @@ +package org.postgresql.jdbc2; + +import java.lang.*; +import java.io.*; +import java.math.*; +import java.text.*; +import java.util.*; +import java.sql.*; +import org.postgresql.Field; +import org.postgresql.PGConnection; +import org.postgresql.largeobject.*; + +public abstract class AbstractJdbc2Blob +{ + private int oid; + private LargeObject lo; + + public AbstractJdbc2Blob(PGConnection conn, int oid) throws SQLException + { + this.oid = oid; + LargeObjectManager lom = conn.getLargeObjectAPI(); + this.lo = lom.open(oid); + } + + public long length() throws SQLException + { + return lo.size(); + } + + public InputStream getBinaryStream() throws SQLException + { + return lo.getInputStream(); + } + + public byte[] getBytes(long pos, int length) throws SQLException + { + lo.seek((int)pos, LargeObject.SEEK_SET); + return lo.read(length); + } + + /* + * For now, this is not implemented. + */ + public long position(byte[] pattern, long start) throws SQLException + { + throw org.postgresql.Driver.notImplemented(); + } + + /* + * This should be simply passing the byte value of the pattern Blob + */ + public long position(Blob pattern, long start) throws SQLException + { + return position(pattern.getBytes(0, (int)pattern.length()), start); + } + +} |
