Class AbstractFbWireInputBlob

    • Method Detail

      • getBlobId

        public final long getBlobId()
        Description copied from interface: FbBlob
        Returns the blob id.

        For output blobs, this will return FbBlob.NO_BLOB_ID (0L) if the blob wasn't opened yet, or if the blob is deferred opened (client-side only). The value FbBlob.NO_BLOB_ID is technically invalid, but Firebird will handle it as an empty blob (both for input and output).

        Returns:
        The Firebird blob id
      • isOutput

        public final boolean isOutput()
        Returns:
        true if this is an output blob (write only), false if this is an input blob (read only)
      • putSegment

        public final void putSegment​(byte[] segment)
                              throws java.sql.SQLException
        Description copied from interface: FbBlob
        Writes a segment of blob data.

        Implementations must handle segment lengths exceeding FbBlob.getMaximumSegmentSize() by batching. This method should either call put(segment, 0, segment.length), or produce the same effects as that call.

        Passing a section that is length 0 will throw an SQLException.

        Specified by:
        putSegment in interface FbBlob
        Overrides:
        putSegment in class AbstractFbBlob
        Parameters:
        segment - segment to write
        Throws:
        java.sql.SQLException - if this is an input blob, the blob is closed, the transaction is not active, the segment is length 0, or a database connection error occurred
        See Also:
        FbBlob.put(byte[], int, int)
      • put

        public final void put​(byte[] b,
                              int off,
                              int len)
                       throws java.sql.SQLException
        Description copied from interface: FbBlob
        Writes content of b starting at off for length bytes to the blob.

        Implementations must write all bytes to the blob, using multiple round-trips if necessary.

        If the implementation cannot perform writes without additional allocation, it should use at most DatabaseConnectionProperties.getBlobBufferSize() as an internal buffer. If the implementation can perform writes without additional allocation, it is recommended it performs reads using (at most) FbBlob.getMaximumSegmentSize().

        Parameters:
        b - source byte array
        off - offset to start
        len - number of bytes
        Throws:
        java.sql.SQLException - for database access errors, if off < 0, len < 0, or if off + len > b.length