Decoder for DuckDB Quack DataChunk payloads.
Data chunks carry a row count, logical types, and column vectors. This module validates the chunk wrapper and converts decoded vectors into row-oriented results for the current DBConnection/Ecto-facing API.
Summary
Types
@type column() :: %{ type: QuackDB.Protocol.LogicalType.t(), vector_type: atom(), values: [term()] }
@type t() :: %QuackDB.Protocol.DataChunk{ columns: [column()], row_count: non_neg_integer(), types: [QuackDB.Protocol.LogicalType.t()] }
Functions
@spec columns_from_rows([row()], Keyword.t()) :: {:ok, [map()]} | {:error, QuackDB.Error.t()}
@spec decode_wrapper(binary()) :: QuackDB.Protocol.Reader.read_result(t())
@spec from_rows([row()], Keyword.t()) :: {:ok, t()} | {:error, QuackDB.Error.t()}