duckdb-ffi-1.4.1.2: src/Database/DuckDB/FFI/Arrow.hs
module Database.DuckDB.FFI.Arrow (
c_duckdb_to_arrow_schema,
c_duckdb_data_chunk_to_arrow,
c_duckdb_schema_from_arrow,
c_duckdb_data_chunk_from_arrow,
c_duckdb_destroy_arrow_converted_schema,
) where
import Database.DuckDB.FFI.Types
import Foreign.C.String (CString)
import Foreign.Ptr (Ptr)
{- | Transforms a DuckDB Schema into an Arrow Schema
Parameters:
* @arrow_options@: The Arrow settings used to produce arrow.
* @types@: The DuckDB logical types for each column in the schema.
* @names@: The names for each column in the schema.
* @column_count@: The number of columns that exist in the schema.
* @out_schema@: The resulting arrow schema. Must be destroyed with
@out_schema->release(out_schema)@.
Returns The error data. Must be destroyed with @duckdb_destroy_error_data@.
-}
foreign import ccall safe "duckdb_to_arrow_schema"
c_duckdb_to_arrow_schema :: DuckDBArrowOptions -> Ptr DuckDBLogicalType -> Ptr CString -> DuckDBIdx -> Ptr ArrowSchema -> IO DuckDBErrorData
{- | Transforms a DuckDB data chunk into an Arrow array.
Parameters:
* @arrow_options@: The Arrow settings used to produce arrow.
* @chunk@: The DuckDB data chunk to convert.
* @out_arrow_array@: The output Arrow structure that will hold the converted
data. Must be released with @out_arrow_array->release(out_arrow_array)@
Returns The error data. Must be destroyed with @duckdb_destroy_error_data@.
-}
foreign import ccall safe "duckdb_data_chunk_to_arrow"
c_duckdb_data_chunk_to_arrow :: DuckDBArrowOptions -> DuckDBDataChunk -> Ptr ArrowArray -> IO DuckDBErrorData
{- | Transforms an Arrow Schema into a DuckDB Schema.
Parameters:
* @connection@: The connection to get the transformation settings from.
* @schema@: The input Arrow schema. Must be released with
@schema->release(schema)@.
* @out_types@: The Arrow converted schema with extra information about the
arrow types. Must be destroyed with @duckdb_destroy_arrow_converted_schema@.
Returns The error data. Must be destroyed with @duckdb_destroy_error_data@.
-}
foreign import ccall safe "duckdb_schema_from_arrow"
c_duckdb_schema_from_arrow :: DuckDBConnection -> Ptr ArrowSchema -> Ptr DuckDBArrowConvertedSchema -> IO DuckDBErrorData
{- | Transforms an Arrow array into a DuckDB data chunk. The data chunk will retain
ownership of the underlying Arrow data.
Parameters:
* @connection@: The connection to get the transformation settings from.
* @arrow_array@: The input Arrow array. Data ownership is passed on to
DuckDB's DataChunk, the underlying object does not need to be released and
won't have ownership of the data.
* @converted_schema@: The Arrow converted schema with extra information about
the arrow types.
* @out_chunk@: The resulting DuckDB data chunk. Must be destroyed by
duckdb_destroy_data_chunk.
Returns The error data. Must be destroyed with @duckdb_destroy_error_data@.
-}
foreign import ccall safe "duckdb_data_chunk_from_arrow"
c_duckdb_data_chunk_from_arrow :: DuckDBConnection -> Ptr ArrowArray -> DuckDBArrowConvertedSchema -> Ptr DuckDBDataChunk -> IO DuckDBErrorData
{- | Destroys the arrow converted schema and de-allocates all memory allocated for
that arrow converted schema.
Parameters:
* @arrow_converted_schema@: The arrow converted schema to destroy.
-}
foreign import ccall safe "duckdb_destroy_arrow_converted_schema"
c_duckdb_destroy_arrow_converted_schema :: Ptr DuckDBArrowConvertedSchema -> IO ()