Skip to main content

DataChunk

Struct DataChunk 

Source
pub struct DataChunk { /* private fields */ }
Expand description

A non-owning wrapper around a duckdb_data_chunk.

This wrapper does not destroy the chunk on drop — DuckDB owns the chunk and manages its lifetime. DataChunk simply provides ergonomic methods for accessing vectors and metadata within callback functions.

Implementations§

Source§

impl DataChunk

Source

pub const unsafe fn from_raw(raw: duckdb_data_chunk) -> Self

Wraps a raw duckdb_data_chunk handle.

§Safety

raw must be a valid duckdb_data_chunk obtained from a DuckDB callback (e.g., a scan callback’s output parameter or an aggregate update callback’s input chunk). The chunk must remain valid for the lifetime of this wrapper.

Source

pub fn size(&self) -> usize

Returns the number of rows in this data chunk.

Source

pub unsafe fn set_size(&self, size: usize)

Sets the number of rows in this data chunk.

Call this in scan callbacks after writing output rows. Set to 0 to signal end of stream.

§Safety

size must not exceed the chunk’s capacity (typically 2048).

Source

pub fn column_count(&self) -> usize

Returns the number of columns in this data chunk.

Source

pub unsafe fn vector(&self, col_idx: usize) -> duckdb_vector

Returns the raw duckdb_vector handle for the given column index.

§Safety

col_idx must be less than column_count.

Source

pub unsafe fn writer(&self, col_idx: usize) -> VectorWriter

Creates a VectorWriter for the given column index.

§Safety
  • col_idx must be less than column_count.
  • The chunk must be a writable output chunk (not a read-only input chunk).
Source

pub unsafe fn reader(&self, col_idx: usize) -> VectorReader

Creates a VectorReader for the given column index.

The reader’s row count is set to this chunk’s current size.

§Safety

col_idx must be less than column_count.

Source

pub unsafe fn struct_reader( &self, col_idx: usize, field_count: usize, ) -> StructReader

Creates a StructReader for a STRUCT column at the given index.

This is a convenience method that combines vector with StructReader::new.

§Safety
  • col_idx must be less than column_count.
  • The column at col_idx must have a STRUCT type with field_count fields.
Source

pub unsafe fn struct_field_reader( &self, col_idx: usize, field_idx: usize, ) -> VectorReader

Creates a VectorReader for a field of a STRUCT column.

Convenience for accessing a specific field in a STRUCT input column.

§Safety
  • col_idx must be less than column_count.
  • The column at col_idx must have a STRUCT type.
  • field_idx must be a valid field index within the STRUCT.
Source

pub unsafe fn struct_writer( &self, col_idx: usize, field_count: usize, ) -> StructWriter

Creates a StructWriter for a STRUCT column at the given index.

This is a convenience method that combines vector with StructWriter::new.

§Safety
  • col_idx must be less than column_count.
  • The column at col_idx must have a STRUCT type with field_count fields.
  • The chunk must be a writable output chunk.
Source

pub const unsafe fn into_chunk_writer(self) -> ChunkWriter

Creates a ChunkWriter for this output data chunk.

The ChunkWriter tracks rows via next_row() and automatically calls set_size on drop.

§Safety

This chunk must be a valid, writable output chunk from a table function scan callback.

Source

pub const fn as_raw(&self) -> duckdb_data_chunk

Returns the raw duckdb_data_chunk handle.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.