pub struct BinColumn { /* private fields */ }
Expand description
A buffer intended to be bound to a column of a cursor. Elements of the buffer will contain a variable amount of bytes up to a maximum length. Since elements of this type have variable length an additional indicator buffer is also maintained, whether the column is nullable or not. Therefore this buffer type is used for variable sized binary data whether it is nullable or not.
Implementations
sourceimpl BinColumn
impl BinColumn
sourcepub fn new(batch_size: usize, max_len: usize) -> Self
pub fn new(batch_size: usize, max_len: usize) -> Self
This will allocate a value and indicator buffer for batch_size
elements. Each value may
have a maximum length of max_len
.
sourcepub fn value_at(&self, row_index: usize) -> Option<&[u8]>
pub fn value_at(&self, row_index: usize) -> Option<&[u8]>
Return the value for the given row index.
The column buffer does not know how many elements were in the last row group, and therefore
can not guarantee the accessed element to be valid and in a defined state. It also can not
panic on accessing an undefined element. It will panic however if row_index
is larger or
equal to the maximum number of elements in the buffer.
sourcepub fn indicator_at(&self, row_index: usize) -> Indicator
pub fn indicator_at(&self, row_index: usize) -> Indicator
Indicator value at the specified position. Useful to detect truncation of data.
The column buffer does not know how many elements were in the last row group, and therefore
can not guarantee the accessed element to be valid and in a defined state. It also can not
panic on accessing an undefined element. It will panic however if row_index
is larger or
equal to the maximum number of elements in the buffer.
sourcepub fn content_length_at(&self, row_index: usize) -> Option<usize>
pub fn content_length_at(&self, row_index: usize) -> Option<usize>
Length of value at the specified position. This is different from an indicator as it refers to the length of the value in the buffer, not to the length of the value in the datasource. The two things are different for truncated values.
sourcepub fn set_max_len(&mut self, new_max_len: usize)
pub fn set_max_len(&mut self, new_max_len: usize)
Changes the maximum element length the buffer can hold. This operation is useful if you find an unexpected large input during insertion. All values in the buffer will be set to NULL.
Parameters
new_max_len
: New maximum string length without terminating zero.
sourcepub fn view(&self, num_rows: usize) -> BinColumnView<'_>
pub fn view(&self, num_rows: usize) -> BinColumnView<'_>
View of the first num_rows
values of a binary column.
Num rows may not exceed the actually amount of valid num_rows filled be the ODBC API. The
column buffer does not know how many elements were in the last row group, and therefore can
not guarantee the accessed element to be valid and in a defined state. It also can not panic
on accessing an undefined element. It will panic however if row_index
is larger or equal
to the maximum number of elements in the buffer.
sourcepub fn set_value(&mut self, index: usize, input: Option<&[u8]>)
pub fn set_value(&mut self, index: usize, input: Option<&[u8]>)
Sets the value of the buffer at index to NULL or the specified bytes. This method will panic on out of bounds index, or if input holds a value which is longer than the maximum allowed element length.
sourcepub fn fill_null(&mut self, from: usize, to: usize)
pub fn fill_null(&mut self, from: usize, to: usize)
Fills the column with NULL, between From and To
sourcepub fn writer_n(&mut self, n: usize) -> BinColumnWriter<'_>
pub fn writer_n(&mut self, n: usize) -> BinColumnWriter<'_>
A writer able to fill the first n
elements of the buffer, from an iterator.
sourcepub fn resize_max_element_length(&mut self, new_max_len: usize, num_rows: usize)
pub fn resize_max_element_length(&mut self, new_max_len: usize, num_rows: usize)
Changes the maximum number of bytes per row the buffer can hold. This operation is useful if you find an unexpected large input during insertion.
This is however costly, as not only does the new buffer have to be allocated, but all values have to copied from the old to the new buffer.
This method could also be used to reduce the maximum length, which would truncate values in the process.
This method does not adjust indicator buffers as these might hold values larger than the maximum length.
Parameters
new_max_len
: New maximum element length in bytes.num_rows
: Number of valid rows currently stored in this buffer.
sourcepub fn append(&mut self, index: usize, bytes: Option<&[u8]>)
pub fn append(&mut self, index: usize, bytes: Option<&[u8]>)
Appends a new element to the column buffer. Rebinds the buffer to increase maximum element length should the input be to large.
Parameters
index
: Zero based index of the new row position. Must be equal to the number of rows currently in the buffer.bytes
: Value to store.
Trait Implementations
sourceimpl CData for BinColumn
impl CData for BinColumn
sourcefn cdata_type(&self) -> CDataType
fn cdata_type(&self) -> CDataType
The identifier of the C data type of the value buffer. When it is retrieving data from the
data source with fetch
, the driver converts the data to this type. When it sends data to
the source, the driver converts the data from this type. Read more
sourcefn indicator_ptr(&self) -> *const isize
fn indicator_ptr(&self) -> *const isize
Indicates the length of variable sized types. May be zero for fixed sized types. Used to determine the size or existence of input parameters. Read more
sourcefn value_ptr(&self) -> *const c_void
fn value_ptr(&self) -> *const c_void
Pointer to a value corresponding to the one described by cdata_type
.
sourcefn buffer_length(&self) -> isize
fn buffer_length(&self) -> isize
Maximum length of the type in bytes (not characters). It is required to index values in
bound buffers, if more than one parameter is bound. Can be set to zero for types not bound
as parameter arrays, i.e. CStr
. Read more
sourceimpl CDataMut for BinColumn
impl CDataMut for BinColumn
sourcefn mut_indicator_ptr(&mut self) -> *mut isize
fn mut_indicator_ptr(&mut self) -> *mut isize
Indicates the length of variable sized types. May be zero for fixed sized types.
sourcefn mut_value_ptr(&mut self) -> *mut c_void
fn mut_value_ptr(&mut self) -> *mut c_void
Pointer to a value corresponding to the one described by cdata_type
.
Auto Trait Implementations
impl RefUnwindSafe for BinColumn
impl Send for BinColumn
impl Sync for BinColumn
impl Unpin for BinColumn
impl UnwindSafe for BinColumn
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more