pub struct Blob { /* private fields */ }
Expand description
A reference to Oracle data type BLOB
This struct implements Read
, Write
and Seek
to
read and write bytes; and seek to a position in a LOB.
§Examples
use oracle::sql_type::Blob;
use oracle::sql_type::Lob;
use std::io::BufReader;
use std::io::Read;
let sql = "select BLOBCol from TestBLOBS where IntCol = 1";
let mut stmt = conn.statement(sql).lob_locator().build()?;
let blob = stmt.query_row_as::<Blob>(&[])?;
let mut buf_reader = BufReader::with_capacity(blob.chunk_size()? * 16, blob);
let mut buf = [0u8; 4];
assert_eq!(buf_reader.read(&mut buf)?, 4); // read the first four bytes
assert_eq!(&buf, b"BLOB");
assert_eq!(buf_reader.read(&mut buf)?, 4); // read the next four bytes
assert_eq!(&buf, b" DAT");
assert_eq!(buf_reader.read(&mut buf)?, 1); // read the last one byte
assert_eq!(&buf[0..1], b"A");
assert_eq!(buf_reader.read(&mut buf)?, 0); // end of blob
Implementations§
Trait Implementations§
Source§impl Lob for Blob
impl Lob for Blob
Source§fn truncate(&mut self, new_size: u64) -> Result<()>
fn truncate(&mut self, new_size: u64) -> Result<()>
Shortens the data in the LOB so that it only contains the specified amount of
data. Read more
Source§fn chunk_size(&self) -> Result<usize>
fn chunk_size(&self) -> Result<usize>
Returns the chunk size, in bytes, of the internal LOB. Reading and writing
to the LOB in multiples of this size will improve performance.
Source§fn open_resource(&mut self) -> Result<()>
fn open_resource(&mut self) -> Result<()>
Opens the LOB resource for writing. This will improve performance when
writing to the LOB in chunks and there are functional or extensible indexes
associated with the LOB. If this function is not called, the LOB resource
will be opened and closed for each write that is performed. A call to the
close_resource
should be done before performing a
call to the function Connection.commit
.Source§fn close_resource(&mut self) -> Result<()>
fn close_resource(&mut self) -> Result<()>
Closes the LOB resource. This should be done when a batch of writes has
been completed so that the indexes associated with the LOB can be updated.
It should only be performed if a call to function
open_resource
has been performed.Source§fn is_resource_open(&self) -> Result<bool>
fn is_resource_open(&self) -> Result<bool>
Returns a boolean value indicating if the LOB resource has been opened by
making a call to the function
open_resource
.Source§impl Read for Blob
impl Read for Blob
Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning
how many bytes were read. Read more
Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
Reads all bytes until EOF in this source, placing them into
buf
. Read more1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like
read
, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Reads all bytes until EOF in this source, appending them to
buf
. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Reads the exact number of bytes required to fill
buf
. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf
)Pull some bytes from this source into the specified buffer. Read more
Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf
)Reads the exact number of bytes required to fill
cursor
. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Creates a “by reference” adaptor for this instance of
Read
. Read moreSource§impl Seek for Blob
impl Seek for Blob
Source§fn seek(&mut self, pos: SeekFrom) -> Result<u64>
fn seek(&mut self, pos: SeekFrom) -> Result<u64>
Seek to an offset, in bytes, in a stream. Read more
1.55.0 · Source§fn rewind(&mut self) -> Result<(), Error>
fn rewind(&mut self) -> Result<(), Error>
Rewind to the beginning of a stream. Read more
Source§fn stream_len(&mut self) -> Result<u64, Error>
fn stream_len(&mut self) -> Result<u64, Error>
🔬This is a nightly-only experimental API. (
seek_stream_len
)Returns the length of this stream (in bytes). Read more
Source§impl ToSqlNull for Blob
impl ToSqlNull for Blob
fn oratype_for_null(_conn: &Connection) -> Result<OracleType>
Source§impl Write for Blob
impl Write for Blob
Source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Writes a buffer into this writer, returning how many bytes were written. Read more
Source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flushes this output stream, ensuring that all intermediately buffered
contents reach their destination. Read more
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
write_all_vectored
)Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations§
impl Freeze for Blob
impl RefUnwindSafe for Blob
impl !Send for Blob
impl !Sync for Blob
impl Unpin for Blob
impl UnwindSafe for Blob
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more