[−][src]Struct hdbconnect::types::NCLob
LOB implementation for unicode Strings that is used with HdbValue::NCLOB
instances coming
from the database.
Bigger LOBs are not transferred completely in the first roundtrip, instead more data are fetched in subsequent roundtrips when they are needed.
NCLob
respects the Connection's lob read length
(see Connection::set_lob_read_length
),
by transferring per fetch request lob_read_length
unicode characters (rather than bytes).
Note that due to the way how HANA represents unicode internally,
all BMP-0 characters count as 1, non-BMP-0 characters count as 2.
Implementations
impl NCLob
[src]
pub fn into_string(self) -> HdbResult<String>
[src]
Converts the NCLob
into the contained String.
All outstanding data (data that were not yet fetched from the server) are fetched
into this NCLob
object,
before the complete data, as far as they were not yet read from this NCLob
object,
are returned.
Example
let mut resultset = connection.query(query)?; let mut nclob = resultset.into_single_row()?.into_single_value()?.try_into_nclob()?; let s = nclob.into_string(); // String, can be huge
Alternative
For larger objects, a streaming approach using the Read
implementation of NCLob
might by more appropriate, to avoid total allocation of the large object.
Example
let mut writer; // ... writer gets instantiated, is an implementation of std::io::Write; std::io::copy(&mut nclob, &mut writer)?;
Errors
Several variants of HdbError
can occur.
pub fn read_slice(
&mut self,
offset: u64,
length: u32
) -> HdbResult<CharLobSlice>
[src]
&mut self,
offset: u64,
length: u32
) -> HdbResult<CharLobSlice>
Reads from given offset and the given length, in number of unicode characters.
Note that due to the way how HANA represents unicode internally, all BMP-0 characters count as 1, non-BMP-0 characters count as 2.
Errors
Several variants of HdbError
can occur.
pub fn total_byte_length(&self) -> u64
[src]
Total length of data, in bytes.
pub fn total_char_length(&self) -> u64
[src]
Total length of data, in characters.
Note that due to the way how HANA represents unicode internally, all BMP-0 characters count as 1, non-BMP-0 characters count as 2.
pub fn is_empty(&self) -> bool
[src]
Returns true if the NCLob
does not contain data.
pub fn max_buf_len(&self) -> usize
[src]
Returns the maximum size the internal buffers ever had, in bytes.
This method exists mainly for debugging purposes. With streaming, the returned value is
not supposed to exceed 3 times lob_read_length
(see
Connection::set_lob_read_length
)
plus the buffer size used by the reader.
pub fn cur_buf_len(&self) -> usize
[src]
Current size of the internal buffer, in bytes.
pub fn server_usage(&self) -> ServerUsage
[src]
Provides information about the the server-side resource consumption that
is related to this NCBLob
object.
Trait Implementations
impl Clone for NCLob
[src]
impl Debug for NCLob
[src]
impl Read for NCLob
[src]
pub fn read(&mut self, buf: &mut [u8]) -> Result<usize>
[src]
pub fn read_vectored(
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<usize, Error>
1.36.0[src]
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<usize, Error>
pub fn is_read_vectored(&self) -> bool
[src]
pub unsafe fn initializer(&self) -> Initializer
[src]
pub fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
1.0.0[src]
pub fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
1.0.0[src]
pub fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
1.6.0[src]
pub fn by_ref(&mut self) -> &mut Self
1.0.0[src]
pub fn bytes(self) -> Bytes<Self>
1.0.0[src]
pub fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read,
1.0.0[src]
R: Read,
pub fn take(self, limit: u64) -> Take<Self>
1.0.0[src]
Auto Trait Implementations
impl RefUnwindSafe for NCLob
[src]
impl Send for NCLob
[src]
impl Sync for NCLob
[src]
impl Unpin for NCLob
[src]
impl UnwindSafe for NCLob
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<R> ReadBytesExt for R where
R: Read + ?Sized,
[src]
R: Read + ?Sized,
pub fn read_u8(&mut self) -> Result<u8, Error>
[src]
pub fn read_i8(&mut self) -> Result<i8, Error>
[src]
pub fn read_u16<T>(&mut self) -> Result<u16, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i16<T>(&mut self) -> Result<i16, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u24<T>(&mut self) -> Result<u32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i24<T>(&mut self) -> Result<i32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u32<T>(&mut self) -> Result<u32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i32<T>(&mut self) -> Result<i32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u48<T>(&mut self) -> Result<u64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i48<T>(&mut self) -> Result<i64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u64<T>(&mut self) -> Result<u64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i64<T>(&mut self) -> Result<i64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u128<T>(&mut self) -> Result<u128, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i128<T>(&mut self) -> Result<i128, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_uint<T>(&mut self, nbytes: usize) -> Result<u64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_int<T>(&mut self, nbytes: usize) -> Result<i64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_f32<T>(&mut self) -> Result<f32, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_f64<T>(&mut self) -> Result<f64, Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u16_into<T>(&mut self, dst: &mut [u16]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u32_into<T>(&mut self, dst: &mut [u32]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u64_into<T>(&mut self, dst: &mut [u64]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_u128_into<T>(&mut self, dst: &mut [u128]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<(), Error>
[src]
pub fn read_i16_into<T>(&mut self, dst: &mut [i16]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i32_into<T>(&mut self, dst: &mut [i32]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i64_into<T>(&mut self, dst: &mut [i64]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_i128_into<T>(&mut self, dst: &mut [i128]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_f32_into<T>(&mut self, dst: &mut [f32]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_f32_into_unchecked<T>(
&mut self,
dst: &mut [f32]
) -> Result<(), Error> where
T: ByteOrder,
[src]
&mut self,
dst: &mut [f32]
) -> Result<(), Error> where
T: ByteOrder,
pub fn read_f64_into<T>(&mut self, dst: &mut [f64]) -> Result<(), Error> where
T: ByteOrder,
[src]
T: ByteOrder,
pub fn read_f64_into_unchecked<T>(
&mut self,
dst: &mut [f64]
) -> Result<(), Error> where
T: ByteOrder,
[src]
&mut self,
dst: &mut [f64]
) -> Result<(), Error> where
T: ByteOrder,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,