--- layout: docu redirect_from: - /docs/api/c/api - /docs/api/c/api/ - /docs/clients/c/api title: Complete API --- <!-- markdownlint-disable MD001 --> This page contains the reference for DuckDB's C API. > The reference contains several deprecation notices. These concern methods whose long-term availability is not guaranteed as they may be removed in the future. That said, DuckDB's developers plan to carry out deprecations slowly as several of the deprecated methods do not yet have a fully functional alternative. Therefore, they will not removed before the alternative is available, and even then, there will be a grace period of a few minor versions before removing them. The reason that the methods are already deprecated in v1.0 is to denote that they are not part of the v1.0 stable API, which contains methods that are available long-term. ## API Reference Overview <!-- This section is generated by scripts/generate_c_api_docs.py --> ### Open Connect <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_instance_cache</span> <a href="#duckdb_create_instance_cache"><span class="nf">duckdb_create_instance_cache</span></a>(); <span class="kt">duckdb_state</span> <a href="#duckdb_get_or_create_from_cache"><span class="nf">duckdb_get_or_create_from_cache</span></a>(<span class="nv">duckdb_instance_cache</span> <span class="nv">instance_cache</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">path</span>, <span class="kt">duckdb_database</span> *<span class="nv">out_database</span>, <span class="kt">duckdb_config</span> <span class="nv">config</span>, <span class="kt">char</span> **<span class="nv">out_error</span>); <span class="kt">void</span> <a href="#duckdb_destroy_instance_cache"><span class="nf">duckdb_destroy_instance_cache</span></a>(<span class="nv">duckdb_instance_cache</span> *<span class="nv">instance_cache</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_open"><span class="nf">duckdb_open</span></a>(<span class="kt">const</span> <span class="kt">char</span> *<span class="nv">path</span>, <span class="kt">duckdb_database</span> *<span class="nv">out_database</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_open_ext"><span class="nf">duckdb_open_ext</span></a>(<span class="kt">const</span> <span class="kt">char</span> *<span class="nv">path</span>, <span class="kt">duckdb_database</span> *<span class="nv">out_database</span>, <span class="kt">duckdb_config</span> <span class="nv">config</span>, <span class="kt">char</span> **<span class="nv">out_error</span>); <span class="kt">void</span> <a href="#duckdb_close"><span class="nf">duckdb_close</span></a>(<span class="kt">duckdb_database</span> *<span class="nv">database</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_connect"><span class="nf">duckdb_connect</span></a>(<span class="kt">duckdb_database</span> <span class="nv">database</span>, <span class="kt">duckdb_connection</span> *<span class="nv">out_connection</span>); <span class="kt">void</span> <a href="#duckdb_interrupt"><span class="nf">duckdb_interrupt</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>); <span class="kt">duckdb_query_progress_type</span> <a href="#duckdb_query_progress"><span class="nf">duckdb_query_progress</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>); <span class="kt">void</span> <a href="#duckdb_disconnect"><span class="nf">duckdb_disconnect</span></a>(<span class="kt">duckdb_connection</span> *<span class="nv">connection</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_library_version"><span class="nf">duckdb_library_version</span></a>(); </code></pre></div></div> ### Configuration <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_create_config"><span class="nf">duckdb_create_config</span></a>(<span class="kt">duckdb_config</span> *<span class="nv">out_config</span>); <span class="kt">size_t</span> <a href="#duckdb_config_count"><span class="nf">duckdb_config_count</span></a>(); <span class="kt">duckdb_state</span> <a href="#duckdb_get_config_flag"><span class="nf">duckdb_get_config_flag</span></a>(<span class="kt">size_t</span> <span class="nv">index</span>, <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">out_name</span>, <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">out_description</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_set_config"><span class="nf">duckdb_set_config</span></a>(<span class="kt">duckdb_config</span> <span class="nv">config</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">option</span>); <span class="kt">void</span> <a href="#duckdb_destroy_config"><span class="nf">duckdb_destroy_config</span></a>(<span class="kt">duckdb_config</span> *<span class="nv">config</span>); </code></pre></div></div> ### Query Execution <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_query"><span class="nf">duckdb_query</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">query</span>, <span class="kt">duckdb_result</span> *<span class="nv">out_result</span>); <span class="kt">void</span> <a href="#duckdb_destroy_result"><span class="nf">duckdb_destroy_result</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_column_name"><span class="nf">duckdb_column_name</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>); <span class="kt">duckdb_type</span> <a href="#duckdb_column_type"><span class="nf">duckdb_column_type</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>); <span class="kt">duckdb_statement_type</span> <a href="#duckdb_result_statement_type"><span class="nf">duckdb_result_statement_type</span></a>(<span class="kt">duckdb_result</span> <span class="nv">result</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_column_logical_type"><span class="nf">duckdb_column_logical_type</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>); <span class="kt">idx_t</span> <a href="#duckdb_column_count"><span class="nf">duckdb_column_count</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>); <span class="kt">idx_t</span> <a href="#duckdb_row_count"><span class="nf">duckdb_row_count</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>); <span class="kt">idx_t</span> <a href="#duckdb_rows_changed"><span class="nf">duckdb_rows_changed</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>); <span class="kt">void</span> *<a href="#duckdb_column_data"><span class="nf">duckdb_column_data</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>); <span class="kt">bool</span> *<a href="#duckdb_nullmask_data"><span class="nf">duckdb_nullmask_data</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_result_error"><span class="nf">duckdb_result_error</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>); <span class="kt">duckdb_error_type</span> <a href="#duckdb_result_error_type"><span class="nf">duckdb_result_error_type</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>); </code></pre></div></div> ### Result Functions <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_data_chunk</span> <a href="#duckdb_result_get_chunk"><span class="nf">duckdb_result_get_chunk</span></a>(<span class="kt">duckdb_result</span> <span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">chunk_index</span>); <span class="kt">bool</span> <a href="#duckdb_result_is_streaming"><span class="nf">duckdb_result_is_streaming</span></a>(<span class="kt">duckdb_result</span> <span class="nv">result</span>); <span class="kt">idx_t</span> <a href="#duckdb_result_chunk_count"><span class="nf">duckdb_result_chunk_count</span></a>(<span class="kt">duckdb_result</span> <span class="nv">result</span>); <span class="kt">duckdb_result_type</span> <a href="#duckdb_result_return_type"><span class="nf">duckdb_result_return_type</span></a>(<span class="kt">duckdb_result</span> <span class="nv">result</span>); </code></pre></div></div> ### Safe Fetch Functions <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <a href="#duckdb_value_boolean"><span class="nf">duckdb_value_boolean</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">int8_t</span> <a href="#duckdb_value_int8"><span class="nf">duckdb_value_int8</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">int16_t</span> <a href="#duckdb_value_int16"><span class="nf">duckdb_value_int16</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">int32_t</span> <a href="#duckdb_value_int32"><span class="nf">duckdb_value_int32</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">int64_t</span> <a href="#duckdb_value_int64"><span class="nf">duckdb_value_int64</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_hugeint</span> <a href="#duckdb_value_hugeint"><span class="nf">duckdb_value_hugeint</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_uhugeint</span> <a href="#duckdb_value_uhugeint"><span class="nf">duckdb_value_uhugeint</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_decimal</span> <a href="#duckdb_value_decimal"><span class="nf">duckdb_value_decimal</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">uint8_t</span> <a href="#duckdb_value_uint8"><span class="nf">duckdb_value_uint8</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">uint16_t</span> <a href="#duckdb_value_uint16"><span class="nf">duckdb_value_uint16</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">uint32_t</span> <a href="#duckdb_value_uint32"><span class="nf">duckdb_value_uint32</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">uint64_t</span> <a href="#duckdb_value_uint64"><span class="nf">duckdb_value_uint64</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">float</span> <a href="#duckdb_value_float"><span class="nf">duckdb_value_float</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">double</span> <a href="#duckdb_value_double"><span class="nf">duckdb_value_double</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_date</span> <a href="#duckdb_value_date"><span class="nf">duckdb_value_date</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_time</span> <a href="#duckdb_value_time"><span class="nf">duckdb_value_time</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_timestamp</span> <a href="#duckdb_value_timestamp"><span class="nf">duckdb_value_timestamp</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_interval</span> <a href="#duckdb_value_interval"><span class="nf">duckdb_value_interval</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">char</span> *<a href="#duckdb_value_varchar"><span class="nf">duckdb_value_varchar</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_string</span> <a href="#duckdb_value_string"><span class="nf">duckdb_value_string</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">char</span> *<a href="#duckdb_value_varchar_internal"><span class="nf">duckdb_value_varchar_internal</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_string</span> <a href="#duckdb_value_string_internal"><span class="nf">duckdb_value_string_internal</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_blob</span> <a href="#duckdb_value_blob"><span class="nf">duckdb_value_blob</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">bool</span> <a href="#duckdb_value_is_null"><span class="nf">duckdb_value_is_null</span></a>(<span class="kt">duckdb_result</span> *<span class="nv">result</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); </code></pre></div></div> ### Helpers <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<a href="#duckdb_malloc"><span class="nf">duckdb_malloc</span></a>(<span class="kt">size_t</span> <span class="nv">size</span>); <span class="kt">void</span> <a href="#duckdb_free"><span class="nf">duckdb_free</span></a>(<span class="kt">void</span> *<span class="nv">ptr</span>); <span class="kt">idx_t</span> <a href="#duckdb_vector_size"><span class="nf">duckdb_vector_size</span></a>(); <span class="kt">bool</span> <a href="#duckdb_string_is_inlined"><span class="nf">duckdb_string_is_inlined</span></a>(<span class="nv">duckdb_string_t</span> <span class="nv">string</span>); <span class="kt">uint32_t</span> <a href="#duckdb_string_t_length"><span class="nf">duckdb_string_t_length</span></a>(<span class="nv">duckdb_string_t</span> <span class="nv">string</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_string_t_data"><span class="nf">duckdb_string_t_data</span></a>(<span class="nv">duckdb_string_t</span> *<span class="nv">string</span>); </code></pre></div></div> ### Date Time Timestamp Helpers <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_date_struct</span> <a href="#duckdb_from_date"><span class="nf">duckdb_from_date</span></a>(<span class="kt">duckdb_date</span> <span class="nv">date</span>); <span class="kt">duckdb_date</span> <a href="#duckdb_to_date"><span class="nf">duckdb_to_date</span></a>(<span class="kt">duckdb_date_struct</span> <span class="nv">date</span>); <span class="kt">bool</span> <a href="#duckdb_is_finite_date"><span class="nf">duckdb_is_finite_date</span></a>(<span class="kt">duckdb_date</span> <span class="nv">date</span>); <span class="kt">duckdb_time_struct</span> <a href="#duckdb_from_time"><span class="nf">duckdb_from_time</span></a>(<span class="kt">duckdb_time</span> <span class="nv">time</span>); <span class="kt">duckdb_time_tz</span> <a href="#duckdb_create_time_tz"><span class="nf">duckdb_create_time_tz</span></a>(<span class="kt">int64_t</span> <span class="nv">micros</span>, <span class="kt">int32_t</span> <span class="nv">offset</span>); <span class="kt">duckdb_time_tz_struct</span> <a href="#duckdb_from_time_tz"><span class="nf">duckdb_from_time_tz</span></a>(<span class="kt">duckdb_time_tz</span> <span class="nv">micros</span>); <span class="kt">duckdb_time</span> <a href="#duckdb_to_time"><span class="nf">duckdb_to_time</span></a>(<span class="kt">duckdb_time_struct</span> <span class="nv">time</span>); <span class="kt">duckdb_timestamp_struct</span> <a href="#duckdb_from_timestamp"><span class="nf">duckdb_from_timestamp</span></a>(<span class="kt">duckdb_timestamp</span> <span class="nv">ts</span>); <span class="kt">duckdb_timestamp</span> <a href="#duckdb_to_timestamp"><span class="nf">duckdb_to_timestamp</span></a>(<span class="kt">duckdb_timestamp_struct</span> <span class="nv">ts</span>); <span class="kt">bool</span> <a href="#duckdb_is_finite_timestamp"><span class="nf">duckdb_is_finite_timestamp</span></a>(<span class="kt">duckdb_timestamp</span> <span class="nv">ts</span>); <span class="kt">bool</span> <a href="#duckdb_is_finite_timestamp_s"><span class="nf">duckdb_is_finite_timestamp_s</span></a>(<span class="nv">duckdb_timestamp_s</span> <span class="nv">ts</span>); <span class="kt">bool</span> <a href="#duckdb_is_finite_timestamp_ms"><span class="nf">duckdb_is_finite_timestamp_ms</span></a>(<span class="nv">duckdb_timestamp_ms</span> <span class="nv">ts</span>); <span class="kt">bool</span> <a href="#duckdb_is_finite_timestamp_ns"><span class="nf">duckdb_is_finite_timestamp_ns</span></a>(<span class="nv">duckdb_timestamp_ns</span> <span class="nv">ts</span>); </code></pre></div></div> ### Hugeint Helpers <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <a href="#duckdb_hugeint_to_double"><span class="nf">duckdb_hugeint_to_double</span></a>(<span class="kt">duckdb_hugeint</span> <span class="nv">val</span>); <span class="kt">duckdb_hugeint</span> <a href="#duckdb_double_to_hugeint"><span class="nf">duckdb_double_to_hugeint</span></a>(<span class="kt">double</span> <span class="nv">val</span>); </code></pre></div></div> ### Unsigned Hugeint Helpers <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <a href="#duckdb_uhugeint_to_double"><span class="nf">duckdb_uhugeint_to_double</span></a>(<span class="kt">duckdb_uhugeint</span> <span class="nv">val</span>); <span class="kt">duckdb_uhugeint</span> <a href="#duckdb_double_to_uhugeint"><span class="nf">duckdb_double_to_uhugeint</span></a>(<span class="kt">double</span> <span class="nv">val</span>); </code></pre></div></div> ### Decimal Helpers <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_decimal</span> <a href="#duckdb_double_to_decimal"><span class="nf">duckdb_double_to_decimal</span></a>(<span class="kt">double</span> <span class="nv">val</span>, <span class="kt">uint8_t</span> <span class="nv">width</span>, <span class="kt">uint8_t</span> <span class="nv">scale</span>); <span class="kt">double</span> <a href="#duckdb_decimal_to_double"><span class="nf">duckdb_decimal_to_double</span></a>(<span class="kt">duckdb_decimal</span> <span class="nv">val</span>); </code></pre></div></div> ### Prepared Statements <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_prepare"><span class="nf">duckdb_prepare</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">query</span>, <span class="kt">duckdb_prepared_statement</span> *<span class="nv">out_prepared_statement</span>); <span class="kt">void</span> <a href="#duckdb_destroy_prepare"><span class="nf">duckdb_destroy_prepare</span></a>(<span class="kt">duckdb_prepared_statement</span> *<span class="nv">prepared_statement</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_prepare_error"><span class="nf">duckdb_prepare_error</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>); <span class="kt">idx_t</span> <a href="#duckdb_nparams"><span class="nf">duckdb_nparams</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_parameter_name"><span class="nf">duckdb_parameter_name</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">duckdb_type</span> <a href="#duckdb_param_type"><span class="nf">duckdb_param_type</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_param_logical_type"><span class="nf">duckdb_param_logical_type</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_clear_bindings"><span class="nf">duckdb_clear_bindings</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>); <span class="kt">duckdb_statement_type</span> <a href="#duckdb_prepared_statement_type"><span class="nf">duckdb_prepared_statement_type</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">statement</span>); </code></pre></div></div> ### Bind Values To Prepared Statements <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_bind_value"><span class="nf">duckdb_bind_value</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_parameter_index"><span class="nf">duckdb_bind_parameter_index</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> *<span class="nv">param_idx_out</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_boolean"><span class="nf">duckdb_bind_boolean</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">bool</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_int8"><span class="nf">duckdb_bind_int8</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">int8_t</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_int16"><span class="nf">duckdb_bind_int16</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">int16_t</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_int32"><span class="nf">duckdb_bind_int32</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">int32_t</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_int64"><span class="nf">duckdb_bind_int64</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">int64_t</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_hugeint"><span class="nf">duckdb_bind_hugeint</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_hugeint</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_uhugeint"><span class="nf">duckdb_bind_uhugeint</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_uhugeint</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_decimal"><span class="nf">duckdb_bind_decimal</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_decimal</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_uint8"><span class="nf">duckdb_bind_uint8</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">uint8_t</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_uint16"><span class="nf">duckdb_bind_uint16</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">uint16_t</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_uint32"><span class="nf">duckdb_bind_uint32</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">uint32_t</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_uint64"><span class="nf">duckdb_bind_uint64</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">uint64_t</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_float"><span class="nf">duckdb_bind_float</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">float</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_double"><span class="nf">duckdb_bind_double</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">double</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_date"><span class="nf">duckdb_bind_date</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_date</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_time"><span class="nf">duckdb_bind_time</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_time</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_timestamp"><span class="nf">duckdb_bind_timestamp</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_timestamp</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_timestamp_tz"><span class="nf">duckdb_bind_timestamp_tz</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_timestamp</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_interval"><span class="nf">duckdb_bind_interval</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">duckdb_interval</span> <span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_varchar"><span class="nf">duckdb_bind_varchar</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_varchar_length"><span class="nf">duckdb_bind_varchar_length</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">val</span>, <span class="kt">idx_t</span> <span class="nv">length</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_blob"><span class="nf">duckdb_bind_blob</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>, <span class="kt">const</span> <span class="kt">void</span> *<span class="nv">data</span>, <span class="kt">idx_t</span> <span class="nv">length</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_bind_null"><span class="nf">duckdb_bind_null</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">idx_t</span> <span class="nv">param_idx</span>); </code></pre></div></div> ### Execute Prepared Statements <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_execute_prepared"><span class="nf">duckdb_execute_prepared</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">duckdb_result</span> *<span class="nv">out_result</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_execute_prepared_streaming"><span class="nf">duckdb_execute_prepared_streaming</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">duckdb_result</span> *<span class="nv">out_result</span>); </code></pre></div></div> ### Extract Statements <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <a href="#duckdb_extract_statements"><span class="nf">duckdb_extract_statements</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">query</span>, <span class="nv">duckdb_extracted_statements</span> *<span class="nv">out_extracted_statements</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_prepare_extracted_statement"><span class="nf">duckdb_prepare_extracted_statement</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="nv">duckdb_extracted_statements</span> <span class="nv">extracted_statements</span>, <span class="kt">idx_t</span> <span class="nv">index</span>, <span class="kt">duckdb_prepared_statement</span> *<span class="nv">out_prepared_statement</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_extract_statements_error"><span class="nf">duckdb_extract_statements_error</span></a>(<span class="nv">duckdb_extracted_statements</span> <span class="nv">extracted_statements</span>); <span class="kt">void</span> <a href="#duckdb_destroy_extracted"><span class="nf">duckdb_destroy_extracted</span></a>(<span class="nv">duckdb_extracted_statements</span> *<span class="nv">extracted_statements</span>); </code></pre></div></div> ### Pending Result Interface <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_pending_prepared"><span class="nf">duckdb_pending_prepared</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="nv">duckdb_pending_result</span> *<span class="nv">out_result</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_pending_prepared_streaming"><span class="nf">duckdb_pending_prepared_streaming</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="nv">duckdb_pending_result</span> *<span class="nv">out_result</span>); <span class="kt">void</span> <a href="#duckdb_destroy_pending"><span class="nf">duckdb_destroy_pending</span></a>(<span class="nv">duckdb_pending_result</span> *<span class="nv">pending_result</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_pending_error"><span class="nf">duckdb_pending_error</span></a>(<span class="nv">duckdb_pending_result</span> <span class="nv">pending_result</span>); <span class="kt">duckdb_pending_state</span> <a href="#duckdb_pending_execute_task"><span class="nf">duckdb_pending_execute_task</span></a>(<span class="nv">duckdb_pending_result</span> <span class="nv">pending_result</span>); <span class="kt">duckdb_pending_state</span> <a href="#duckdb_pending_execute_check_state"><span class="nf">duckdb_pending_execute_check_state</span></a>(<span class="nv">duckdb_pending_result</span> <span class="nv">pending_result</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_execute_pending"><span class="nf">duckdb_execute_pending</span></a>(<span class="nv">duckdb_pending_result</span> <span class="nv">pending_result</span>, <span class="kt">duckdb_result</span> *<span class="nv">out_result</span>); <span class="kt">bool</span> <a href="#duckdb_pending_execution_is_finished"><span class="nf">duckdb_pending_execution_is_finished</span></a>(<span class="kt">duckdb_pending_state</span> <span class="nv">pending_state</span>); </code></pre></div></div> ### Value Interface <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <a href="#duckdb_destroy_value"><span class="nf">duckdb_destroy_value</span></a>(<span class="kt">duckdb_value</span> *<span class="nv">value</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_varchar"><span class="nf">duckdb_create_varchar</span></a>(<span class="kt">const</span> <span class="kt">char</span> *<span class="nv">text</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_varchar_length"><span class="nf">duckdb_create_varchar_length</span></a>(<span class="kt">const</span> <span class="kt">char</span> *<span class="nv">text</span>, <span class="kt">idx_t</span> <span class="nv">length</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_bool"><span class="nf">duckdb_create_bool</span></a>(<span class="kt">bool</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_int8"><span class="nf">duckdb_create_int8</span></a>(<span class="kt">int8_t</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_uint8"><span class="nf">duckdb_create_uint8</span></a>(<span class="kt">uint8_t</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_int16"><span class="nf">duckdb_create_int16</span></a>(<span class="kt">int16_t</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_uint16"><span class="nf">duckdb_create_uint16</span></a>(<span class="kt">uint16_t</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_int32"><span class="nf">duckdb_create_int32</span></a>(<span class="kt">int32_t</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_uint32"><span class="nf">duckdb_create_uint32</span></a>(<span class="kt">uint32_t</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_uint64"><span class="nf">duckdb_create_uint64</span></a>(<span class="kt">uint64_t</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_int64"><span class="nf">duckdb_create_int64</span></a>(<span class="kt">int64_t</span> <span class="nv">val</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_hugeint"><span class="nf">duckdb_create_hugeint</span></a>(<span class="kt">duckdb_hugeint</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_uhugeint"><span class="nf">duckdb_create_uhugeint</span></a>(<span class="kt">duckdb_uhugeint</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_varint"><span class="nf">duckdb_create_varint</span></a>(<span class="nv">duckdb_varint</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_decimal"><span class="nf">duckdb_create_decimal</span></a>(<span class="kt">duckdb_decimal</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_float"><span class="nf">duckdb_create_float</span></a>(<span class="kt">float</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_double"><span class="nf">duckdb_create_double</span></a>(<span class="kt">double</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_date"><span class="nf">duckdb_create_date</span></a>(<span class="kt">duckdb_date</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_time"><span class="nf">duckdb_create_time</span></a>(<span class="kt">duckdb_time</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_time_tz_value"><span class="nf">duckdb_create_time_tz_value</span></a>(<span class="kt">duckdb_time_tz</span> <span class="nv">value</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp"><span class="nf">duckdb_create_timestamp</span></a>(<span class="kt">duckdb_timestamp</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp_tz"><span class="nf">duckdb_create_timestamp_tz</span></a>(<span class="kt">duckdb_timestamp</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp_s"><span class="nf">duckdb_create_timestamp_s</span></a>(<span class="nv">duckdb_timestamp_s</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp_ms"><span class="nf">duckdb_create_timestamp_ms</span></a>(<span class="nv">duckdb_timestamp_ms</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp_ns"><span class="nf">duckdb_create_timestamp_ns</span></a>(<span class="nv">duckdb_timestamp_ns</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_interval"><span class="nf">duckdb_create_interval</span></a>(<span class="kt">duckdb_interval</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_blob"><span class="nf">duckdb_create_blob</span></a>(<span class="kt">const</span> <span class="kt">uint8_t</span> *<span class="nv">data</span>, <span class="kt">idx_t</span> <span class="nv">length</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_bit"><span class="nf">duckdb_create_bit</span></a>(<span class="nv">duckdb_bit</span> <span class="nv">input</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_uuid"><span class="nf">duckdb_create_uuid</span></a>(<span class="kt">duckdb_uhugeint</span> <span class="nv">input</span>); <span class="kt">bool</span> <a href="#duckdb_get_bool"><span class="nf">duckdb_get_bool</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">int8_t</span> <a href="#duckdb_get_int8"><span class="nf">duckdb_get_int8</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">uint8_t</span> <a href="#duckdb_get_uint8"><span class="nf">duckdb_get_uint8</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">int16_t</span> <a href="#duckdb_get_int16"><span class="nf">duckdb_get_int16</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">uint16_t</span> <a href="#duckdb_get_uint16"><span class="nf">duckdb_get_uint16</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">int32_t</span> <a href="#duckdb_get_int32"><span class="nf">duckdb_get_int32</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">uint32_t</span> <a href="#duckdb_get_uint32"><span class="nf">duckdb_get_uint32</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">int64_t</span> <a href="#duckdb_get_int64"><span class="nf">duckdb_get_int64</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">uint64_t</span> <a href="#duckdb_get_uint64"><span class="nf">duckdb_get_uint64</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_hugeint</span> <a href="#duckdb_get_hugeint"><span class="nf">duckdb_get_hugeint</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_uhugeint</span> <a href="#duckdb_get_uhugeint"><span class="nf">duckdb_get_uhugeint</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="nv">duckdb_varint</span> <a href="#duckdb_get_varint"><span class="nf">duckdb_get_varint</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_decimal</span> <a href="#duckdb_get_decimal"><span class="nf">duckdb_get_decimal</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">float</span> <a href="#duckdb_get_float"><span class="nf">duckdb_get_float</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">double</span> <a href="#duckdb_get_double"><span class="nf">duckdb_get_double</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_date</span> <a href="#duckdb_get_date"><span class="nf">duckdb_get_date</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_time</span> <a href="#duckdb_get_time"><span class="nf">duckdb_get_time</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_time_tz</span> <a href="#duckdb_get_time_tz"><span class="nf">duckdb_get_time_tz</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_timestamp</span> <a href="#duckdb_get_timestamp"><span class="nf">duckdb_get_timestamp</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_timestamp</span> <a href="#duckdb_get_timestamp_tz"><span class="nf">duckdb_get_timestamp_tz</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="nv">duckdb_timestamp_s</span> <a href="#duckdb_get_timestamp_s"><span class="nf">duckdb_get_timestamp_s</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="nv">duckdb_timestamp_ms</span> <a href="#duckdb_get_timestamp_ms"><span class="nf">duckdb_get_timestamp_ms</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="nv">duckdb_timestamp_ns</span> <a href="#duckdb_get_timestamp_ns"><span class="nf">duckdb_get_timestamp_ns</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_interval</span> <a href="#duckdb_get_interval"><span class="nf">duckdb_get_interval</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_get_value_type"><span class="nf">duckdb_get_value_type</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_blob</span> <a href="#duckdb_get_blob"><span class="nf">duckdb_get_blob</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="nv">duckdb_bit</span> <a href="#duckdb_get_bit"><span class="nf">duckdb_get_bit</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">duckdb_uhugeint</span> <a href="#duckdb_get_uuid"><span class="nf">duckdb_get_uuid</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>); <span class="kt">char</span> *<a href="#duckdb_get_varchar"><span class="nf">duckdb_get_varchar</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_struct_value"><span class="nf">duckdb_create_struct_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">duckdb_value</span> *<span class="nv">values</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_list_value"><span class="nf">duckdb_create_list_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">duckdb_value</span> *<span class="nv">values</span>, <span class="kt">idx_t</span> <span class="nv">value_count</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_array_value"><span class="nf">duckdb_create_array_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">duckdb_value</span> *<span class="nv">values</span>, <span class="kt">idx_t</span> <span class="nv">value_count</span>); <span class="kt">idx_t</span> <a href="#duckdb_get_map_size"><span class="nf">duckdb_get_map_size</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_get_map_key"><span class="nf">duckdb_get_map_key</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_get_map_value"><span class="nf">duckdb_get_map_value</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">bool</span> <a href="#duckdb_is_null_value"><span class="nf">duckdb_is_null_value</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_null_value"><span class="nf">duckdb_create_null_value</span></a>(); <span class="kt">idx_t</span> <a href="#duckdb_get_list_size"><span class="nf">duckdb_get_list_size</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_get_list_child"><span class="nf">duckdb_get_list_child</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_create_enum_value"><span class="nf">duckdb_create_enum_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">uint64_t</span> <span class="nv">value</span>); <span class="kt">uint64_t</span> <a href="#duckdb_get_enum_value"><span class="nf">duckdb_get_enum_value</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_get_struct_child"><span class="nf">duckdb_get_struct_child</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); </code></pre></div></div> ### Logical Type Interface <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <a href="#duckdb_create_logical_type"><span class="nf">duckdb_create_logical_type</span></a>(<span class="kt">duckdb_type</span> <span class="nv">type</span>); <span class="kt">char</span> *<a href="#duckdb_logical_type_get_alias"><span class="nf">duckdb_logical_type_get_alias</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">void</span> <a href="#duckdb_logical_type_set_alias"><span class="nf">duckdb_logical_type_set_alias</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">alias</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_create_list_type"><span class="nf">duckdb_create_list_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_create_array_type"><span class="nf">duckdb_create_array_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">idx_t</span> <span class="nv">array_size</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_create_map_type"><span class="nf">duckdb_create_map_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">key_type</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">value_type</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_create_union_type"><span class="nf">duckdb_create_union_type</span></a>(<span class="kt">duckdb_logical_type</span> *<span class="nv">member_types</span>, <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">member_names</span>, <span class="kt">idx_t</span> <span class="nv">member_count</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_create_struct_type"><span class="nf">duckdb_create_struct_type</span></a>(<span class="kt">duckdb_logical_type</span> *<span class="nv">member_types</span>, <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">member_names</span>, <span class="kt">idx_t</span> <span class="nv">member_count</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_create_enum_type"><span class="nf">duckdb_create_enum_type</span></a>(<span class="kt">const</span> <span class="kt">char</span> **<span class="nv">member_names</span>, <span class="kt">idx_t</span> <span class="nv">member_count</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_create_decimal_type"><span class="nf">duckdb_create_decimal_type</span></a>(<span class="kt">uint8_t</span> <span class="nv">width</span>, <span class="kt">uint8_t</span> <span class="nv">scale</span>); <span class="kt">duckdb_type</span> <a href="#duckdb_get_type_id"><span class="nf">duckdb_get_type_id</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">uint8_t</span> <a href="#duckdb_decimal_width"><span class="nf">duckdb_decimal_width</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">uint8_t</span> <a href="#duckdb_decimal_scale"><span class="nf">duckdb_decimal_scale</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">duckdb_type</span> <a href="#duckdb_decimal_internal_type"><span class="nf">duckdb_decimal_internal_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">duckdb_type</span> <a href="#duckdb_enum_internal_type"><span class="nf">duckdb_enum_internal_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">uint32_t</span> <a href="#duckdb_enum_dictionary_size"><span class="nf">duckdb_enum_dictionary_size</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">char</span> *<a href="#duckdb_enum_dictionary_value"><span class="nf">duckdb_enum_dictionary_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_list_type_child_type"><span class="nf">duckdb_list_type_child_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_array_type_child_type"><span class="nf">duckdb_array_type_child_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">idx_t</span> <a href="#duckdb_array_type_array_size"><span class="nf">duckdb_array_type_array_size</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_map_type_key_type"><span class="nf">duckdb_map_type_key_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_map_type_value_type"><span class="nf">duckdb_map_type_value_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">idx_t</span> <a href="#duckdb_struct_type_child_count"><span class="nf">duckdb_struct_type_child_count</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">char</span> *<a href="#duckdb_struct_type_child_name"><span class="nf">duckdb_struct_type_child_name</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_struct_type_child_type"><span class="nf">duckdb_struct_type_child_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">idx_t</span> <a href="#duckdb_union_type_member_count"><span class="nf">duckdb_union_type_member_count</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">char</span> *<a href="#duckdb_union_type_member_name"><span class="nf">duckdb_union_type_member_name</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_union_type_member_type"><span class="nf">duckdb_union_type_member_type</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">void</span> <a href="#duckdb_destroy_logical_type"><span class="nf">duckdb_destroy_logical_type</span></a>(<span class="kt">duckdb_logical_type</span> *<span class="nv">type</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_register_logical_type"><span class="nf">duckdb_register_logical_type</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">con</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="nv">duckdb_create_type_info</span> <span class="nv">info</span>); </code></pre></div></div> ### Data Chunk Interface <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_data_chunk</span> <a href="#duckdb_create_data_chunk"><span class="nf">duckdb_create_data_chunk</span></a>(<span class="kt">duckdb_logical_type</span> *<span class="nv">types</span>, <span class="kt">idx_t</span> <span class="nv">column_count</span>); <span class="kt">void</span> <a href="#duckdb_destroy_data_chunk"><span class="nf">duckdb_destroy_data_chunk</span></a>(<span class="kt">duckdb_data_chunk</span> *<span class="nv">chunk</span>); <span class="kt">void</span> <a href="#duckdb_data_chunk_reset"><span class="nf">duckdb_data_chunk_reset</span></a>(<span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>); <span class="kt">idx_t</span> <a href="#duckdb_data_chunk_get_column_count"><span class="nf">duckdb_data_chunk_get_column_count</span></a>(<span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>); <span class="kt">duckdb_vector</span> <a href="#duckdb_data_chunk_get_vector"><span class="nf">duckdb_data_chunk_get_vector</span></a>(<span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>, <span class="kt">idx_t</span> <span class="nv">col_idx</span>); <span class="kt">idx_t</span> <a href="#duckdb_data_chunk_get_size"><span class="nf">duckdb_data_chunk_get_size</span></a>(<span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>); <span class="kt">void</span> <a href="#duckdb_data_chunk_set_size"><span class="nf">duckdb_data_chunk_set_size</span></a>(<span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>, <span class="kt">idx_t</span> <span class="nv">size</span>); </code></pre></div></div> ### Vector Interface <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <a href="#duckdb_vector_get_column_type"><span class="nf">duckdb_vector_get_column_type</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>); <span class="kt">void</span> *<a href="#duckdb_vector_get_data"><span class="nf">duckdb_vector_get_data</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>); <span class="kt">uint64_t</span> *<a href="#duckdb_vector_get_validity"><span class="nf">duckdb_vector_get_validity</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>); <span class="kt">void</span> <a href="#duckdb_vector_ensure_validity_writable"><span class="nf">duckdb_vector_ensure_validity_writable</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>); <span class="kt">void</span> <a href="#duckdb_vector_assign_string_element"><span class="nf">duckdb_vector_assign_string_element</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>, <span class="kt">idx_t</span> <span class="nv">index</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">str</span>); <span class="kt">void</span> <a href="#duckdb_vector_assign_string_element_len"><span class="nf">duckdb_vector_assign_string_element_len</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>, <span class="kt">idx_t</span> <span class="nv">index</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">str</span>, <span class="kt">idx_t</span> <span class="nv">str_len</span>); <span class="kt">duckdb_vector</span> <a href="#duckdb_list_vector_get_child"><span class="nf">duckdb_list_vector_get_child</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>); <span class="kt">idx_t</span> <a href="#duckdb_list_vector_get_size"><span class="nf">duckdb_list_vector_get_size</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_list_vector_set_size"><span class="nf">duckdb_list_vector_set_size</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>, <span class="kt">idx_t</span> <span class="nv">size</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_list_vector_reserve"><span class="nf">duckdb_list_vector_reserve</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>, <span class="kt">idx_t</span> <span class="nv">required_capacity</span>); <span class="kt">duckdb_vector</span> <a href="#duckdb_struct_vector_get_child"><span class="nf">duckdb_struct_vector_get_child</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">duckdb_vector</span> <a href="#duckdb_array_vector_get_child"><span class="nf">duckdb_array_vector_get_child</span></a>(<span class="kt">duckdb_vector</span> <span class="nv">vector</span>); </code></pre></div></div> ### Validity Mask Functions <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <a href="#duckdb_validity_row_is_valid"><span class="nf">duckdb_validity_row_is_valid</span></a>(<span class="kt">uint64_t</span> *<span class="nv">validity</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">void</span> <a href="#duckdb_validity_set_row_validity"><span class="nf">duckdb_validity_set_row_validity</span></a>(<span class="kt">uint64_t</span> *<span class="nv">validity</span>, <span class="kt">idx_t</span> <span class="nv">row</span>, <span class="kt">bool</span> <span class="nv">valid</span>); <span class="kt">void</span> <a href="#duckdb_validity_set_row_invalid"><span class="nf">duckdb_validity_set_row_invalid</span></a>(<span class="kt">uint64_t</span> *<span class="nv">validity</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">void</span> <a href="#duckdb_validity_set_row_valid"><span class="nf">duckdb_validity_set_row_valid</span></a>(<span class="kt">uint64_t</span> *<span class="nv">validity</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); </code></pre></div></div> ### Scalar Functions <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_scalar_function</span> <a href="#duckdb_create_scalar_function"><span class="nf">duckdb_create_scalar_function</span></a>(); <span class="kt">void</span> <a href="#duckdb_destroy_scalar_function"><span class="nf">duckdb_destroy_scalar_function</span></a>(<span class="kt">duckdb_scalar_function</span> *<span class="nv">scalar_function</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_set_name"><span class="nf">duckdb_scalar_function_set_name</span></a>(<span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_set_varargs"><span class="nf">duckdb_scalar_function_set_varargs</span></a>(<span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_set_special_handling"><span class="nf">duckdb_scalar_function_set_special_handling</span></a>(<span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_set_volatile"><span class="nf">duckdb_scalar_function_set_volatile</span></a>(<span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_add_parameter"><span class="nf">duckdb_scalar_function_add_parameter</span></a>(<span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_set_return_type"><span class="nf">duckdb_scalar_function_set_return_type</span></a>(<span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_set_extra_info"><span class="nf">duckdb_scalar_function_set_extra_info</span></a>(<span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>, <span class="kt">void</span> *<span class="nv">extra_info</span>, <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_set_function"><span class="nf">duckdb_scalar_function_set_function</span></a>(<span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>, <span class="nv">duckdb_scalar_function_t</span> <span class="nv">function</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_register_scalar_function"><span class="nf">duckdb_register_scalar_function</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">con</span>, <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>); <span class="kt">void</span> *<a href="#duckdb_scalar_function_get_extra_info"><span class="nf">duckdb_scalar_function_get_extra_info</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>); <span class="kt">void</span> <a href="#duckdb_scalar_function_set_error"><span class="nf">duckdb_scalar_function_set_error</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>); <span class="kt">duckdb_scalar_function_set</span> <a href="#duckdb_create_scalar_function_set"><span class="nf">duckdb_create_scalar_function_set</span></a>(<span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>); <span class="kt">void</span> <a href="#duckdb_destroy_scalar_function_set"><span class="nf">duckdb_destroy_scalar_function_set</span></a>(<span class="kt">duckdb_scalar_function_set</span> *<span class="nv">scalar_function_set</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_add_scalar_function_to_set"><span class="nf">duckdb_add_scalar_function_to_set</span></a>(<span class="kt">duckdb_scalar_function_set</span> <span class="nv">set</span>, <span class="kt">duckdb_scalar_function</span> <span class="nv">function</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_register_scalar_function_set"><span class="nf">duckdb_register_scalar_function_set</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">con</span>, <span class="kt">duckdb_scalar_function_set</span> <span class="nv">set</span>); </code></pre></div></div> ### Aggregate Functions <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_aggregate_function</span> <a href="#duckdb_create_aggregate_function"><span class="nf">duckdb_create_aggregate_function</span></a>(); <span class="kt">void</span> <a href="#duckdb_destroy_aggregate_function"><span class="nf">duckdb_destroy_aggregate_function</span></a>(<span class="kt">duckdb_aggregate_function</span> *<span class="nv">aggregate_function</span>); <span class="kt">void</span> <a href="#duckdb_aggregate_function_set_name"><span class="nf">duckdb_aggregate_function_set_name</span></a>(<span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>); <span class="kt">void</span> <a href="#duckdb_aggregate_function_add_parameter"><span class="nf">duckdb_aggregate_function_add_parameter</span></a>(<span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">void</span> <a href="#duckdb_aggregate_function_set_return_type"><span class="nf">duckdb_aggregate_function_set_return_type</span></a>(<span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">void</span> <a href="#duckdb_aggregate_function_set_functions"><span class="nf">duckdb_aggregate_function_set_functions</span></a>(<span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>, <span class="nv">duckdb_aggregate_state_size</span> <span class="nv">state_size</span>, <span class="nv">duckdb_aggregate_init_t</span> <span class="nv">state_init</span>, <span class="nv">duckdb_aggregate_update_t</span> <span class="nv">update</span>, <span class="nv">duckdb_aggregate_combine_t</span> <span class="nv">combine</span>, <span class="nv">duckdb_aggregate_finalize_t</span> <span class="nv">finalize</span>); <span class="kt">void</span> <a href="#duckdb_aggregate_function_set_destructor"><span class="nf">duckdb_aggregate_function_set_destructor</span></a>(<span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>, <span class="nv">duckdb_aggregate_destroy_t</span> <span class="nv">destroy</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_register_aggregate_function"><span class="nf">duckdb_register_aggregate_function</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">con</span>, <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>); <span class="kt">void</span> <a href="#duckdb_aggregate_function_set_special_handling"><span class="nf">duckdb_aggregate_function_set_special_handling</span></a>(<span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>); <span class="kt">void</span> <a href="#duckdb_aggregate_function_set_extra_info"><span class="nf">duckdb_aggregate_function_set_extra_info</span></a>(<span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>, <span class="kt">void</span> *<span class="nv">extra_info</span>, <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy</span>); <span class="kt">void</span> *<a href="#duckdb_aggregate_function_get_extra_info"><span class="nf">duckdb_aggregate_function_get_extra_info</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>); <span class="kt">void</span> <a href="#duckdb_aggregate_function_set_error"><span class="nf">duckdb_aggregate_function_set_error</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>); <span class="kt">duckdb_aggregate_function_set</span> <a href="#duckdb_create_aggregate_function_set"><span class="nf">duckdb_create_aggregate_function_set</span></a>(<span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>); <span class="kt">void</span> <a href="#duckdb_destroy_aggregate_function_set"><span class="nf">duckdb_destroy_aggregate_function_set</span></a>(<span class="kt">duckdb_aggregate_function_set</span> *<span class="nv">aggregate_function_set</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_add_aggregate_function_to_set"><span class="nf">duckdb_add_aggregate_function_to_set</span></a>(<span class="kt">duckdb_aggregate_function_set</span> <span class="nv">set</span>, <span class="kt">duckdb_aggregate_function</span> <span class="nv">function</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_register_aggregate_function_set"><span class="nf">duckdb_register_aggregate_function_set</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">con</span>, <span class="kt">duckdb_aggregate_function_set</span> <span class="nv">set</span>); </code></pre></div></div> ### Table Functions <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_table_function</span> <a href="#duckdb_create_table_function"><span class="nf">duckdb_create_table_function</span></a>(); <span class="kt">void</span> <a href="#duckdb_destroy_table_function"><span class="nf">duckdb_destroy_table_function</span></a>(<span class="kt">duckdb_table_function</span> *<span class="nv">table_function</span>); <span class="kt">void</span> <a href="#duckdb_table_function_set_name"><span class="nf">duckdb_table_function_set_name</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>); <span class="kt">void</span> <a href="#duckdb_table_function_add_parameter"><span class="nf">duckdb_table_function_add_parameter</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">void</span> <a href="#duckdb_table_function_add_named_parameter"><span class="nf">duckdb_table_function_add_named_parameter</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">void</span> <a href="#duckdb_table_function_set_extra_info"><span class="nf">duckdb_table_function_set_extra_info</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="kt">void</span> *<span class="nv">extra_info</span>, <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy</span>); <span class="kt">void</span> <a href="#duckdb_table_function_set_bind"><span class="nf">duckdb_table_function_set_bind</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="nv">duckdb_table_function_bind_t</span> <span class="nv">bind</span>); <span class="kt">void</span> <a href="#duckdb_table_function_set_init"><span class="nf">duckdb_table_function_set_init</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="nv">duckdb_table_function_init_t</span> <span class="nv">init</span>); <span class="kt">void</span> <a href="#duckdb_table_function_set_local_init"><span class="nf">duckdb_table_function_set_local_init</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="nv">duckdb_table_function_init_t</span> <span class="nv">init</span>); <span class="kt">void</span> <a href="#duckdb_table_function_set_function"><span class="nf">duckdb_table_function_set_function</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="nv">duckdb_table_function_t</span> <span class="nv">function</span>); <span class="kt">void</span> <a href="#duckdb_table_function_supports_projection_pushdown"><span class="nf">duckdb_table_function_supports_projection_pushdown</span></a>(<span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>, <span class="kt">bool</span> <span class="nv">pushdown</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_register_table_function"><span class="nf">duckdb_register_table_function</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">con</span>, <span class="kt">duckdb_table_function</span> <span class="nv">function</span>); </code></pre></div></div> ### Table Function Bind <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<a href="#duckdb_bind_get_extra_info"><span class="nf">duckdb_bind_get_extra_info</span></a>(<span class="kt">duckdb_bind_info</span> <span class="nv">info</span>); <span class="kt">void</span> <a href="#duckdb_bind_add_result_column"><span class="nf">duckdb_bind_add_result_column</span></a>(<span class="kt">duckdb_bind_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>); <span class="kt">idx_t</span> <a href="#duckdb_bind_get_parameter_count"><span class="nf">duckdb_bind_get_parameter_count</span></a>(<span class="kt">duckdb_bind_info</span> <span class="nv">info</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_bind_get_parameter"><span class="nf">duckdb_bind_get_parameter</span></a>(<span class="kt">duckdb_bind_info</span> <span class="nv">info</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_bind_get_named_parameter"><span class="nf">duckdb_bind_get_named_parameter</span></a>(<span class="kt">duckdb_bind_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>); <span class="kt">void</span> <a href="#duckdb_bind_set_bind_data"><span class="nf">duckdb_bind_set_bind_data</span></a>(<span class="kt">duckdb_bind_info</span> <span class="nv">info</span>, <span class="kt">void</span> *<span class="nv">bind_data</span>, <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy</span>); <span class="kt">void</span> <a href="#duckdb_bind_set_cardinality"><span class="nf">duckdb_bind_set_cardinality</span></a>(<span class="kt">duckdb_bind_info</span> <span class="nv">info</span>, <span class="kt">idx_t</span> <span class="nv">cardinality</span>, <span class="kt">bool</span> <span class="nv">is_exact</span>); <span class="kt">void</span> <a href="#duckdb_bind_set_error"><span class="nf">duckdb_bind_set_error</span></a>(<span class="kt">duckdb_bind_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>); </code></pre></div></div> ### Table Function Init <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<a href="#duckdb_init_get_extra_info"><span class="nf">duckdb_init_get_extra_info</span></a>(<span class="kt">duckdb_init_info</span> <span class="nv">info</span>); <span class="kt">void</span> *<a href="#duckdb_init_get_bind_data"><span class="nf">duckdb_init_get_bind_data</span></a>(<span class="kt">duckdb_init_info</span> <span class="nv">info</span>); <span class="kt">void</span> <a href="#duckdb_init_set_init_data"><span class="nf">duckdb_init_set_init_data</span></a>(<span class="kt">duckdb_init_info</span> <span class="nv">info</span>, <span class="kt">void</span> *<span class="nv">init_data</span>, <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy</span>); <span class="kt">idx_t</span> <a href="#duckdb_init_get_column_count"><span class="nf">duckdb_init_get_column_count</span></a>(<span class="kt">duckdb_init_info</span> <span class="nv">info</span>); <span class="kt">idx_t</span> <a href="#duckdb_init_get_column_index"><span class="nf">duckdb_init_get_column_index</span></a>(<span class="kt">duckdb_init_info</span> <span class="nv">info</span>, <span class="kt">idx_t</span> <span class="nv">column_index</span>); <span class="kt">void</span> <a href="#duckdb_init_set_max_threads"><span class="nf">duckdb_init_set_max_threads</span></a>(<span class="kt">duckdb_init_info</span> <span class="nv">info</span>, <span class="kt">idx_t</span> <span class="nv">max_threads</span>); <span class="kt">void</span> <a href="#duckdb_init_set_error"><span class="nf">duckdb_init_set_error</span></a>(<span class="kt">duckdb_init_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>); </code></pre></div></div> ### Table Function <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<a href="#duckdb_function_get_extra_info"><span class="nf">duckdb_function_get_extra_info</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>); <span class="kt">void</span> *<a href="#duckdb_function_get_bind_data"><span class="nf">duckdb_function_get_bind_data</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>); <span class="kt">void</span> *<a href="#duckdb_function_get_init_data"><span class="nf">duckdb_function_get_init_data</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>); <span class="kt">void</span> *<a href="#duckdb_function_get_local_init_data"><span class="nf">duckdb_function_get_local_init_data</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>); <span class="kt">void</span> <a href="#duckdb_function_set_error"><span class="nf">duckdb_function_set_error</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>); </code></pre></div></div> ### Replacement Scans <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <a href="#duckdb_add_replacement_scan"><span class="nf">duckdb_add_replacement_scan</span></a>(<span class="kt">duckdb_database</span> <span class="nv">db</span>, <span class="nv">duckdb_replacement_callback_t</span> <span class="nv">replacement</span>, <span class="kt">void</span> *<span class="nv">extra_data</span>, <span class="nv">duckdb_delete_callback_t</span> <span class="nv">delete_callback</span>); <span class="kt">void</span> <a href="#duckdb_replacement_scan_set_function_name"><span class="nf">duckdb_replacement_scan_set_function_name</span></a>(<span class="kt">duckdb_replacement_scan_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">function_name</span>); <span class="kt">void</span> <a href="#duckdb_replacement_scan_add_parameter"><span class="nf">duckdb_replacement_scan_add_parameter</span></a>(<span class="kt">duckdb_replacement_scan_info</span> <span class="nv">info</span>, <span class="kt">duckdb_value</span> <span class="nv">parameter</span>); <span class="kt">void</span> <a href="#duckdb_replacement_scan_set_error"><span class="nf">duckdb_replacement_scan_set_error</span></a>(<span class="kt">duckdb_replacement_scan_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>); </code></pre></div></div> ### Profiling Info <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_profiling_info</span> <a href="#duckdb_get_profiling_info"><span class="nf">duckdb_get_profiling_info</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_profiling_info_get_value"><span class="nf">duckdb_profiling_info_get_value</span></a>(<span class="kt">duckdb_profiling_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">key</span>); <span class="kt">duckdb_value</span> <a href="#duckdb_profiling_info_get_metrics"><span class="nf">duckdb_profiling_info_get_metrics</span></a>(<span class="kt">duckdb_profiling_info</span> <span class="nv">info</span>); <span class="kt">idx_t</span> <a href="#duckdb_profiling_info_get_child_count"><span class="nf">duckdb_profiling_info_get_child_count</span></a>(<span class="kt">duckdb_profiling_info</span> <span class="nv">info</span>); <span class="kt">duckdb_profiling_info</span> <a href="#duckdb_profiling_info_get_child"><span class="nf">duckdb_profiling_info_get_child</span></a>(<span class="kt">duckdb_profiling_info</span> <span class="nv">info</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); </code></pre></div></div> ### Appender <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_appender_create"><span class="nf">duckdb_appender_create</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">schema</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table</span>, <span class="kt">duckdb_appender</span> *<span class="nv">out_appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_appender_create_ext"><span class="nf">duckdb_appender_create_ext</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">catalog</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">schema</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table</span>, <span class="kt">duckdb_appender</span> *<span class="nv">out_appender</span>); <span class="kt">idx_t</span> <a href="#duckdb_appender_column_count"><span class="nf">duckdb_appender_column_count</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_logical_type</span> <a href="#duckdb_appender_column_type"><span class="nf">duckdb_appender_column_type</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">idx_t</span> <span class="nv">col_idx</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_appender_error"><span class="nf">duckdb_appender_error</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_appender_flush"><span class="nf">duckdb_appender_flush</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_appender_close"><span class="nf">duckdb_appender_close</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_appender_destroy"><span class="nf">duckdb_appender_destroy</span></a>(<span class="kt">duckdb_appender</span> *<span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_appender_add_column"><span class="nf">duckdb_appender_add_column</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_appender_clear_columns"><span class="nf">duckdb_appender_clear_columns</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_appender_begin_row"><span class="nf">duckdb_appender_begin_row</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_appender_end_row"><span class="nf">duckdb_appender_end_row</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_default"><span class="nf">duckdb_append_default</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_default_to_chunk"><span class="nf">duckdb_append_default_to_chunk</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>, <span class="kt">idx_t</span> <span class="nv">col</span>, <span class="kt">idx_t</span> <span class="nv">row</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_bool"><span class="nf">duckdb_append_bool</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">bool</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_int8"><span class="nf">duckdb_append_int8</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">int8_t</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_int16"><span class="nf">duckdb_append_int16</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">int16_t</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_int32"><span class="nf">duckdb_append_int32</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">int32_t</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_int64"><span class="nf">duckdb_append_int64</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">int64_t</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_hugeint"><span class="nf">duckdb_append_hugeint</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_hugeint</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_uint8"><span class="nf">duckdb_append_uint8</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">uint8_t</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_uint16"><span class="nf">duckdb_append_uint16</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">uint16_t</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_uint32"><span class="nf">duckdb_append_uint32</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">uint32_t</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_uint64"><span class="nf">duckdb_append_uint64</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">uint64_t</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_uhugeint"><span class="nf">duckdb_append_uhugeint</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_uhugeint</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_float"><span class="nf">duckdb_append_float</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">float</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_double"><span class="nf">duckdb_append_double</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">double</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_date"><span class="nf">duckdb_append_date</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_date</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_time"><span class="nf">duckdb_append_time</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_time</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_timestamp"><span class="nf">duckdb_append_timestamp</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_timestamp</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_interval"><span class="nf">duckdb_append_interval</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_interval</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_varchar"><span class="nf">duckdb_append_varchar</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">val</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_varchar_length"><span class="nf">duckdb_append_varchar_length</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">val</span>, <span class="kt">idx_t</span> <span class="nv">length</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_blob"><span class="nf">duckdb_append_blob</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">const</span> <span class="kt">void</span> *<span class="nv">data</span>, <span class="kt">idx_t</span> <span class="nv">length</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_null"><span class="nf">duckdb_append_null</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_value"><span class="nf">duckdb_append_value</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_value</span> <span class="nv">value</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_append_data_chunk"><span class="nf">duckdb_append_data_chunk</span></a>(<span class="kt">duckdb_appender</span> <span class="nv">appender</span>, <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>); </code></pre></div></div> ### Table Description <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_table_description_create"><span class="nf">duckdb_table_description_create</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">schema</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table</span>, <span class="nv">duckdb_table_description</span> *<span class="nv">out</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_table_description_create_ext"><span class="nf">duckdb_table_description_create_ext</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">catalog</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">schema</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table</span>, <span class="nv">duckdb_table_description</span> *<span class="nv">out</span>); <span class="kt">void</span> <a href="#duckdb_table_description_destroy"><span class="nf">duckdb_table_description_destroy</span></a>(<span class="nv">duckdb_table_description</span> *<span class="nv">table_description</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_table_description_error"><span class="nf">duckdb_table_description_error</span></a>(<span class="nv">duckdb_table_description</span> <span class="nv">table_description</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_column_has_default"><span class="nf">duckdb_column_has_default</span></a>(<span class="nv">duckdb_table_description</span> <span class="nv">table_description</span>, <span class="kt">idx_t</span> <span class="nv">index</span>, <span class="kt">bool</span> *<span class="nv">out</span>); <span class="kt">char</span> *<a href="#duckdb_table_description_get_column_name"><span class="nf">duckdb_table_description_get_column_name</span></a>(<span class="nv">duckdb_table_description</span> <span class="nv">table_description</span>, <span class="kt">idx_t</span> <span class="nv">index</span>); </code></pre></div></div> ### Arrow Interface <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <a href="#duckdb_query_arrow"><span class="nf">duckdb_query_arrow</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">query</span>, <span class="kt">duckdb_arrow</span> *<span class="nv">out_result</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_query_arrow_schema"><span class="nf">duckdb_query_arrow_schema</span></a>(<span class="kt">duckdb_arrow</span> <span class="nv">result</span>, <span class="kt">duckdb_arrow_schema</span> *<span class="nv">out_schema</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_prepared_arrow_schema"><span class="nf">duckdb_prepared_arrow_schema</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared</span>, <span class="kt">duckdb_arrow_schema</span> *<span class="nv">out_schema</span>); <span class="kt">void</span> <a href="#duckdb_result_arrow_array"><span class="nf">duckdb_result_arrow_array</span></a>(<span class="kt">duckdb_result</span> <span class="nv">result</span>, <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>, <span class="kt">duckdb_arrow_array</span> *<span class="nv">out_array</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_query_arrow_array"><span class="nf">duckdb_query_arrow_array</span></a>(<span class="kt">duckdb_arrow</span> <span class="nv">result</span>, <span class="kt">duckdb_arrow_array</span> *<span class="nv">out_array</span>); <span class="kt">idx_t</span> <a href="#duckdb_arrow_column_count"><span class="nf">duckdb_arrow_column_count</span></a>(<span class="kt">duckdb_arrow</span> <span class="nv">result</span>); <span class="kt">idx_t</span> <a href="#duckdb_arrow_row_count"><span class="nf">duckdb_arrow_row_count</span></a>(<span class="kt">duckdb_arrow</span> <span class="nv">result</span>); <span class="kt">idx_t</span> <a href="#duckdb_arrow_rows_changed"><span class="nf">duckdb_arrow_rows_changed</span></a>(<span class="kt">duckdb_arrow</span> <span class="nv">result</span>); <span class="kt">const</span> <span class="kt">char</span> *<a href="#duckdb_query_arrow_error"><span class="nf">duckdb_query_arrow_error</span></a>(<span class="kt">duckdb_arrow</span> <span class="nv">result</span>); <span class="kt">void</span> <a href="#duckdb_destroy_arrow"><span class="nf">duckdb_destroy_arrow</span></a>(<span class="kt">duckdb_arrow</span> *<span class="nv">result</span>); <span class="kt">void</span> <a href="#duckdb_destroy_arrow_stream"><span class="nf">duckdb_destroy_arrow_stream</span></a>(<span class="nv">duckdb_arrow_stream</span> *<span class="nv">stream_p</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_execute_prepared_arrow"><span class="nf">duckdb_execute_prepared_arrow</span></a>(<span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>, <span class="kt">duckdb_arrow</span> *<span class="nv">out_result</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_arrow_scan"><span class="nf">duckdb_arrow_scan</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table_name</span>, <span class="nv">duckdb_arrow_stream</span> <span class="nv">arrow</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_arrow_array_scan"><span class="nf">duckdb_arrow_array_scan</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">connection</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table_name</span>, <span class="kt">duckdb_arrow_schema</span> <span class="nv">arrow_schema</span>, <span class="kt">duckdb_arrow_array</span> <span class="nv">arrow_array</span>, <span class="nv">duckdb_arrow_stream</span> *<span class="nv">out_stream</span>); </code></pre></div></div> ### Threading Information <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <a href="#duckdb_execute_tasks"><span class="nf">duckdb_execute_tasks</span></a>(<span class="kt">duckdb_database</span> <span class="nv">database</span>, <span class="kt">idx_t</span> <span class="nv">max_tasks</span>); <span class="kt">duckdb_task_state</span> <a href="#duckdb_create_task_state"><span class="nf">duckdb_create_task_state</span></a>(<span class="kt">duckdb_database</span> <span class="nv">database</span>); <span class="kt">void</span> <a href="#duckdb_execute_tasks_state"><span class="nf">duckdb_execute_tasks_state</span></a>(<span class="kt">duckdb_task_state</span> <span class="nv">state</span>); <span class="kt">idx_t</span> <a href="#duckdb_execute_n_tasks_state"><span class="nf">duckdb_execute_n_tasks_state</span></a>(<span class="kt">duckdb_task_state</span> <span class="nv">state</span>, <span class="kt">idx_t</span> <span class="nv">max_tasks</span>); <span class="kt">void</span> <a href="#duckdb_finish_execution"><span class="nf">duckdb_finish_execution</span></a>(<span class="kt">duckdb_task_state</span> <span class="nv">state</span>); <span class="kt">bool</span> <a href="#duckdb_task_state_is_finished"><span class="nf">duckdb_task_state_is_finished</span></a>(<span class="kt">duckdb_task_state</span> <span class="nv">state</span>); <span class="kt">void</span> <a href="#duckdb_destroy_task_state"><span class="nf">duckdb_destroy_task_state</span></a>(<span class="kt">duckdb_task_state</span> <span class="nv">state</span>); <span class="kt">bool</span> <a href="#duckdb_execution_is_finished"><span class="nf">duckdb_execution_is_finished</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">con</span>); </code></pre></div></div> ### Streaming Result Interface <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_data_chunk</span> <a href="#duckdb_stream_fetch_chunk"><span class="nf">duckdb_stream_fetch_chunk</span></a>(<span class="kt">duckdb_result</span> <span class="nv">result</span>); <span class="kt">duckdb_data_chunk</span> <a href="#duckdb_fetch_chunk"><span class="nf">duckdb_fetch_chunk</span></a>(<span class="kt">duckdb_result</span> <span class="nv">result</span>); </code></pre></div></div> ### Cast Functions <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_cast_function</span> <a href="#duckdb_create_cast_function"><span class="nf">duckdb_create_cast_function</span></a>(); <span class="kt">void</span> <a href="#duckdb_cast_function_set_source_type"><span class="nf">duckdb_cast_function_set_source_type</span></a>(<span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">source_type</span>); <span class="kt">void</span> <a href="#duckdb_cast_function_set_target_type"><span class="nf">duckdb_cast_function_set_target_type</span></a>(<span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>, <span class="kt">duckdb_logical_type</span> <span class="nv">target_type</span>); <span class="kt">void</span> <a href="#duckdb_cast_function_set_implicit_cast_cost"><span class="nf">duckdb_cast_function_set_implicit_cast_cost</span></a>(<span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>, <span class="kt">int64_t</span> <span class="nv">cost</span>); <span class="kt">void</span> <a href="#duckdb_cast_function_set_function"><span class="nf">duckdb_cast_function_set_function</span></a>(<span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>, <span class="nv">duckdb_cast_function_t</span> <span class="nv">function</span>); <span class="kt">void</span> <a href="#duckdb_cast_function_set_extra_info"><span class="nf">duckdb_cast_function_set_extra_info</span></a>(<span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>, <span class="kt">void</span> *<span class="nv">extra_info</span>, <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy</span>); <span class="kt">void</span> *<a href="#duckdb_cast_function_get_extra_info"><span class="nf">duckdb_cast_function_get_extra_info</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>); <span class="kt">duckdb_cast_mode</span> <a href="#duckdb_cast_function_get_cast_mode"><span class="nf">duckdb_cast_function_get_cast_mode</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>); <span class="kt">void</span> <a href="#duckdb_cast_function_set_error"><span class="nf">duckdb_cast_function_set_error</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>); <span class="kt">void</span> <a href="#duckdb_cast_function_set_row_error"><span class="nf">duckdb_cast_function_set_row_error</span></a>(<span class="kt">duckdb_function_info</span> <span class="nv">info</span>, <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>, <span class="kt">idx_t</span> <span class="nv">row</span>, <span class="kt">duckdb_vector</span> <span class="nv">output</span>); <span class="kt">duckdb_state</span> <a href="#duckdb_register_cast_function"><span class="nf">duckdb_register_cast_function</span></a>(<span class="kt">duckdb_connection</span> <span class="nv">con</span>, <span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>); <span class="kt">void</span> <a href="#duckdb_destroy_cast_function"><span class="nf">duckdb_destroy_cast_function</span></a>(<span class="kt">duckdb_cast_function</span> *<span class="nv">cast_function</span>); </code></pre></div></div> #### `duckdb_create_instance_cache` Creates a new database instance cache. The instance cache is necessary if a client/program (re)opens multiple databases to the same file within the same process. Must be destroyed with 'duckdb_destroy_instance_cache'. ##### Return Value The database instance cache. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_instance_cache</span> <span class="nv">duckdb_create_instance_cache</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_get_or_create_from_cache` Creates a new database instance in the instance cache, or retrieves an existing database instance. Must be closed with 'duckdb_close'. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_get_or_create_from_cache</span>(<span class="nv"> </span> <span class="nv">duckdb_instance_cache</span> <span class="nv">instance_cache</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">path</span>,<span class="nv"> </span> <span class="kt">duckdb_database</span> *<span class="nv">out_database</span>,<span class="nv"> </span> <span class="kt">duckdb_config</span> <span class="nv">config</span>,<span class="nv"> </span> <span class="kt">char</span> **<span class="nv">out_error </span>); </code></pre></div></div> ##### Parameters * `instance_cache`: The instance cache in which to create the database, or from which to take the database. * `path`: Path to the database file on disk. Both `nullptr` and `:memory:` open or retrieve an in-memory database. * `out_database`: The resulting cached database. * `config`: (Optional) configuration used to create the database. * `out_error`: If set and the function returns `DuckDBError`, this contains the error message. Note that the error message must be freed using `duckdb_free`. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_destroy_instance_cache` Destroys an existing database instance cache and de-allocates its memory. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_instance_cache</span>(<span class="nv"> </span> <span class="nv">duckdb_instance_cache</span> *<span class="nv">instance_cache </span>); </code></pre></div></div> ##### Parameters * `instance_cache`: The instance cache to destroy. <br> #### `duckdb_open` Creates a new database or opens an existing database file stored at the given path. If no path is given a new in-memory database is created instead. The database must be closed with 'duckdb_close'. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_open</span>(<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">path</span>,<span class="nv"> </span> <span class="kt">duckdb_database</span> *<span class="nv">out_database </span>); </code></pre></div></div> ##### Parameters * `path`: Path to the database file on disk. Both `nullptr` and `:memory:` open an in-memory database. * `out_database`: The result database object. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_open_ext` Extended version of duckdb_open. Creates a new database or opens an existing database file stored at the given path. The database must be closed with 'duckdb_close'. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_open_ext</span>(<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">path</span>,<span class="nv"> </span> <span class="kt">duckdb_database</span> *<span class="nv">out_database</span>,<span class="nv"> </span> <span class="kt">duckdb_config</span> <span class="nv">config</span>,<span class="nv"> </span> <span class="kt">char</span> **<span class="nv">out_error </span>); </code></pre></div></div> ##### Parameters * `path`: Path to the database file on disk. Both `nullptr` and `:memory:` open an in-memory database. * `out_database`: The result database object. * `config`: (Optional) configuration used to start up the database. * `out_error`: If set and the function returns `DuckDBError`, this contains the error message. Note that the error message must be freed using `duckdb_free`. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_close` Closes the specified database and de-allocates all memory allocated for that database. This should be called after you are done with any database allocated through `duckdb_open` or `duckdb_open_ext`. Note that failing to call `duckdb_close` (in case of e.g., a program crash) will not cause data corruption. Still, it is recommended to always correctly close a database object after you are done with it. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_close</span>(<span class="nv"> </span> <span class="kt">duckdb_database</span> *<span class="nv">database </span>); </code></pre></div></div> ##### Parameters * `database`: The database object to shut down. <br> #### `duckdb_connect` Opens a connection to a database. Connections are required to query the database, and store transactional state associated with the connection. The instantiated connection should be closed using 'duckdb_disconnect'. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_connect</span>(<span class="nv"> </span> <span class="kt">duckdb_database</span> <span class="nv">database</span>,<span class="nv"> </span> <span class="kt">duckdb_connection</span> *<span class="nv">out_connection </span>); </code></pre></div></div> ##### Parameters * `database`: The database file to connect to. * `out_connection`: The result connection object. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_interrupt` Interrupt running query ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_interrupt</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection to interrupt <br> #### `duckdb_query_progress` Get progress of the running query ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_query_progress_type</span> <span class="nv">duckdb_query_progress</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection </span>); </code></pre></div></div> ##### Parameters * `connection`: The working connection ##### Return Value -1 if no progress or a percentage of the progress <br> #### `duckdb_disconnect` Closes the specified connection and de-allocates all memory allocated for that connection. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_disconnect</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> *<span class="nv">connection </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection to close. <br> #### `duckdb_library_version` Returns the version of the linked DuckDB, with a version postfix for dev versions Usually used for developing C extensions that must return this for a compatibility check. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_library_version</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_create_config` Initializes an empty configuration object that can be used to provide start-up options for the DuckDB instance through `duckdb_open_ext`. The duckdb_config must be destroyed using 'duckdb_destroy_config' This will always succeed unless there is a malloc failure. Note that `duckdb_destroy_config` should always be called on the resulting config, even if the function returns `DuckDBError`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_create_config</span>(<span class="nv"> </span> <span class="kt">duckdb_config</span> *<span class="nv">out_config </span>); </code></pre></div></div> ##### Parameters * `out_config`: The result configuration object. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_config_count` This returns the total amount of configuration options available for usage with `duckdb_get_config_flag`. This should not be called in a loop as it internally loops over all the options. ##### Return Value The amount of config options available. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">size_t</span> <span class="nv">duckdb_config_count</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_get_config_flag` Obtains a human-readable name and description of a specific configuration option. This can be used to e.g. display configuration options. This will succeed unless `index` is out of range (i.e., `>= duckdb_config_count`). The result name or description MUST NOT be freed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_get_config_flag</span>(<span class="nv"> </span> <span class="kt">size_t</span> <span class="nv">index</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">out_name</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">out_description </span>); </code></pre></div></div> ##### Parameters * `index`: The index of the configuration option (between 0 and `duckdb_config_count`) * `out_name`: A name of the configuration flag. * `out_description`: A description of the configuration flag. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_set_config` Sets the specified option for the specified configuration. The configuration option is indicated by name. To obtain a list of config options, see `duckdb_get_config_flag`. In the source code, configuration options are defined in `config.cpp`. This can fail if either the name is invalid, or if the value provided for the option is invalid. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_set_config</span>(<span class="nv"> </span> <span class="kt">duckdb_config</span> <span class="nv">config</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">option </span>); </code></pre></div></div> ##### Parameters * `config`: The configuration object to set the option on. * `name`: The name of the configuration flag to set. * `option`: The value to set the configuration flag to. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_destroy_config` Destroys the specified configuration object and de-allocates all memory allocated for the object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_config</span>(<span class="nv"> </span> <span class="kt">duckdb_config</span> *<span class="nv">config </span>); </code></pre></div></div> ##### Parameters * `config`: The configuration object to destroy. <br> #### `duckdb_query` Executes a SQL query within a connection and stores the full (materialized) result in the out_result pointer. If the query fails to execute, DuckDBError is returned and the error message can be retrieved by calling `duckdb_result_error`. Note that after running `duckdb_query`, `duckdb_destroy_result` must be called on the result object even if the query fails, otherwise the error stored within the result will not be freed correctly. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_query</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">query</span>,<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">out_result </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection to perform the query in. * `query`: The SQL query to run. * `out_result`: The query result. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_destroy_result` Closes the result and de-allocates all memory allocated for that connection. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_result</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result to destroy. <br> #### `duckdb_column_name` Returns the column name of the specified column. The result should not need to be freed; the column names will automatically be destroyed when the result is destroyed. Returns `NULL` if the column is out of range. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_column_name</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the column name from. * `col`: The column index. ##### Return Value The column name of the specified column. <br> #### `duckdb_column_type` Returns the column type of the specified column. Returns `DUCKDB_TYPE_INVALID` if the column is out of range. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_type</span> <span class="nv">duckdb_column_type</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the column type from. * `col`: The column index. ##### Return Value The column type of the specified column. <br> #### `duckdb_result_statement_type` Returns the statement type of the statement that was executed ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_statement_type</span> <span class="nv">duckdb_result_statement_type</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the statement type from. ##### Return Value duckdb_statement_type value or DUCKDB_STATEMENT_TYPE_INVALID <br> #### `duckdb_column_logical_type` Returns the logical column type of the specified column. The return type of this call should be destroyed with `duckdb_destroy_logical_type`. Returns `NULL` if the column is out of range. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_column_logical_type</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the column type from. * `col`: The column index. ##### Return Value The logical column type of the specified column. <br> #### `duckdb_column_count` Returns the number of columns present in a the result object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_column_count</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object. ##### Return Value The number of columns present in the result object. <br> #### `duckdb_row_count` > Warning Deprecation notice. This method is scheduled for removal in a future release. Returns the number of rows present in the result object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_row_count</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object. ##### Return Value The number of rows present in the result object. <br> #### `duckdb_rows_changed` Returns the number of rows changed by the query stored in the result. This is relevant only for INSERT/UPDATE/DELETE queries. For other queries the rows_changed will be 0. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_rows_changed</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object. ##### Return Value The number of rows changed. <br> #### `duckdb_column_data` > Deprecated This method has been deprecated. Prefer using `duckdb_result_get_chunk` instead. Returns the data of a specific column of a result in columnar format. The function returns a dense array which contains the result data. The exact type stored in the array depends on the corresponding duckdb_type (as provided by `duckdb_column_type`). For the exact type by which the data should be accessed, see the comments in [the types section](types) or the `DUCKDB_TYPE` enum. For example, for a column of type `DUCKDB_TYPE_INTEGER`, rows can be accessed in the following manner: ```c int32_t *data = (int32_t *) duckdb_column_data(&result, 0); printf("Data for row %d: %d\n", row, data[row]); ``` ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_column_data</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the column data from. * `col`: The column index. ##### Return Value The column data of the specified column. <br> #### `duckdb_nullmask_data` > Deprecated This method has been deprecated. Prefer using `duckdb_result_get_chunk` instead. Returns the nullmask of a specific column of a result in columnar format. The nullmask indicates for every row whether or not the corresponding row is `NULL`. If a row is `NULL`, the values present in the array provided by `duckdb_column_data` are undefined. ```c int32_t *data = (int32_t *) duckdb_column_data(&result, 0); bool *nullmask = duckdb_nullmask_data(&result, 0); if (nullmask[row]) { printf("Data for row %d: NULL\n", row); } else { printf("Data for row %d: %d\n", row, data[row]); } ``` ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> *<span class="nv">duckdb_nullmask_data</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the nullmask from. * `col`: The column index. ##### Return Value The nullmask of the specified column. <br> #### `duckdb_result_error` Returns the error message contained within the result. The error is only set if `duckdb_query` returns `DuckDBError`. The result of this function must not be freed. It will be cleaned up when `duckdb_destroy_result` is called. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_result_error</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the error from. ##### Return Value The error of the result. <br> #### `duckdb_result_error_type` Returns the result error type contained within the result. The error is only set if `duckdb_query` returns `DuckDBError`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_error_type</span> <span class="nv">duckdb_result_error_type</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the error from. ##### Return Value The error type of the result. <br> #### `duckdb_result_get_chunk` > Warning Deprecation notice. This method is scheduled for removal in a future release. Fetches a data chunk from the duckdb_result. This function should be called repeatedly until the result is exhausted. The result must be destroyed with `duckdb_destroy_data_chunk`. This function supersedes all `duckdb_value` functions, as well as the `duckdb_column_data` and `duckdb_nullmask_data` functions. It results in significantly better performance, and should be preferred in newer code-bases. If this function is used, none of the other result functions can be used and vice versa (i.e., this function cannot be mixed with the legacy result functions). Use `duckdb_result_chunk_count` to figure out how many chunks there are in the result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_data_chunk</span> <span class="nv">duckdb_result_get_chunk</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> <span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">chunk_index </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the data chunk from. * `chunk_index`: The chunk index to fetch from. ##### Return Value The resulting data chunk. Returns `NULL` if the chunk index is out of bounds. <br> #### `duckdb_result_is_streaming` > Warning Deprecation notice. This method is scheduled for removal in a future release. Checks if the type of the internal result is StreamQueryResult. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_result_is_streaming</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to check. ##### Return Value Whether or not the result object is of the type StreamQueryResult <br> #### `duckdb_result_chunk_count` > Warning Deprecation notice. This method is scheduled for removal in a future release. Returns the number of data chunks present in the result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_result_chunk_count</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object ##### Return Value Number of data chunks present in the result. <br> #### `duckdb_result_return_type` Returns the return_type of the given result, or DUCKDB_RETURN_TYPE_INVALID on error ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_result_type</span> <span class="nv">duckdb_result_return_type</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object ##### Return Value The return_type <br> #### `duckdb_value_boolean` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The boolean value at the specified location, or false if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_value_boolean</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_int8` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The int8_t value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int8_t</span> <span class="nv">duckdb_value_int8</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_int16` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The int16_t value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int16_t</span> <span class="nv">duckdb_value_int16</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_int32` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The int32_t value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int32_t</span> <span class="nv">duckdb_value_int32</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_int64` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The int64_t value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int64_t</span> <span class="nv">duckdb_value_int64</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_hugeint` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The duckdb_hugeint value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_hugeint</span> <span class="nv">duckdb_value_hugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_uhugeint` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The duckdb_uhugeint value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_uhugeint</span> <span class="nv">duckdb_value_uhugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_decimal` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The duckdb_decimal value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_decimal</span> <span class="nv">duckdb_value_decimal</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_uint8` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The uint8_t value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint8_t</span> <span class="nv">duckdb_value_uint8</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_uint16` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The uint16_t value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint16_t</span> <span class="nv">duckdb_value_uint16</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_uint32` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The uint32_t value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint32_t</span> <span class="nv">duckdb_value_uint32</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_uint64` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The uint64_t value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint64_t</span> <span class="nv">duckdb_value_uint64</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_float` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The float value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">float</span> <span class="nv">duckdb_value_float</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_double` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The double value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <span class="nv">duckdb_value_double</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_date` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The duckdb_date value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_date</span> <span class="nv">duckdb_value_date</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_time` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The duckdb_time value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time</span> <span class="nv">duckdb_value_time</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_timestamp` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The duckdb_timestamp value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_timestamp</span> <span class="nv">duckdb_value_timestamp</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_interval` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The duckdb_interval value at the specified location, or 0 if the value cannot be converted. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_interval</span> <span class="nv">duckdb_value_interval</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_varchar` > Deprecated This method has been deprecated. Use duckdb_value_string instead. This function does not work correctly if the string contains null bytes. ##### Return Value The text value at the specified location as a null-terminated string, or nullptr if the value cannot be converted. The result must be freed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_value_varchar</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_string` > Warning Deprecation notice. This method is scheduled for removal in a future release. No support for nested types, and for other complex types. The resulting field "string.data" must be freed with `duckdb_free.` ##### Return Value The string value at the specified location. Attempts to cast the result value to string. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_string</span> <span class="nv">duckdb_value_string</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_varchar_internal` > Deprecated This method has been deprecated. Use duckdb_value_string_internal instead. This function does not work correctly if the string contains null bytes. ##### Return Value The char* value at the specified location. ONLY works on VARCHAR columns and does not auto-cast. If the column is NOT a VARCHAR column this function will return NULL. The result must NOT be freed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_value_varchar_internal</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_string_internal` > Deprecated This method has been deprecated. Use duckdb_value_string_internal instead. This function does not work correctly if the string contains null bytes. ##### Return Value The char* value at the specified location. ONLY works on VARCHAR columns and does not auto-cast. If the column is NOT a VARCHAR column this function will return NULL. The result must NOT be freed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_string</span> <span class="nv">duckdb_value_string_internal</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_blob` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value The duckdb_blob value at the specified location. Returns a blob with blob.data set to nullptr if the value cannot be converted. The resulting field "blob.data" must be freed with `duckdb_free.` ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_blob</span> <span class="nv">duckdb_value_blob</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_value_is_null` > Warning Deprecation notice. This method is scheduled for removal in a future release. ##### Return Value Returns true if the value at the specified index is NULL, and false otherwise. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_value_is_null</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">result</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> <br> #### `duckdb_malloc` Allocate `size` bytes of memory using the duckdb internal malloc function. Any memory allocated in this manner should be freed using `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_malloc</span>(<span class="nv"> </span> <span class="kt">size_t</span> <span class="nv">size </span>); </code></pre></div></div> ##### Parameters * `size`: The number of bytes to allocate. ##### Return Value A pointer to the allocated memory region. <br> #### `duckdb_free` Free a value returned from `duckdb_malloc`, `duckdb_value_varchar`, `duckdb_value_blob`, or `duckdb_value_string`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_free</span>(<span class="nv"> </span> <span class="kt">void</span> *<span class="nv">ptr </span>); </code></pre></div></div> ##### Parameters * `ptr`: The memory region to de-allocate. <br> #### `duckdb_vector_size` The internal vector size used by DuckDB. This is the amount of tuples that will fit into a data chunk created by `duckdb_create_data_chunk`. ##### Return Value The vector size. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_vector_size</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_string_is_inlined` Whether or not the duckdb_string_t value is inlined. This means that the data of the string does not have a separate allocation. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_string_is_inlined</span>(<span class="nv"> </span> <span class="nv">duckdb_string_t</span> <span class="nv">string </span>); </code></pre></div></div> <br> #### `duckdb_string_t_length` Get the string length of a string_t ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint32_t</span> <span class="nv">duckdb_string_t_length</span>(<span class="nv"> </span> <span class="nv">duckdb_string_t</span> <span class="nv">string </span>); </code></pre></div></div> ##### Parameters * `string`: The string to get the length of. ##### Return Value The length. <br> #### `duckdb_string_t_data` Get a pointer to the string data of a string_t ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_string_t_data</span>(<span class="nv"> </span> <span class="nv">duckdb_string_t</span> *<span class="nv">string </span>); </code></pre></div></div> ##### Parameters * `string`: The string to get the pointer to. ##### Return Value The pointer. <br> #### `duckdb_from_date` Decompose a `duckdb_date` object into year, month and date (stored as `duckdb_date_struct`). ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_date_struct</span> <span class="nv">duckdb_from_date</span>(<span class="nv"> </span> <span class="kt">duckdb_date</span> <span class="nv">date </span>); </code></pre></div></div> ##### Parameters * `date`: The date object, as obtained from a `DUCKDB_TYPE_DATE` column. ##### Return Value The `duckdb_date_struct` with the decomposed elements. <br> #### `duckdb_to_date` Re-compose a `duckdb_date` from year, month and date (`duckdb_date_struct`). ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_date</span> <span class="nv">duckdb_to_date</span>(<span class="nv"> </span> <span class="kt">duckdb_date_struct</span> <span class="nv">date </span>); </code></pre></div></div> ##### Parameters * `date`: The year, month and date stored in a `duckdb_date_struct`. ##### Return Value The `duckdb_date` element. <br> #### `duckdb_is_finite_date` Test a `duckdb_date` to see if it is a finite value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_is_finite_date</span>(<span class="nv"> </span> <span class="kt">duckdb_date</span> <span class="nv">date </span>); </code></pre></div></div> ##### Parameters * `date`: The date object, as obtained from a `DUCKDB_TYPE_DATE` column. ##### Return Value True if the date is finite, false if it is ±infinity. <br> #### `duckdb_from_time` Decompose a `duckdb_time` object into hour, minute, second and microsecond (stored as `duckdb_time_struct`). ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time_struct</span> <span class="nv">duckdb_from_time</span>(<span class="nv"> </span> <span class="kt">duckdb_time</span> <span class="nv">time </span>); </code></pre></div></div> ##### Parameters * `time`: The time object, as obtained from a `DUCKDB_TYPE_TIME` column. ##### Return Value The `duckdb_time_struct` with the decomposed elements. <br> #### `duckdb_create_time_tz` Create a `duckdb_time_tz` object from micros and a timezone offset. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time_tz</span> <span class="nv">duckdb_create_time_tz</span>(<span class="nv"> </span> <span class="kt">int64_t</span> <span class="nv">micros</span>,<span class="nv"> </span> <span class="kt">int32_t</span> <span class="nv">offset </span>); </code></pre></div></div> ##### Parameters * `micros`: The microsecond component of the time. * `offset`: The timezone offset component of the time. ##### Return Value The `duckdb_time_tz` element. <br> #### `duckdb_from_time_tz` Decompose a TIME_TZ objects into micros and a timezone offset. Use `duckdb_from_time` to further decompose the micros into hour, minute, second and microsecond. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time_tz_struct</span> <span class="nv">duckdb_from_time_tz</span>(<span class="nv"> </span> <span class="kt">duckdb_time_tz</span> <span class="nv">micros </span>); </code></pre></div></div> ##### Parameters * `micros`: The time object, as obtained from a `DUCKDB_TYPE_TIME_TZ` column. <br> #### `duckdb_to_time` Re-compose a `duckdb_time` from hour, minute, second and microsecond (`duckdb_time_struct`). ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time</span> <span class="nv">duckdb_to_time</span>(<span class="nv"> </span> <span class="kt">duckdb_time_struct</span> <span class="nv">time </span>); </code></pre></div></div> ##### Parameters * `time`: The hour, minute, second and microsecond in a `duckdb_time_struct`. ##### Return Value The `duckdb_time` element. <br> #### `duckdb_from_timestamp` Decompose a `duckdb_timestamp` object into a `duckdb_timestamp_struct`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_timestamp_struct</span> <span class="nv">duckdb_from_timestamp</span>(<span class="nv"> </span> <span class="kt">duckdb_timestamp</span> <span class="nv">ts </span>); </code></pre></div></div> ##### Parameters * `ts`: The ts object, as obtained from a `DUCKDB_TYPE_TIMESTAMP` column. ##### Return Value The `duckdb_timestamp_struct` with the decomposed elements. <br> #### `duckdb_to_timestamp` Re-compose a `duckdb_timestamp` from a duckdb_timestamp_struct. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_timestamp</span> <span class="nv">duckdb_to_timestamp</span>(<span class="nv"> </span> <span class="kt">duckdb_timestamp_struct</span> <span class="nv">ts </span>); </code></pre></div></div> ##### Parameters * `ts`: The de-composed elements in a `duckdb_timestamp_struct`. ##### Return Value The `duckdb_timestamp` element. <br> #### `duckdb_is_finite_timestamp` Test a `duckdb_timestamp` to see if it is a finite value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_is_finite_timestamp</span>(<span class="nv"> </span> <span class="kt">duckdb_timestamp</span> <span class="nv">ts </span>); </code></pre></div></div> ##### Parameters * `ts`: The duckdb_timestamp object, as obtained from a `DUCKDB_TYPE_TIMESTAMP` column. ##### Return Value True if the timestamp is finite, false if it is ±infinity. <br> #### `duckdb_is_finite_timestamp_s` Test a `duckdb_timestamp_s` to see if it is a finite value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_is_finite_timestamp_s</span>(<span class="nv"> </span> <span class="nv">duckdb_timestamp_s</span> <span class="nv">ts </span>); </code></pre></div></div> ##### Parameters * `ts`: The duckdb_timestamp_s object, as obtained from a `DUCKDB_TYPE_TIMESTAMP_S` column. ##### Return Value True if the timestamp is finite, false if it is ±infinity. <br> #### `duckdb_is_finite_timestamp_ms` Test a `duckdb_timestamp_ms` to see if it is a finite value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_is_finite_timestamp_ms</span>(<span class="nv"> </span> <span class="nv">duckdb_timestamp_ms</span> <span class="nv">ts </span>); </code></pre></div></div> ##### Parameters * `ts`: The duckdb_timestamp_ms object, as obtained from a `DUCKDB_TYPE_TIMESTAMP_MS` column. ##### Return Value True if the timestamp is finite, false if it is ±infinity. <br> #### `duckdb_is_finite_timestamp_ns` Test a `duckdb_timestamp_ns` to see if it is a finite value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_is_finite_timestamp_ns</span>(<span class="nv"> </span> <span class="nv">duckdb_timestamp_ns</span> <span class="nv">ts </span>); </code></pre></div></div> ##### Parameters * `ts`: The duckdb_timestamp_ns object, as obtained from a `DUCKDB_TYPE_TIMESTAMP_NS` column. ##### Return Value True if the timestamp is finite, false if it is ±infinity. <br> #### `duckdb_hugeint_to_double` Converts a duckdb_hugeint object (as obtained from a `DUCKDB_TYPE_HUGEINT` column) into a double. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <span class="nv">duckdb_hugeint_to_double</span>(<span class="nv"> </span> <span class="kt">duckdb_hugeint</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: The hugeint value. ##### Return Value The converted `double` element. <br> #### `duckdb_double_to_hugeint` Converts a double value to a duckdb_hugeint object. If the conversion fails because the double value is too big the result will be 0. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_hugeint</span> <span class="nv">duckdb_double_to_hugeint</span>(<span class="nv"> </span> <span class="kt">double</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: The double value. ##### Return Value The converted `duckdb_hugeint` element. <br> #### `duckdb_uhugeint_to_double` Converts a duckdb_uhugeint object (as obtained from a `DUCKDB_TYPE_UHUGEINT` column) into a double. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <span class="nv">duckdb_uhugeint_to_double</span>(<span class="nv"> </span> <span class="kt">duckdb_uhugeint</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: The uhugeint value. ##### Return Value The converted `double` element. <br> #### `duckdb_double_to_uhugeint` Converts a double value to a duckdb_uhugeint object. If the conversion fails because the double value is too big the result will be 0. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_uhugeint</span> <span class="nv">duckdb_double_to_uhugeint</span>(<span class="nv"> </span> <span class="kt">double</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: The double value. ##### Return Value The converted `duckdb_uhugeint` element. <br> #### `duckdb_double_to_decimal` Converts a double value to a duckdb_decimal object. If the conversion fails because the double value is too big, or the width/scale are invalid the result will be 0. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_decimal</span> <span class="nv">duckdb_double_to_decimal</span>(<span class="nv"> </span> <span class="kt">double</span> <span class="nv">val</span>,<span class="nv"> </span> <span class="kt">uint8_t</span> <span class="nv">width</span>,<span class="nv"> </span> <span class="kt">uint8_t</span> <span class="nv">scale </span>); </code></pre></div></div> ##### Parameters * `val`: The double value. ##### Return Value The converted `duckdb_decimal` element. <br> #### `duckdb_decimal_to_double` Converts a duckdb_decimal object (as obtained from a `DUCKDB_TYPE_DECIMAL` column) into a double. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <span class="nv">duckdb_decimal_to_double</span>(<span class="nv"> </span> <span class="kt">duckdb_decimal</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: The decimal value. ##### Return Value The converted `double` element. <br> #### `duckdb_prepare` Create a prepared statement object from a query. Note that after calling `duckdb_prepare`, the prepared statement should always be destroyed using `duckdb_destroy_prepare`, even if the prepare fails. If the prepare fails, `duckdb_prepare_error` can be called to obtain the reason why the prepare failed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_prepare</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">query</span>,<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> *<span class="nv">out_prepared_statement </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection object * `query`: The SQL query to prepare * `out_prepared_statement`: The resulting prepared statement object ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_destroy_prepare` Closes the prepared statement and de-allocates all memory allocated for the statement. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_prepare</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> *<span class="nv">prepared_statement </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement to destroy. <br> #### `duckdb_prepare_error` Returns the error message associated with the given prepared statement. If the prepared statement has no error message, this returns `nullptr` instead. The error message should not be freed. It will be de-allocated when `duckdb_destroy_prepare` is called. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_prepare_error</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement to obtain the error from. ##### Return Value The error message, or `nullptr` if there is none. <br> #### `duckdb_nparams` Returns the number of parameters that can be provided to the given prepared statement. Returns 0 if the query was not successfully prepared. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_nparams</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement to obtain the number of parameters for. <br> #### `duckdb_parameter_name` Returns the name used to identify the parameter The returned string should be freed using `duckdb_free`. Returns NULL if the index is out of range for the provided prepared statement. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_parameter_name</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement for which to get the parameter name from. <br> #### `duckdb_param_type` Returns the parameter type for the parameter at the given index. Returns `DUCKDB_TYPE_INVALID` if the parameter index is out of range or the statement was not successfully prepared. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_type</span> <span class="nv">duckdb_param_type</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement. * `param_idx`: The parameter index. ##### Return Value The parameter type <br> #### `duckdb_param_logical_type` Returns the logical type for the parameter at the given index. Returns `nullptr` if the parameter index is out of range or the statement was not successfully prepared. The return type of this call should be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_param_logical_type</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement. * `param_idx`: The parameter index. ##### Return Value The logical type of the parameter <br> #### `duckdb_clear_bindings` Clear the params bind to the prepared statement. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_clear_bindings</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement </span>); </code></pre></div></div> <br> #### `duckdb_prepared_statement_type` Returns the statement type of the statement to be executed ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_statement_type</span> <span class="nv">duckdb_prepared_statement_type</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">statement </span>); </code></pre></div></div> ##### Parameters * `statement`: The prepared statement. ##### Return Value duckdb_statement_type value or DUCKDB_STATEMENT_TYPE_INVALID <br> #### `duckdb_bind_value` Binds a value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_value</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_parameter_index` Retrieve the index of the parameter for the prepared statement, identified by name ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_parameter_index</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> *<span class="nv">param_idx_out</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name </span>); </code></pre></div></div> <br> #### `duckdb_bind_boolean` Binds a bool value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_boolean</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">bool</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_int8` Binds an int8_t value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_int8</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">int8_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_int16` Binds an int16_t value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_int16</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">int16_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_int32` Binds an int32_t value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_int32</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">int32_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_int64` Binds an int64_t value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_int64</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">int64_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_hugeint` Binds a duckdb_hugeint value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_hugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_hugeint</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_uhugeint` Binds an duckdb_uhugeint value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_uhugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_uhugeint</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_decimal` Binds a duckdb_decimal value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_decimal</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_decimal</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_uint8` Binds an uint8_t value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_uint8</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">uint8_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_uint16` Binds an uint16_t value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_uint16</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">uint16_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_uint32` Binds an uint32_t value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_uint32</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">uint32_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_uint64` Binds an uint64_t value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_uint64</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">uint64_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_float` Binds a float value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_float</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">float</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_double` Binds a double value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_double</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">double</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_date` Binds a duckdb_date value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_date</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_date</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_time` Binds a duckdb_time value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_time</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_time</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_timestamp` Binds a duckdb_timestamp value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_timestamp</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_timestamp</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_timestamp_tz` Binds a duckdb_timestamp value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_timestamp_tz</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_timestamp</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_interval` Binds a duckdb_interval value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_interval</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">duckdb_interval</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_varchar` Binds a null-terminated varchar value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_varchar</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_bind_varchar_length` Binds a varchar value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_varchar_length</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">val</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">length </span>); </code></pre></div></div> <br> #### `duckdb_bind_blob` Binds a blob value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_blob</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">void</span> *<span class="nv">data</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">length </span>); </code></pre></div></div> <br> #### `duckdb_bind_null` Binds a NULL value to the prepared statement at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_bind_null</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">param_idx </span>); </code></pre></div></div> <br> #### `duckdb_execute_prepared` Executes the prepared statement with the given bound parameters, and returns a materialized query result. This method can be called multiple times for each prepared statement, and the parameters can be modified between calls to this function. Note that the result must be freed with `duckdb_destroy_result`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_execute_prepared</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">out_result </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement to execute. * `out_result`: The query result. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_execute_prepared_streaming` > Warning Deprecation notice. This method is scheduled for removal in a future release. Executes the prepared statement with the given bound parameters, and returns an optionally-streaming query result. To determine if the resulting query was in fact streamed, use `duckdb_result_is_streaming` This method can be called multiple times for each prepared statement, and the parameters can be modified between calls to this function. Note that the result must be freed with `duckdb_destroy_result`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_execute_prepared_streaming</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">out_result </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement to execute. * `out_result`: The query result. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_extract_statements` Extract all statements from a query. Note that after calling `duckdb_extract_statements`, the extracted statements should always be destroyed using `duckdb_destroy_extracted`, even if no statements were extracted. If the extract fails, `duckdb_extract_statements_error` can be called to obtain the reason why the extract failed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_extract_statements</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">query</span>,<span class="nv"> </span> <span class="nv">duckdb_extracted_statements</span> *<span class="nv">out_extracted_statements </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection object * `query`: The SQL query to extract * `out_extracted_statements`: The resulting extracted statements object ##### Return Value The number of extracted statements or 0 on failure. <br> #### `duckdb_prepare_extracted_statement` Prepare an extracted statement. Note that after calling `duckdb_prepare_extracted_statement`, the prepared statement should always be destroyed using `duckdb_destroy_prepare`, even if the prepare fails. If the prepare fails, `duckdb_prepare_error` can be called to obtain the reason why the prepare failed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_prepare_extracted_statement</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="nv">duckdb_extracted_statements</span> <span class="nv">extracted_statements</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index</span>,<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> *<span class="nv">out_prepared_statement </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection object * `extracted_statements`: The extracted statements object * `index`: The index of the extracted statement to prepare * `out_prepared_statement`: The resulting prepared statement object ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_extract_statements_error` Returns the error message contained within the extracted statements. The result of this function must not be freed. It will be cleaned up when `duckdb_destroy_extracted` is called. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_extract_statements_error</span>(<span class="nv"> </span> <span class="nv">duckdb_extracted_statements</span> <span class="nv">extracted_statements </span>); </code></pre></div></div> ##### Parameters * `extracted_statements`: The extracted statements to fetch the error from. ##### Return Value The error of the extracted statements. <br> #### `duckdb_destroy_extracted` De-allocates all memory allocated for the extracted statements. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_extracted</span>(<span class="nv"> </span> <span class="nv">duckdb_extracted_statements</span> *<span class="nv">extracted_statements </span>); </code></pre></div></div> ##### Parameters * `extracted_statements`: The extracted statements to destroy. <br> #### `duckdb_pending_prepared` Executes the prepared statement with the given bound parameters, and returns a pending result. The pending result represents an intermediate structure for a query that is not yet fully executed. The pending result can be used to incrementally execute a query, returning control to the client between tasks. Note that after calling `duckdb_pending_prepared`, the pending result should always be destroyed using `duckdb_destroy_pending`, even if this function returns DuckDBError. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_pending_prepared</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="nv">duckdb_pending_result</span> *<span class="nv">out_result </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement to execute. * `out_result`: The pending query result. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_pending_prepared_streaming` > Warning Deprecation notice. This method is scheduled for removal in a future release. Executes the prepared statement with the given bound parameters, and returns a pending result. This pending result will create a streaming duckdb_result when executed. The pending result represents an intermediate structure for a query that is not yet fully executed. Note that after calling `duckdb_pending_prepared_streaming`, the pending result should always be destroyed using `duckdb_destroy_pending`, even if this function returns DuckDBError. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_pending_prepared_streaming</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="nv">duckdb_pending_result</span> *<span class="nv">out_result </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement to execute. * `out_result`: The pending query result. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_destroy_pending` Closes the pending result and de-allocates all memory allocated for the result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_pending</span>(<span class="nv"> </span> <span class="nv">duckdb_pending_result</span> *<span class="nv">pending_result </span>); </code></pre></div></div> ##### Parameters * `pending_result`: The pending result to destroy. <br> #### `duckdb_pending_error` Returns the error message contained within the pending result. The result of this function must not be freed. It will be cleaned up when `duckdb_destroy_pending` is called. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_pending_error</span>(<span class="nv"> </span> <span class="nv">duckdb_pending_result</span> <span class="nv">pending_result </span>); </code></pre></div></div> ##### Parameters * `pending_result`: The pending result to fetch the error from. ##### Return Value The error of the pending result. <br> #### `duckdb_pending_execute_task` Executes a single task within the query, returning whether or not the query is ready. If this returns DUCKDB_PENDING_RESULT_READY, the duckdb_execute_pending function can be called to obtain the result. If this returns DUCKDB_PENDING_RESULT_NOT_READY, the duckdb_pending_execute_task function should be called again. If this returns DUCKDB_PENDING_ERROR, an error occurred during execution. The error message can be obtained by calling duckdb_pending_error on the pending_result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_pending_state</span> <span class="nv">duckdb_pending_execute_task</span>(<span class="nv"> </span> <span class="nv">duckdb_pending_result</span> <span class="nv">pending_result </span>); </code></pre></div></div> ##### Parameters * `pending_result`: The pending result to execute a task within. ##### Return Value The state of the pending result after the execution. <br> #### `duckdb_pending_execute_check_state` If this returns DUCKDB_PENDING_RESULT_READY, the duckdb_execute_pending function can be called to obtain the result. If this returns DUCKDB_PENDING_RESULT_NOT_READY, the duckdb_pending_execute_check_state function should be called again. If this returns DUCKDB_PENDING_ERROR, an error occurred during execution. The error message can be obtained by calling duckdb_pending_error on the pending_result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_pending_state</span> <span class="nv">duckdb_pending_execute_check_state</span>(<span class="nv"> </span> <span class="nv">duckdb_pending_result</span> <span class="nv">pending_result </span>); </code></pre></div></div> ##### Parameters * `pending_result`: The pending result. ##### Return Value The state of the pending result. <br> #### `duckdb_execute_pending` Fully execute a pending query result, returning the final query result. If duckdb_pending_execute_task has been called until DUCKDB_PENDING_RESULT_READY was returned, this will return fast. Otherwise, all remaining tasks must be executed first. Note that the result must be freed with `duckdb_destroy_result`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_execute_pending</span>(<span class="nv"> </span> <span class="nv">duckdb_pending_result</span> <span class="nv">pending_result</span>,<span class="nv"> </span> <span class="kt">duckdb_result</span> *<span class="nv">out_result </span>); </code></pre></div></div> ##### Parameters * `pending_result`: The pending result to execute. * `out_result`: The result object. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_pending_execution_is_finished` Returns whether a duckdb_pending_state is finished executing. For example if `pending_state` is DUCKDB_PENDING_RESULT_READY, this function will return true. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_pending_execution_is_finished</span>(<span class="nv"> </span> <span class="kt">duckdb_pending_state</span> <span class="nv">pending_state </span>); </code></pre></div></div> ##### Parameters * `pending_state`: The pending state on which to decide whether to finish execution. ##### Return Value Boolean indicating pending execution should be considered finished. <br> #### `duckdb_destroy_value` Destroys the value and de-allocates all memory allocated for that type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_value</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> *<span class="nv">value </span>); </code></pre></div></div> ##### Parameters * `value`: The value to destroy. <br> #### `duckdb_create_varchar` Creates a value from a null-terminated string ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_varchar</span>(<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">text </span>); </code></pre></div></div> ##### Parameters * `text`: The null-terminated string ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_varchar_length` Creates a value from a string ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_varchar_length</span>(<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">text</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">length </span>); </code></pre></div></div> ##### Parameters * `text`: The text * `length`: The length of the text ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_bool` Creates a value from a boolean ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_bool</span>(<span class="nv"> </span> <span class="kt">bool</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The boolean value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_int8` Creates a value from a int8_t (a tinyint) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_int8</span>(<span class="nv"> </span> <span class="kt">int8_t</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The tinyint value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_uint8` Creates a value from a uint8_t (a utinyint) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uint8</span>(<span class="nv"> </span> <span class="kt">uint8_t</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The utinyint value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_int16` Creates a value from a int16_t (a smallint) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_int16</span>(<span class="nv"> </span> <span class="kt">int16_t</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The smallint value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_uint16` Creates a value from a uint16_t (a usmallint) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uint16</span>(<span class="nv"> </span> <span class="kt">uint16_t</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The usmallint value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_int32` Creates a value from a int32_t (an integer) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_int32</span>(<span class="nv"> </span> <span class="kt">int32_t</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The integer value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_uint32` Creates a value from a uint32_t (a uinteger) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uint32</span>(<span class="nv"> </span> <span class="kt">uint32_t</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The uinteger value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_uint64` Creates a value from a uint64_t (a ubigint) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uint64</span>(<span class="nv"> </span> <span class="kt">uint64_t</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The ubigint value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_int64` Creates a value from an int64 ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_int64</span>(<span class="nv"> </span> <span class="kt">int64_t</span> <span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_create_hugeint` Creates a value from a hugeint ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_hugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_hugeint</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The hugeint value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_uhugeint` Creates a value from a uhugeint ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uhugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_uhugeint</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The uhugeint value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_varint` Creates a VARINT value from a duckdb_varint ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_varint</span>(<span class="nv"> </span> <span class="nv">duckdb_varint</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_varint value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_decimal` Creates a DECIMAL value from a duckdb_decimal ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_decimal</span>(<span class="nv"> </span> <span class="kt">duckdb_decimal</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_decimal value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_float` Creates a value from a float ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_float</span>(<span class="nv"> </span> <span class="kt">float</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The float value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_double` Creates a value from a double ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_double</span>(<span class="nv"> </span> <span class="kt">double</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The double value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_date` Creates a value from a date ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_date</span>(<span class="nv"> </span> <span class="kt">duckdb_date</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The date value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_time` Creates a value from a time ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_time</span>(<span class="nv"> </span> <span class="kt">duckdb_time</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The time value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_time_tz_value` Creates a value from a time_tz. Not to be confused with `duckdb_create_time_tz`, which creates a duckdb_time_tz_t. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_time_tz_value</span>(<span class="nv"> </span> <span class="kt">duckdb_time_tz</span> <span class="nv">value </span>); </code></pre></div></div> ##### Parameters * `value`: The time_tz value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_timestamp` Creates a TIMESTAMP value from a duckdb_timestamp ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp</span>(<span class="nv"> </span> <span class="kt">duckdb_timestamp</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_timestamp value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_timestamp_tz` Creates a TIMESTAMP_TZ value from a duckdb_timestamp ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp_tz</span>(<span class="nv"> </span> <span class="kt">duckdb_timestamp</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_timestamp value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_timestamp_s` Creates a TIMESTAMP_S value from a duckdb_timestamp_s ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp_s</span>(<span class="nv"> </span> <span class="nv">duckdb_timestamp_s</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_timestamp_s value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_timestamp_ms` Creates a TIMESTAMP_MS value from a duckdb_timestamp_ms ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp_ms</span>(<span class="nv"> </span> <span class="nv">duckdb_timestamp_ms</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_timestamp_ms value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_timestamp_ns` Creates a TIMESTAMP_NS value from a duckdb_timestamp_ns ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp_ns</span>(<span class="nv"> </span> <span class="nv">duckdb_timestamp_ns</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_timestamp_ns value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_interval` Creates a value from an interval ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_interval</span>(<span class="nv"> </span> <span class="kt">duckdb_interval</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The interval value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_blob` Creates a value from a blob ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_blob</span>(<span class="nv"> </span> <span class="kt">const</span> <span class="kt">uint8_t</span> *<span class="nv">data</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">length </span>); </code></pre></div></div> ##### Parameters * `data`: The blob data * `length`: The length of the blob data ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_bit` Creates a BIT value from a duckdb_bit ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_bit</span>(<span class="nv"> </span> <span class="nv">duckdb_bit</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_bit value ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_create_uuid` Creates a UUID value from a uhugeint ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uuid</span>(<span class="nv"> </span> <span class="kt">duckdb_uhugeint</span> <span class="nv">input </span>); </code></pre></div></div> ##### Parameters * `input`: The duckdb_uhugeint containing the UUID ##### Return Value The value. This must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_get_bool` Returns the boolean value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_get_bool</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a boolean ##### Return Value A boolean, or false if the value cannot be converted <br> #### `duckdb_get_int8` Returns the int8_t value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int8_t</span> <span class="nv">duckdb_get_int8</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a tinyint ##### Return Value A int8_t, or MinValue<int8> if the value cannot be converted <br> #### `duckdb_get_uint8` Returns the uint8_t value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint8_t</span> <span class="nv">duckdb_get_uint8</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a utinyint ##### Return Value A uint8_t, or MinValue<uint8> if the value cannot be converted <br> #### `duckdb_get_int16` Returns the int16_t value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int16_t</span> <span class="nv">duckdb_get_int16</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a smallint ##### Return Value A int16_t, or MinValue<int16> if the value cannot be converted <br> #### `duckdb_get_uint16` Returns the uint16_t value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint16_t</span> <span class="nv">duckdb_get_uint16</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a usmallint ##### Return Value A uint16_t, or MinValue<uint16> if the value cannot be converted <br> #### `duckdb_get_int32` Returns the int32_t value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int32_t</span> <span class="nv">duckdb_get_int32</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a integer ##### Return Value A int32_t, or MinValue<int32> if the value cannot be converted <br> #### `duckdb_get_uint32` Returns the uint32_t value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint32_t</span> <span class="nv">duckdb_get_uint32</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a uinteger ##### Return Value A uint32_t, or MinValue<uint32> if the value cannot be converted <br> #### `duckdb_get_int64` Returns the int64_t value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int64_t</span> <span class="nv">duckdb_get_int64</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a bigint ##### Return Value A int64_t, or MinValue<int64> if the value cannot be converted <br> #### `duckdb_get_uint64` Returns the uint64_t value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint64_t</span> <span class="nv">duckdb_get_uint64</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a ubigint ##### Return Value A uint64_t, or MinValue<uint64> if the value cannot be converted <br> #### `duckdb_get_hugeint` Returns the hugeint value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_hugeint</span> <span class="nv">duckdb_get_hugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a hugeint ##### Return Value A duckdb_hugeint, or MinValue<hugeint> if the value cannot be converted <br> #### `duckdb_get_uhugeint` Returns the uhugeint value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_uhugeint</span> <span class="nv">duckdb_get_uhugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a uhugeint ##### Return Value A duckdb_uhugeint, or MinValue<uhugeint> if the value cannot be converted <br> #### `duckdb_get_varint` Returns the duckdb_varint value of the given value. The `data` field must be destroyed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_varint</span> <span class="nv">duckdb_get_varint</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a VARINT ##### Return Value A duckdb_varint. The `data` field must be destroyed with `duckdb_free`. <br> #### `duckdb_get_decimal` Returns the duckdb_decimal value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_decimal</span> <span class="nv">duckdb_get_decimal</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a DECIMAL ##### Return Value A duckdb_decimal, or MinValue<decimal> if the value cannot be converted <br> #### `duckdb_get_float` Returns the float value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">float</span> <span class="nv">duckdb_get_float</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a float ##### Return Value A float, or NAN if the value cannot be converted <br> #### `duckdb_get_double` Returns the double value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <span class="nv">duckdb_get_double</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a double ##### Return Value A double, or NAN if the value cannot be converted <br> #### `duckdb_get_date` Returns the date value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_date</span> <span class="nv">duckdb_get_date</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a date ##### Return Value A duckdb_date, or MinValue<date> if the value cannot be converted <br> #### `duckdb_get_time` Returns the time value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time</span> <span class="nv">duckdb_get_time</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a time ##### Return Value A duckdb_time, or MinValue<time> if the value cannot be converted <br> #### `duckdb_get_time_tz` Returns the time_tz value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time_tz</span> <span class="nv">duckdb_get_time_tz</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a time_tz ##### Return Value A duckdb_time_tz, or MinValue<time_tz> if the value cannot be converted <br> #### `duckdb_get_timestamp` Returns the TIMESTAMP value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_timestamp</span> <span class="nv">duckdb_get_timestamp</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a TIMESTAMP ##### Return Value A duckdb_timestamp, or MinValue<timestamp> if the value cannot be converted <br> #### `duckdb_get_timestamp_tz` Returns the TIMESTAMP_TZ value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_timestamp</span> <span class="nv">duckdb_get_timestamp_tz</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a TIMESTAMP_TZ ##### Return Value A duckdb_timestamp, or MinValue<timestamp_tz> if the value cannot be converted <br> #### `duckdb_get_timestamp_s` Returns the duckdb_timestamp_s value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_timestamp_s</span> <span class="nv">duckdb_get_timestamp_s</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a TIMESTAMP_S ##### Return Value A duckdb_timestamp_s, or MinValue<timestamp_s> if the value cannot be converted <br> #### `duckdb_get_timestamp_ms` Returns the duckdb_timestamp_ms value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_timestamp_ms</span> <span class="nv">duckdb_get_timestamp_ms</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a TIMESTAMP_MS ##### Return Value A duckdb_timestamp_ms, or MinValue<timestamp_ms> if the value cannot be converted <br> #### `duckdb_get_timestamp_ns` Returns the duckdb_timestamp_ns value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_timestamp_ns</span> <span class="nv">duckdb_get_timestamp_ns</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a TIMESTAMP_NS ##### Return Value A duckdb_timestamp_ns, or MinValue<timestamp_ns> if the value cannot be converted <br> #### `duckdb_get_interval` Returns the interval value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_interval</span> <span class="nv">duckdb_get_interval</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a interval ##### Return Value A duckdb_interval, or MinValue<interval> if the value cannot be converted <br> #### `duckdb_get_value_type` Returns the type of the given value. The type is valid as long as the value is not destroyed. The type itself must not be destroyed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_get_value_type</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value ##### Return Value A duckdb_logical_type. <br> #### `duckdb_get_blob` Returns the blob value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_blob</span> <span class="nv">duckdb_get_blob</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a blob ##### Return Value A duckdb_blob <br> #### `duckdb_get_bit` Returns the duckdb_bit value of the given value. The `data` field must be destroyed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_bit</span> <span class="nv">duckdb_get_bit</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a BIT ##### Return Value A duckdb_bit <br> #### `duckdb_get_uuid` Returns a duckdb_uhugeint representing the UUID value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_uhugeint</span> <span class="nv">duckdb_get_uuid</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">val </span>); </code></pre></div></div> ##### Parameters * `val`: A duckdb_value containing a UUID ##### Return Value A duckdb_uhugeint representing the UUID value <br> #### `duckdb_get_varchar` Obtains a string representation of the given value. The result must be destroyed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_get_varchar</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value </span>); </code></pre></div></div> ##### Parameters * `value`: The value ##### Return Value The string value. This must be destroyed with `duckdb_free`. <br> #### `duckdb_create_struct_value` Creates a struct value from a type and an array of values. Must be destroyed with `duckdb_destroy_value`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_struct_value</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">duckdb_value</span> *<span class="nv">values </span>); </code></pre></div></div> ##### Parameters * `type`: The type of the struct * `values`: The values for the struct fields ##### Return Value The struct value, or nullptr, if any child type is `DUCKDB_TYPE_ANY` or `DUCKDB_TYPE_INVALID`. <br> #### `duckdb_create_list_value` Creates a list value from a child (element) type and an array of values of length `value_count`. Must be destroyed with `duckdb_destroy_value`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_list_value</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">duckdb_value</span> *<span class="nv">values</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">value_count </span>); </code></pre></div></div> ##### Parameters * `type`: The type of the list * `values`: The values for the list * `value_count`: The number of values in the list ##### Return Value The list value, or nullptr, if the child type is `DUCKDB_TYPE_ANY` or `DUCKDB_TYPE_INVALID`. <br> #### `duckdb_create_array_value` Creates an array value from a child (element) type and an array of values of length `value_count`. Must be destroyed with `duckdb_destroy_value`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_array_value</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">duckdb_value</span> *<span class="nv">values</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">value_count </span>); </code></pre></div></div> ##### Parameters * `type`: The type of the array * `values`: The values for the array * `value_count`: The number of values in the array ##### Return Value The array value, or nullptr, if the child type is `DUCKDB_TYPE_ANY` or `DUCKDB_TYPE_INVALID`. <br> #### `duckdb_get_map_size` Returns the number of elements in a MAP value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_get_map_size</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value </span>); </code></pre></div></div> ##### Parameters * `value`: The MAP value. ##### Return Value The number of elements in the map. <br> #### `duckdb_get_map_key` Returns the MAP key at index as a duckdb_value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_get_map_key</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `value`: The MAP value. * `index`: The index of the key. ##### Return Value The key as a duckdb_value. <br> #### `duckdb_get_map_value` Returns the MAP value at index as a duckdb_value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_get_map_value</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `value`: The MAP value. * `index`: The index of the value. ##### Return Value The value as a duckdb_value. <br> #### `duckdb_is_null_value` Returns whether the value's type is SQLNULL or not. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_is_null_value</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value </span>); </code></pre></div></div> ##### Parameters * `value`: The value to check. ##### Return Value True, if the value's type is SQLNULL, otherwise false. <br> #### `duckdb_create_null_value` Creates a value of type SQLNULL. ##### Return Value The duckdb_value representing SQLNULL. This must be destroyed with `duckdb_destroy_value`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_null_value</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_get_list_size` Returns the number of elements in a LIST value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_get_list_size</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value </span>); </code></pre></div></div> ##### Parameters * `value`: The LIST value. ##### Return Value The number of elements in the list. <br> #### `duckdb_get_list_child` Returns the LIST child at index as a duckdb_value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_get_list_child</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `value`: The LIST value. * `index`: The index of the child. ##### Return Value The child as a duckdb_value. <br> #### `duckdb_create_enum_value` Creates an enum value from a type and a value. Must be destroyed with `duckdb_destroy_value`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_enum_value</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">uint64_t</span> <span class="nv">value </span>); </code></pre></div></div> ##### Parameters * `type`: The type of the enum * `value`: The value for the enum ##### Return Value The enum value, or nullptr. <br> #### `duckdb_get_enum_value` Returns the enum value of the given value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint64_t</span> <span class="nv">duckdb_get_enum_value</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value </span>); </code></pre></div></div> ##### Parameters * `value`: A duckdb_value containing an enum ##### Return Value A uint64_t, or MinValue<uint64> if the value cannot be converted <br> #### `duckdb_get_struct_child` Returns the STRUCT child at index as a duckdb_value. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_get_struct_child</span>(<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `value`: The STRUCT value. * `index`: The index of the child. ##### Return Value The child as a duckdb_value. <br> #### `duckdb_create_logical_type` Creates a `duckdb_logical_type` from a primitive type. The resulting logical type must be destroyed with `duckdb_destroy_logical_type`. Returns an invalid logical type, if type is: `DUCKDB_TYPE_INVALID`, `DUCKDB_TYPE_DECIMAL`, `DUCKDB_TYPE_ENUM`, `DUCKDB_TYPE_LIST`, `DUCKDB_TYPE_STRUCT`, `DUCKDB_TYPE_MAP`, `DUCKDB_TYPE_ARRAY`, or `DUCKDB_TYPE_UNION`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_create_logical_type</span>(<span class="nv"> </span> <span class="kt">duckdb_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The primitive type to create. ##### Return Value The logical type. <br> #### `duckdb_logical_type_get_alias` Returns the alias of a duckdb_logical_type, if set, else `nullptr`. The result must be destroyed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_logical_type_get_alias</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type ##### Return Value The alias or `nullptr` <br> #### `duckdb_logical_type_set_alias` Sets the alias of a duckdb_logical_type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_logical_type_set_alias</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">alias </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type * `alias`: The alias to set <br> #### `duckdb_create_list_type` Creates a LIST type from its child type. The return type must be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_create_list_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The child type of the list ##### Return Value The logical type. <br> #### `duckdb_create_array_type` Creates an ARRAY type from its child type. The return type must be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_create_array_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">array_size </span>); </code></pre></div></div> ##### Parameters * `type`: The child type of the array. * `array_size`: The number of elements in the array. ##### Return Value The logical type. <br> #### `duckdb_create_map_type` Creates a MAP type from its key type and value type. The return type must be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_create_map_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">key_type</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">value_type </span>); </code></pre></div></div> ##### Parameters * `key_type`: The map's key type. * `value_type`: The map's value type. ##### Return Value The logical type. <br> #### `duckdb_create_union_type` Creates a UNION type from the passed arrays. The return type must be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_create_union_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> *<span class="nv">member_types</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">member_names</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">member_count </span>); </code></pre></div></div> ##### Parameters * `member_types`: The array of union member types. * `member_names`: The union member names. * `member_count`: The number of union members. ##### Return Value The logical type. <br> #### `duckdb_create_struct_type` Creates a STRUCT type based on the member types and names. The resulting type must be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_create_struct_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> *<span class="nv">member_types</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">member_names</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">member_count </span>); </code></pre></div></div> ##### Parameters * `member_types`: The array of types of the struct members. * `member_names`: The array of names of the struct members. * `member_count`: The number of members of the struct. ##### Return Value The logical type. <br> #### `duckdb_create_enum_type` Creates an ENUM type from the passed member name array. The resulting type should be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_create_enum_type</span>(<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> **<span class="nv">member_names</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">member_count </span>); </code></pre></div></div> ##### Parameters * `member_names`: The array of names that the enum should consist of. * `member_count`: The number of elements that were specified in the array. ##### Return Value The logical type. <br> #### `duckdb_create_decimal_type` Creates a DECIMAL type with the specified width and scale. The resulting type should be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_create_decimal_type</span>(<span class="nv"> </span> <span class="kt">uint8_t</span> <span class="nv">width</span>,<span class="nv"> </span> <span class="kt">uint8_t</span> <span class="nv">scale </span>); </code></pre></div></div> ##### Parameters * `width`: The width of the decimal type * `scale`: The scale of the decimal type ##### Return Value The logical type. <br> #### `duckdb_get_type_id` Retrieves the enum `duckdb_type` of a `duckdb_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_type</span> <span class="nv">duckdb_get_type_id</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type. ##### Return Value The `duckdb_type` id. <br> #### `duckdb_decimal_width` Retrieves the width of a decimal type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint8_t</span> <span class="nv">duckdb_decimal_width</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The width of the decimal type <br> #### `duckdb_decimal_scale` Retrieves the scale of a decimal type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint8_t</span> <span class="nv">duckdb_decimal_scale</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The scale of the decimal type <br> #### `duckdb_decimal_internal_type` Retrieves the internal storage type of a decimal type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_type</span> <span class="nv">duckdb_decimal_internal_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The internal type of the decimal type <br> #### `duckdb_enum_internal_type` Retrieves the internal storage type of an enum type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_type</span> <span class="nv">duckdb_enum_internal_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The internal type of the enum type <br> #### `duckdb_enum_dictionary_size` Retrieves the dictionary size of the enum type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint32_t</span> <span class="nv">duckdb_enum_dictionary_size</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The dictionary size of the enum type <br> #### `duckdb_enum_dictionary_value` Retrieves the dictionary value at the specified position from the enum. The result must be freed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_enum_dictionary_value</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object * `index`: The index in the dictionary ##### Return Value The string value of the enum type. Must be freed with `duckdb_free`. <br> #### `duckdb_list_type_child_type` Retrieves the child type of the given LIST type. Also accepts MAP types. The result must be freed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_list_type_child_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type, either LIST or MAP. ##### Return Value The child type of the LIST or MAP type. <br> #### `duckdb_array_type_child_type` Retrieves the child type of the given ARRAY type. The result must be freed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_array_type_child_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type. Must be ARRAY. ##### Return Value The child type of the ARRAY type. <br> #### `duckdb_array_type_array_size` Retrieves the array size of the given array type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_array_type_array_size</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The fixed number of elements the values of this array type can store. <br> #### `duckdb_map_type_key_type` Retrieves the key type of the given map type. The result must be freed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_map_type_key_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The key type of the map type. Must be destroyed with `duckdb_destroy_logical_type`. <br> #### `duckdb_map_type_value_type` Retrieves the value type of the given map type. The result must be freed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_map_type_value_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The value type of the map type. Must be destroyed with `duckdb_destroy_logical_type`. <br> #### `duckdb_struct_type_child_count` Returns the number of children of a struct type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_struct_type_child_count</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object ##### Return Value The number of children of a struct type. <br> #### `duckdb_struct_type_child_name` Retrieves the name of the struct child. The result must be freed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_struct_type_child_name</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object * `index`: The child index ##### Return Value The name of the struct type. Must be freed with `duckdb_free`. <br> #### `duckdb_struct_type_child_type` Retrieves the child type of the given struct type at the specified index. The result must be freed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_struct_type_child_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object * `index`: The child index ##### Return Value The child type of the struct type. Must be destroyed with `duckdb_destroy_logical_type`. <br> #### `duckdb_union_type_member_count` Returns the number of members that the union type has. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_union_type_member_count</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type (union) object ##### Return Value The number of members of a union type. <br> #### `duckdb_union_type_member_name` Retrieves the name of the union member. The result must be freed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_union_type_member_name</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object * `index`: The child index ##### Return Value The name of the union member. Must be freed with `duckdb_free`. <br> #### `duckdb_union_type_member_type` Retrieves the child type of the given union member at the specified index. The result must be freed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_union_type_member_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type object * `index`: The child index ##### Return Value The child type of the union member. Must be destroyed with `duckdb_destroy_logical_type`. <br> #### `duckdb_destroy_logical_type` Destroys the logical type and de-allocates all memory allocated for that type. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_logical_type</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> *<span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `type`: The logical type to destroy. <br> #### `duckdb_register_logical_type` Registers a custom type within the given connection. The type must have an alias ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_register_logical_type</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">con</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv"> </span> <span class="nv">duckdb_create_type_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `con`: The connection to use * `type`: The custom type to register ##### Return Value Whether or not the registration was successful. <br> #### `duckdb_create_data_chunk` Creates an empty data chunk with the specified column types. The result must be destroyed with `duckdb_destroy_data_chunk`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_data_chunk</span> <span class="nv">duckdb_create_data_chunk</span>(<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> *<span class="nv">types</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">column_count </span>); </code></pre></div></div> ##### Parameters * `types`: An array of column types. Column types can not contain ANY and INVALID types. * `column_count`: The number of columns. ##### Return Value The data chunk. <br> #### `duckdb_destroy_data_chunk` Destroys the data chunk and de-allocates all memory allocated for that chunk. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_data_chunk</span>(<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> *<span class="nv">chunk </span>); </code></pre></div></div> ##### Parameters * `chunk`: The data chunk to destroy. <br> #### `duckdb_data_chunk_reset` Resets a data chunk, clearing the validity masks and setting the cardinality of the data chunk to 0. After calling this method, you must call `duckdb_vector_get_validity` and `duckdb_vector_get_data` to obtain current data and validity pointers ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_data_chunk_reset</span>(<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk </span>); </code></pre></div></div> ##### Parameters * `chunk`: The data chunk to reset. <br> #### `duckdb_data_chunk_get_column_count` Retrieves the number of columns in a data chunk. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_data_chunk_get_column_count</span>(<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk </span>); </code></pre></div></div> ##### Parameters * `chunk`: The data chunk to get the data from ##### Return Value The number of columns in the data chunk <br> #### `duckdb_data_chunk_get_vector` Retrieves the vector at the specified column index in the data chunk. The pointer to the vector is valid for as long as the chunk is alive. It does NOT need to be destroyed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_vector</span> <span class="nv">duckdb_data_chunk_get_vector</span>(<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col_idx </span>); </code></pre></div></div> ##### Parameters * `chunk`: The data chunk to get the data from ##### Return Value The vector <br> #### `duckdb_data_chunk_get_size` Retrieves the current number of tuples in a data chunk. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_data_chunk_get_size</span>(<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk </span>); </code></pre></div></div> ##### Parameters * `chunk`: The data chunk to get the data from ##### Return Value The number of tuples in the data chunk <br> #### `duckdb_data_chunk_set_size` Sets the current number of tuples in a data chunk. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_data_chunk_set_size</span>(<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">size </span>); </code></pre></div></div> ##### Parameters * `chunk`: The data chunk to set the size in * `size`: The number of tuples in the data chunk <br> #### `duckdb_vector_get_column_type` Retrieves the column type of the specified vector. The result must be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_vector_get_column_type</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector get the data from ##### Return Value The type of the vector <br> #### `duckdb_vector_get_data` Retrieves the data pointer of the vector. The data pointer can be used to read or write values from the vector. How to read or write values depends on the type of the vector. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_vector_get_data</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector to get the data from ##### Return Value The data pointer <br> #### `duckdb_vector_get_validity` Retrieves the validity mask pointer of the specified vector. If all values are valid, this function MIGHT return NULL! The validity mask is a bitset that signifies null-ness within the data chunk. It is a series of uint64_t values, where each uint64_t value contains validity for 64 tuples. The bit is set to 1 if the value is valid (i.e., not NULL) or 0 if the value is invalid (i.e., NULL). Validity of a specific value can be obtained like this: idx_t entry_idx = row_idx / 64; idx_t idx_in_entry = row_idx % 64; bool is_valid = validity_mask[entry_idx] & (1 << idx_in_entry); Alternatively, the (slower) duckdb_validity_row_is_valid function can be used. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint64_t</span> *<span class="nv">duckdb_vector_get_validity</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector to get the data from ##### Return Value The pointer to the validity mask, or NULL if no validity mask is present <br> #### `duckdb_vector_ensure_validity_writable` Ensures the validity mask is writable by allocating it. After this function is called, `duckdb_vector_get_validity` will ALWAYS return non-NULL. This allows NULL values to be written to the vector, regardless of whether a validity mask was present before. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_vector_ensure_validity_writable</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector to alter <br> #### `duckdb_vector_assign_string_element` Assigns a string element in the vector at the specified location. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_vector_assign_string_element</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">str </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector to alter * `index`: The row position in the vector to assign the string to * `str`: The null-terminated string <br> #### `duckdb_vector_assign_string_element_len` Assigns a string element in the vector at the specified location. You may also use this function to assign BLOBs. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_vector_assign_string_element_len</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">str</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">str_len </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector to alter * `index`: The row position in the vector to assign the string to * `str`: The string * `str_len`: The length of the string (in bytes) <br> #### `duckdb_list_vector_get_child` Retrieves the child vector of a list vector. The resulting vector is valid as long as the parent vector is valid. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_vector</span> <span class="nv">duckdb_list_vector_get_child</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector ##### Return Value The child vector <br> #### `duckdb_list_vector_get_size` Returns the size of the child vector of the list. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_list_vector_get_size</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector ##### Return Value The size of the child list <br> #### `duckdb_list_vector_set_size` Sets the total size of the underlying child-vector of a list vector. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_list_vector_set_size</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">size </span>); </code></pre></div></div> ##### Parameters * `vector`: The list vector. * `size`: The size of the child list. ##### Return Value The duckdb state. Returns DuckDBError if the vector is nullptr. <br> #### `duckdb_list_vector_reserve` Sets the total capacity of the underlying child-vector of a list. After calling this method, you must call `duckdb_vector_get_validity` and `duckdb_vector_get_data` to obtain current data and validity pointers ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_list_vector_reserve</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">required_capacity </span>); </code></pre></div></div> ##### Parameters * `vector`: The list vector. * `required_capacity`: the total capacity to reserve. ##### Return Value The duckdb state. Returns DuckDBError if the vector is nullptr. <br> #### `duckdb_struct_vector_get_child` Retrieves the child vector of a struct vector. The resulting vector is valid as long as the parent vector is valid. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_vector</span> <span class="nv">duckdb_struct_vector_get_child</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector * `index`: The child index ##### Return Value The child vector <br> #### `duckdb_array_vector_get_child` Retrieves the child vector of a array vector. The resulting vector is valid as long as the parent vector is valid. The resulting vector has the size of the parent vector multiplied by the array size. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_vector</span> <span class="nv">duckdb_array_vector_get_child</span>(<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">vector </span>); </code></pre></div></div> ##### Parameters * `vector`: The vector ##### Return Value The child vector <br> #### `duckdb_validity_row_is_valid` Returns whether or not a row is valid (i.e., not NULL) in the given validity mask. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_validity_row_is_valid</span>(<span class="nv"> </span> <span class="kt">uint64_t</span> *<span class="nv">validity</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> ##### Parameters * `validity`: The validity mask, as obtained through `duckdb_vector_get_validity` * `row`: The row index ##### Return Value true if the row is valid, false otherwise <br> #### `duckdb_validity_set_row_validity` In a validity mask, sets a specific row to either valid or invalid. Note that `duckdb_vector_ensure_validity_writable` should be called before calling `duckdb_vector_get_validity`, to ensure that there is a validity mask to write to. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_validity_set_row_validity</span>(<span class="nv"> </span> <span class="kt">uint64_t</span> *<span class="nv">validity</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row</span>,<span class="nv"> </span> <span class="kt">bool</span> <span class="nv">valid </span>); </code></pre></div></div> ##### Parameters * `validity`: The validity mask, as obtained through `duckdb_vector_get_validity`. * `row`: The row index * `valid`: Whether or not to set the row to valid, or invalid <br> #### `duckdb_validity_set_row_invalid` In a validity mask, sets a specific row to invalid. Equivalent to `duckdb_validity_set_row_validity` with valid set to false. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_validity_set_row_invalid</span>(<span class="nv"> </span> <span class="kt">uint64_t</span> *<span class="nv">validity</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> ##### Parameters * `validity`: The validity mask * `row`: The row index <br> #### `duckdb_validity_set_row_valid` In a validity mask, sets a specific row to valid. Equivalent to `duckdb_validity_set_row_validity` with valid set to true. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_validity_set_row_valid</span>(<span class="nv"> </span> <span class="kt">uint64_t</span> *<span class="nv">validity</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> ##### Parameters * `validity`: The validity mask * `row`: The row index <br> #### `duckdb_create_scalar_function` Creates a new empty scalar function. The return value should be destroyed with `duckdb_destroy_scalar_function`. ##### Return Value The scalar function object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_scalar_function</span> <span class="nv">duckdb_create_scalar_function</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_destroy_scalar_function` Destroys the given scalar function object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_scalar_function</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> *<span class="nv">scalar_function </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function to destroy <br> #### `duckdb_scalar_function_set_name` Sets the name of the given scalar function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_set_name</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function * `name`: The name of the scalar function <br> #### `duckdb_scalar_function_set_varargs` Sets the parameters of the given scalar function to varargs. Does not require adding parameters with duckdb_scalar_function_add_parameter. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_set_varargs</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function. * `type`: The type of the arguments. ##### Return Value The parameter type. Cannot contain INVALID. <br> #### `duckdb_scalar_function_set_special_handling` Sets the parameters of the given scalar function to varargs. Does not require adding parameters with duckdb_scalar_function_add_parameter. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_set_special_handling</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function. <br> #### `duckdb_scalar_function_set_volatile` Sets the Function Stability of the scalar function to VOLATILE, indicating the function should be re-run for every row. This limits optimization that can be performed for the function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_set_volatile</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function. <br> #### `duckdb_scalar_function_add_parameter` Adds a parameter to the scalar function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_add_parameter</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function. * `type`: The parameter type. Cannot contain INVALID. <br> #### `duckdb_scalar_function_set_return_type` Sets the return type of the scalar function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_set_return_type</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function * `type`: Cannot contain INVALID or ANY. <br> #### `duckdb_scalar_function_set_extra_info` Assigns extra information to the scalar function that can be fetched during binding, etc. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_set_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>,<span class="nv"> </span> <span class="kt">void</span> *<span class="nv">extra_info</span>,<span class="nv"> </span> <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function * `extra_info`: The extra information * `destroy`: The callback that will be called to destroy the bind data (if any) <br> #### `duckdb_scalar_function_set_function` Sets the main function of the scalar function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_set_function</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function</span>,<span class="nv"> </span> <span class="nv">duckdb_scalar_function_t</span> <span class="nv">function </span>); </code></pre></div></div> ##### Parameters * `scalar_function`: The scalar function * `function`: The function <br> #### `duckdb_register_scalar_function` Register the scalar function object within the given connection. The function requires at least a name, a function and a return type. If the function is incomplete or a function with this name already exists DuckDBError is returned. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_register_scalar_function</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">con</span>,<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">scalar_function </span>); </code></pre></div></div> ##### Parameters * `con`: The connection to register it in. * `scalar_function`: The function pointer ##### Return Value Whether or not the registration was successful. <br> #### `duckdb_scalar_function_get_extra_info` Retrieves the extra info of the function as set in `duckdb_scalar_function_set_extra_info`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_scalar_function_get_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object. ##### Return Value The extra info. <br> #### `duckdb_scalar_function_set_error` Report that an error has occurred while executing the scalar function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_scalar_function_set_error</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error </span>); </code></pre></div></div> ##### Parameters * `info`: The info object. * `error`: The error message <br> #### `duckdb_create_scalar_function_set` Creates a new empty scalar function set. The return value should be destroyed with `duckdb_destroy_scalar_function_set`. ##### Return Value The scalar function set object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_scalar_function_set</span> <span class="nv">duckdb_create_scalar_function_set</span>(<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name </span>); </code></pre></div></div> <br> #### `duckdb_destroy_scalar_function_set` Destroys the given scalar function set object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_scalar_function_set</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function_set</span> *<span class="nv">scalar_function_set </span>); </code></pre></div></div> <br> #### `duckdb_add_scalar_function_to_set` Adds the scalar function as a new overload to the scalar function set. Returns DuckDBError if the function could not be added, for example if the overload already exists. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_add_scalar_function_to_set</span>(<span class="nv"> </span> <span class="kt">duckdb_scalar_function_set</span> <span class="nv">set</span>,<span class="nv"> </span> <span class="kt">duckdb_scalar_function</span> <span class="nv">function </span>); </code></pre></div></div> ##### Parameters * `set`: The scalar function set * `function`: The function to add <br> #### `duckdb_register_scalar_function_set` Register the scalar function set within the given connection. The set requires at least a single valid overload. If the set is incomplete or a function with this name already exists DuckDBError is returned. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_register_scalar_function_set</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">con</span>,<span class="nv"> </span> <span class="kt">duckdb_scalar_function_set</span> <span class="nv">set </span>); </code></pre></div></div> ##### Parameters * `con`: The connection to register it in. * `set`: The function set to register ##### Return Value Whether or not the registration was successful. <br> #### `duckdb_create_aggregate_function` Creates a new empty aggregate function. The return value should be destroyed with `duckdb_destroy_aggregate_function`. ##### Return Value The aggregate function object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_aggregate_function</span> <span class="nv">duckdb_create_aggregate_function</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_destroy_aggregate_function` Destroys the given aggregate function object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_aggregate_function</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> *<span class="nv">aggregate_function </span>); </code></pre></div></div> <br> #### `duckdb_aggregate_function_set_name` Sets the name of the given aggregate function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_aggregate_function_set_name</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name </span>); </code></pre></div></div> ##### Parameters * `aggregate_function`: The aggregate function * `name`: The name of the aggregate function <br> #### `duckdb_aggregate_function_add_parameter` Adds a parameter to the aggregate function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_aggregate_function_add_parameter</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `aggregate_function`: The aggregate function. * `type`: The parameter type. Cannot contain INVALID. <br> #### `duckdb_aggregate_function_set_return_type` Sets the return type of the aggregate function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_aggregate_function_set_return_type</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `aggregate_function`: The aggregate function. * `type`: The return type. Cannot contain INVALID or ANY. <br> #### `duckdb_aggregate_function_set_functions` Sets the main functions of the aggregate function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_aggregate_function_set_functions</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>,<span class="nv"> </span> <span class="nv">duckdb_aggregate_state_size</span> <span class="nv">state_size</span>,<span class="nv"> </span> <span class="nv">duckdb_aggregate_init_t</span> <span class="nv">state_init</span>,<span class="nv"> </span> <span class="nv">duckdb_aggregate_update_t</span> <span class="nv">update</span>,<span class="nv"> </span> <span class="nv">duckdb_aggregate_combine_t</span> <span class="nv">combine</span>,<span class="nv"> </span> <span class="nv">duckdb_aggregate_finalize_t</span> <span class="nv">finalize </span>); </code></pre></div></div> ##### Parameters * `aggregate_function`: The aggregate function * `state_size`: state size * `state_init`: state init function * `update`: update states * `combine`: combine states * `finalize`: finalize states <br> #### `duckdb_aggregate_function_set_destructor` Sets the state destructor callback of the aggregate function (optional) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_aggregate_function_set_destructor</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>,<span class="nv"> </span> <span class="nv">duckdb_aggregate_destroy_t</span> <span class="nv">destroy </span>); </code></pre></div></div> ##### Parameters * `aggregate_function`: The aggregate function * `destroy`: state destroy callback <br> #### `duckdb_register_aggregate_function` Register the aggregate function object within the given connection. The function requires at least a name, functions and a return type. If the function is incomplete or a function with this name already exists DuckDBError is returned. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_register_aggregate_function</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">con</span>,<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function </span>); </code></pre></div></div> ##### Parameters * `con`: The connection to register it in. ##### Return Value Whether or not the registration was successful. <br> #### `duckdb_aggregate_function_set_special_handling` Sets the NULL handling of the aggregate function to SPECIAL_HANDLING. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_aggregate_function_set_special_handling</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function </span>); </code></pre></div></div> ##### Parameters * `aggregate_function`: The aggregate function <br> #### `duckdb_aggregate_function_set_extra_info` Assigns extra information to the scalar function that can be fetched during binding, etc. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_aggregate_function_set_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">aggregate_function</span>,<span class="nv"> </span> <span class="kt">void</span> *<span class="nv">extra_info</span>,<span class="nv"> </span> <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy </span>); </code></pre></div></div> ##### Parameters * `aggregate_function`: The aggregate function * `extra_info`: The extra information * `destroy`: The callback that will be called to destroy the bind data (if any) <br> #### `duckdb_aggregate_function_get_extra_info` Retrieves the extra info of the function as set in `duckdb_aggregate_function_set_extra_info`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_aggregate_function_get_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The extra info <br> #### `duckdb_aggregate_function_set_error` Report that an error has occurred while executing the aggregate function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_aggregate_function_set_error</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `error`: The error message <br> #### `duckdb_create_aggregate_function_set` Creates a new empty aggregate function set. The return value should be destroyed with `duckdb_destroy_aggregate_function_set`. ##### Return Value The aggregate function set object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_aggregate_function_set</span> <span class="nv">duckdb_create_aggregate_function_set</span>(<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name </span>); </code></pre></div></div> <br> #### `duckdb_destroy_aggregate_function_set` Destroys the given aggregate function set object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_aggregate_function_set</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function_set</span> *<span class="nv">aggregate_function_set </span>); </code></pre></div></div> <br> #### `duckdb_add_aggregate_function_to_set` Adds the aggregate function as a new overload to the aggregate function set. Returns DuckDBError if the function could not be added, for example if the overload already exists. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_add_aggregate_function_to_set</span>(<span class="nv"> </span> <span class="kt">duckdb_aggregate_function_set</span> <span class="nv">set</span>,<span class="nv"> </span> <span class="kt">duckdb_aggregate_function</span> <span class="nv">function </span>); </code></pre></div></div> ##### Parameters * `set`: The aggregate function set * `function`: The function to add <br> #### `duckdb_register_aggregate_function_set` Register the aggregate function set within the given connection. The set requires at least a single valid overload. If the set is incomplete or a function with this name already exists DuckDBError is returned. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_register_aggregate_function_set</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">con</span>,<span class="nv"> </span> <span class="kt">duckdb_aggregate_function_set</span> <span class="nv">set </span>); </code></pre></div></div> ##### Parameters * `con`: The connection to register it in. * `set`: The function set to register ##### Return Value Whether or not the registration was successful. <br> #### `duckdb_create_table_function` Creates a new empty table function. The return value should be destroyed with `duckdb_destroy_table_function`. ##### Return Value The table function object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_table_function</span> <span class="nv">duckdb_create_table_function</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_destroy_table_function` Destroys the given table function object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_table_function</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> *<span class="nv">table_function </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function to destroy <br> #### `duckdb_table_function_set_name` Sets the name of the given table function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_set_name</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function * `name`: The name of the table function <br> #### `duckdb_table_function_add_parameter` Adds a parameter to the table function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_add_parameter</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function. * `type`: The parameter type. Cannot contain INVALID. <br> #### `duckdb_table_function_add_named_parameter` Adds a named parameter to the table function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_add_named_parameter</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function. * `name`: The parameter name. * `type`: The parameter type. Cannot contain INVALID. <br> #### `duckdb_table_function_set_extra_info` Assigns extra information to the table function that can be fetched during binding, etc. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_set_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="kt">void</span> *<span class="nv">extra_info</span>,<span class="nv"> </span> <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function * `extra_info`: The extra information * `destroy`: The callback that will be called to destroy the bind data (if any) <br> #### `duckdb_table_function_set_bind` Sets the bind function of the table function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_set_bind</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="nv">duckdb_table_function_bind_t</span> <span class="nv">bind </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function * `bind`: The bind function <br> #### `duckdb_table_function_set_init` Sets the init function of the table function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_set_init</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="nv">duckdb_table_function_init_t</span> <span class="nv">init </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function * `init`: The init function <br> #### `duckdb_table_function_set_local_init` Sets the thread-local init function of the table function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_set_local_init</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="nv">duckdb_table_function_init_t</span> <span class="nv">init </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function * `init`: The init function <br> #### `duckdb_table_function_set_function` Sets the main function of the table function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_set_function</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="nv">duckdb_table_function_t</span> <span class="nv">function </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function * `function`: The function <br> #### `duckdb_table_function_supports_projection_pushdown` Sets whether or not the given table function supports projection pushdown. If this is set to true, the system will provide a list of all required columns in the `init` stage through the `duckdb_init_get_column_count` and `duckdb_init_get_column_index` functions. If this is set to false (the default), the system will expect all columns to be projected. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_function_supports_projection_pushdown</span>(<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">table_function</span>,<span class="nv"> </span> <span class="kt">bool</span> <span class="nv">pushdown </span>); </code></pre></div></div> ##### Parameters * `table_function`: The table function * `pushdown`: True if the table function supports projection pushdown, false otherwise. <br> #### `duckdb_register_table_function` Register the table function object within the given connection. The function requires at least a name, a bind function, an init function and a main function. If the function is incomplete or a function with this name already exists DuckDBError is returned. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_register_table_function</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">con</span>,<span class="nv"> </span> <span class="kt">duckdb_table_function</span> <span class="nv">function </span>); </code></pre></div></div> ##### Parameters * `con`: The connection to register it in. * `function`: The function pointer ##### Return Value Whether or not the registration was successful. <br> #### `duckdb_bind_get_extra_info` Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_bind_get_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_bind_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The extra info <br> #### `duckdb_bind_add_result_column` Adds a result column to the output of the table function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_bind_add_result_column</span>(<span class="nv"> </span> <span class="kt">duckdb_bind_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">type </span>); </code></pre></div></div> ##### Parameters * `info`: The table function's bind info. * `name`: The column name. * `type`: The logical column type. <br> #### `duckdb_bind_get_parameter_count` Retrieves the number of regular (non-named) parameters to the function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_bind_get_parameter_count</span>(<span class="nv"> </span> <span class="kt">duckdb_bind_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The number of parameters <br> #### `duckdb_bind_get_parameter` Retrieves the parameter at the given index. The result must be destroyed with `duckdb_destroy_value`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_bind_get_parameter</span>(<span class="nv"> </span> <span class="kt">duckdb_bind_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `index`: The index of the parameter to get ##### Return Value The value of the parameter. Must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_bind_get_named_parameter` Retrieves a named parameter with the given name. The result must be destroyed with `duckdb_destroy_value`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_bind_get_named_parameter</span>(<span class="nv"> </span> <span class="kt">duckdb_bind_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `name`: The name of the parameter ##### Return Value The value of the parameter. Must be destroyed with `duckdb_destroy_value`. <br> #### `duckdb_bind_set_bind_data` Sets the user-provided bind data in the bind object. This object can be retrieved again during execution. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_bind_set_bind_data</span>(<span class="nv"> </span> <span class="kt">duckdb_bind_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">void</span> *<span class="nv">bind_data</span>,<span class="nv"> </span> <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `bind_data`: The bind data object. * `destroy`: The callback that will be called to destroy the bind data (if any) <br> #### `duckdb_bind_set_cardinality` Sets the cardinality estimate for the table function, used for optimization. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_bind_set_cardinality</span>(<span class="nv"> </span> <span class="kt">duckdb_bind_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">cardinality</span>,<span class="nv"> </span> <span class="kt">bool</span> <span class="nv">is_exact </span>); </code></pre></div></div> ##### Parameters * `info`: The bind data object. * `is_exact`: Whether or not the cardinality estimate is exact, or an approximation <br> #### `duckdb_bind_set_error` Report that an error has occurred while calling bind. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_bind_set_error</span>(<span class="nv"> </span> <span class="kt">duckdb_bind_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `error`: The error message <br> #### `duckdb_init_get_extra_info` Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_init_get_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_init_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The extra info <br> #### `duckdb_init_get_bind_data` Gets the bind data set by `duckdb_bind_set_bind_data` during the bind. Note that the bind data should be considered as read-only. For tracking state, use the init data instead. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_init_get_bind_data</span>(<span class="nv"> </span> <span class="kt">duckdb_init_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The bind data object <br> #### `duckdb_init_set_init_data` Sets the user-provided init data in the init object. This object can be retrieved again during execution. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_init_set_init_data</span>(<span class="nv"> </span> <span class="kt">duckdb_init_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">void</span> *<span class="nv">init_data</span>,<span class="nv"> </span> <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `init_data`: The init data object. * `destroy`: The callback that will be called to destroy the init data (if any) <br> #### `duckdb_init_get_column_count` Returns the number of projected columns. This function must be used if projection pushdown is enabled to figure out which columns to emit. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_init_get_column_count</span>(<span class="nv"> </span> <span class="kt">duckdb_init_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The number of projected columns. <br> #### `duckdb_init_get_column_index` Returns the column index of the projected column at the specified position. This function must be used if projection pushdown is enabled to figure out which columns to emit. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_init_get_column_index</span>(<span class="nv"> </span> <span class="kt">duckdb_init_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">column_index </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `column_index`: The index at which to get the projected column index, from 0..duckdb_init_get_column_count(info) ##### Return Value The column index of the projected column. <br> #### `duckdb_init_set_max_threads` Sets how many threads can process this table function in parallel (default: 1) ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_init_set_max_threads</span>(<span class="nv"> </span> <span class="kt">duckdb_init_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">max_threads </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `max_threads`: The maximum amount of threads that can process this table function <br> #### `duckdb_init_set_error` Report that an error has occurred while calling init. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_init_set_error</span>(<span class="nv"> </span> <span class="kt">duckdb_init_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `error`: The error message <br> #### `duckdb_function_get_extra_info` Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_function_get_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The extra info <br> #### `duckdb_function_get_bind_data` Gets the bind data set by `duckdb_bind_set_bind_data` during the bind. Note that the bind data should be considered as read-only. For tracking state, use the init data instead. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_function_get_bind_data</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The bind data object <br> #### `duckdb_function_get_init_data` Gets the init data set by `duckdb_init_set_init_data` during the init. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_function_get_init_data</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The init data object <br> #### `duckdb_function_get_local_init_data` Gets the thread-local init data set by `duckdb_init_set_init_data` during the local_init. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_function_get_local_init_data</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object ##### Return Value The init data object <br> #### `duckdb_function_set_error` Report that an error has occurred while executing the function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_function_set_error</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `error`: The error message <br> #### `duckdb_add_replacement_scan` Add a replacement scan definition to the specified database. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_add_replacement_scan</span>(<span class="nv"> </span> <span class="kt">duckdb_database</span> <span class="nv">db</span>,<span class="nv"> </span> <span class="nv">duckdb_replacement_callback_t</span> <span class="nv">replacement</span>,<span class="nv"> </span> <span class="kt">void</span> *<span class="nv">extra_data</span>,<span class="nv"> </span> <span class="nv">duckdb_delete_callback_t</span> <span class="nv">delete_callback </span>); </code></pre></div></div> ##### Parameters * `db`: The database object to add the replacement scan to * `replacement`: The replacement scan callback * `extra_data`: Extra data that is passed back into the specified callback * `delete_callback`: The delete callback to call on the extra data, if any <br> #### `duckdb_replacement_scan_set_function_name` Sets the replacement function name. If this function is called in the replacement callback, the replacement scan is performed. If it is not called, the replacement callback is not performed. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_replacement_scan_set_function_name</span>(<span class="nv"> </span> <span class="kt">duckdb_replacement_scan_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">function_name </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `function_name`: The function name to substitute. <br> #### `duckdb_replacement_scan_add_parameter` Adds a parameter to the replacement scan function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_replacement_scan_add_parameter</span>(<span class="nv"> </span> <span class="kt">duckdb_replacement_scan_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">parameter </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `parameter`: The parameter to add. <br> #### `duckdb_replacement_scan_set_error` Report that an error has occurred while executing the replacement scan. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_replacement_scan_set_error</span>(<span class="nv"> </span> <span class="kt">duckdb_replacement_scan_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error </span>); </code></pre></div></div> ##### Parameters * `info`: The info object * `error`: The error message <br> #### `duckdb_get_profiling_info` Returns the root node of the profiling information. Returns nullptr, if profiling is not enabled. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_profiling_info</span> <span class="nv">duckdb_get_profiling_info</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection </span>); </code></pre></div></div> ##### Parameters * `connection`: A connection object. ##### Return Value A profiling information object. <br> #### `duckdb_profiling_info_get_value` Returns the value of the metric of the current profiling info node. Returns nullptr, if the metric does not exist or is not enabled. Currently, the value holds a string, and you can retrieve the string by calling the corresponding function: char *duckdb_get_varchar(duckdb_value value). ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_profiling_info_get_value</span>(<span class="nv"> </span> <span class="kt">duckdb_profiling_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">key </span>); </code></pre></div></div> ##### Parameters * `info`: A profiling information object. * `key`: The name of the requested metric. ##### Return Value The value of the metric. Must be freed with `duckdb_destroy_value` <br> #### `duckdb_profiling_info_get_metrics` Returns the key-value metric map of this profiling node as a MAP duckdb_value. The individual elements are accessible via the duckdb_value MAP functions. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_profiling_info_get_metrics</span>(<span class="nv"> </span> <span class="kt">duckdb_profiling_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: A profiling information object. ##### Return Value The key-value metric map as a MAP duckdb_value. <br> #### `duckdb_profiling_info_get_child_count` Returns the number of children in the current profiling info node. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_profiling_info_get_child_count</span>(<span class="nv"> </span> <span class="kt">duckdb_profiling_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: A profiling information object. ##### Return Value The number of children in the current node. <br> #### `duckdb_profiling_info_get_child` Returns the child node at the specified index. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_profiling_info</span> <span class="nv">duckdb_profiling_info_get_child</span>(<span class="nv"> </span> <span class="kt">duckdb_profiling_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `info`: A profiling information object. * `index`: The index of the child node. ##### Return Value The child node at the specified index. <br> #### `duckdb_appender_create` Creates an appender object. Note that the object must be destroyed with `duckdb_appender_destroy`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_create</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">schema</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table</span>,<span class="nv"> </span> <span class="kt">duckdb_appender</span> *<span class="nv">out_appender </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection context to create the appender in. * `schema`: The schema of the table to append to, or `nullptr` for the default schema. * `table`: The table name to append to. * `out_appender`: The resulting appender object. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_appender_create_ext` Creates an appender object. Note that the object must be destroyed with `duckdb_appender_destroy`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_create_ext</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">catalog</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">schema</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table</span>,<span class="nv"> </span> <span class="kt">duckdb_appender</span> *<span class="nv">out_appender </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection context to create the appender in. * `catalog`: The catalog of the table to append to, or `nullptr` for the default catalog. * `schema`: The schema of the table to append to, or `nullptr` for the default schema. * `table`: The table name to append to. * `out_appender`: The resulting appender object. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_appender_column_count` Returns the number of columns that belong to the appender. If there is no active column list, then this equals the table's physical columns. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_appender_column_count</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to get the column count from. ##### Return Value The number of columns in the data chunks. <br> #### `duckdb_appender_column_type` Returns the type of the column at the specified index. This is either a type in the active column list, or the same type as a column in the receiving table. Note: The resulting type must be destroyed with `duckdb_destroy_logical_type`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_appender_column_type</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col_idx </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to get the column type from. * `col_idx`: The index of the column to get the type of. ##### Return Value The `duckdb_logical_type` of the column. <br> #### `duckdb_appender_error` Returns the error message associated with the given appender. If the appender has no error message, this returns `nullptr` instead. The error message should not be freed. It will be de-allocated when `duckdb_appender_destroy` is called. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_appender_error</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to get the error from. ##### Return Value The error message, or `nullptr` if there is none. <br> #### `duckdb_appender_flush` Flush the appender to the table, forcing the cache of the appender to be cleared. If flushing the data triggers a constraint violation or any other error, then all data is invalidated, and this function returns DuckDBError. It is not possible to append more values. Call duckdb_appender_error to obtain the error message followed by duckdb_appender_destroy to destroy the invalidated appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_flush</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to flush. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_appender_close` Closes the appender by flushing all intermediate states and closing it for further appends. If flushing the data triggers a constraint violation or any other error, then all data is invalidated, and this function returns DuckDBError. Call duckdb_appender_error to obtain the error message followed by duckdb_appender_destroy to destroy the invalidated appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_close</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to flush and close. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_appender_destroy` Closes the appender by flushing all intermediate states to the table and destroying it. By destroying it, this function de-allocates all memory associated with the appender. If flushing the data triggers a constraint violation, then all data is invalidated, and this function returns DuckDBError. Due to the destruction of the appender, it is no longer possible to obtain the specific error message with duckdb_appender_error. Therefore, call duckdb_appender_close before destroying the appender, if you need insights into the specific error. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_destroy</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> *<span class="nv">appender </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to flush, close and destroy. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_appender_add_column` Appends a column to the active column list of the appender. Immediately flushes all previous data. The active column list specifies all columns that are expected when flushing the data. Any non-active columns are filled with their default values, or NULL. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_add_column</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">name </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to add the column to. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_appender_clear_columns` Removes all columns from the active column list of the appender, resetting the appender to treat all columns as active. Immediately flushes all previous data. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_clear_columns</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to clear the columns from. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_appender_begin_row` A nop function, provided for backwards compatibility reasons. Does nothing. Only `duckdb_appender_end_row` is required. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_begin_row</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> <br> #### `duckdb_appender_end_row` Finish the current row of appends. After end_row is called, the next row can be appended. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_appender_end_row</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_append_default` Append a DEFAULT value (NULL if DEFAULT not available for column) to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_default</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> <br> #### `duckdb_append_default_to_chunk` Append a DEFAULT value, at the specified row and column, (NULL if DEFAULT not available for column) to the chunk created from the specified appender. The default value of the column must be a constant value. Non-deterministic expressions like nextval('seq') or random() are not supported. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_default_to_chunk</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">col</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to get the default value from. * `chunk`: The data chunk to append the default value to. * `col`: The chunk column index to append the default value to. * `row`: The chunk row index to append the default value to. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_append_bool` Append a bool value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_bool</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">bool</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_int8` Append an int8_t value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_int8</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">int8_t</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_int16` Append an int16_t value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_int16</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">int16_t</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_int32` Append an int32_t value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_int32</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">int32_t</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_int64` Append an int64_t value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_int64</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">int64_t</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_hugeint` Append a duckdb_hugeint value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_hugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_hugeint</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_uint8` Append a uint8_t value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_uint8</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">uint8_t</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_uint16` Append a uint16_t value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_uint16</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">uint16_t</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_uint32` Append a uint32_t value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_uint32</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">uint32_t</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_uint64` Append a uint64_t value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_uint64</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">uint64_t</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_uhugeint` Append a duckdb_uhugeint value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_uhugeint</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_uhugeint</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_float` Append a float value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_float</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">float</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_double` Append a double value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_double</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">double</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_date` Append a duckdb_date value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_date</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_date</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_time` Append a duckdb_time value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_time</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_time</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_timestamp` Append a duckdb_timestamp value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_timestamp</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_timestamp</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_interval` Append a duckdb_interval value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_interval</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_interval</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_varchar` Append a varchar value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_varchar</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">val </span>); </code></pre></div></div> <br> #### `duckdb_append_varchar_length` Append a varchar value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_varchar_length</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">val</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">length </span>); </code></pre></div></div> <br> #### `duckdb_append_blob` Append a blob value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_blob</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">void</span> *<span class="nv">data</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">length </span>); </code></pre></div></div> <br> #### `duckdb_append_null` Append a NULL value to the appender (of any type). ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_null</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender </span>); </code></pre></div></div> <br> #### `duckdb_append_value` Append a duckdb_value to the appender. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_value</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_value</span> <span class="nv">value </span>); </code></pre></div></div> <br> #### `duckdb_append_data_chunk` Appends a pre-filled data chunk to the specified appender. Attempts casting, if the data chunk types do not match the active appender types. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_append_data_chunk</span>(<span class="nv"> </span> <span class="kt">duckdb_appender</span> <span class="nv">appender</span>,<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk </span>); </code></pre></div></div> ##### Parameters * `appender`: The appender to append to. * `chunk`: The data chunk to append. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_table_description_create` Creates a table description object. Note that `duckdb_table_description_destroy` should always be called on the resulting table_description, even if the function returns `DuckDBError`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_table_description_create</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">schema</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table</span>,<span class="nv"> </span> <span class="nv">duckdb_table_description</span> *<span class="nv">out </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection context. * `schema`: The schema of the table, or `nullptr` for the default schema. * `table`: The table name. * `out`: The resulting table description object. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_table_description_create_ext` Creates a table description object. Note that `duckdb_table_description_destroy` must be called on the resulting table_description, even if the function returns `DuckDBError`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_table_description_create_ext</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">catalog</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">schema</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table</span>,<span class="nv"> </span> <span class="nv">duckdb_table_description</span> *<span class="nv">out </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection context. * `catalog`: The catalog (database) name of the table, or `nullptr` for the default catalog. * `schema`: The schema of the table, or `nullptr` for the default schema. * `table`: The table name. * `out`: The resulting table description object. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_table_description_destroy` Destroy the TableDescription object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_table_description_destroy</span>(<span class="nv"> </span> <span class="nv">duckdb_table_description</span> *<span class="nv">table_description </span>); </code></pre></div></div> ##### Parameters * `table_description`: The table_description to destroy. <br> #### `duckdb_table_description_error` Returns the error message associated with the given table_description. If the table_description has no error message, this returns `nullptr` instead. The error message should not be freed. It will be de-allocated when `duckdb_table_description_destroy` is called. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_table_description_error</span>(<span class="nv"> </span> <span class="nv">duckdb_table_description</span> <span class="nv">table_description </span>); </code></pre></div></div> ##### Parameters * `table_description`: The table_description to get the error from. ##### Return Value The error message, or `nullptr` if there is none. <br> #### `duckdb_column_has_default` Check if the column at 'index' index of the table has a DEFAULT expression. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_column_has_default</span>(<span class="nv"> </span> <span class="nv">duckdb_table_description</span> <span class="nv">table_description</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index</span>,<span class="nv"> </span> <span class="kt">bool</span> *<span class="nv">out </span>); </code></pre></div></div> ##### Parameters * `table_description`: The table_description to query. * `index`: The index of the column to query. * `out`: The out-parameter used to store the result. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_table_description_get_column_name` Obtain the column name at 'index'. The out result must be destroyed with `duckdb_free`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_table_description_get_column_name</span>(<span class="nv"> </span> <span class="nv">duckdb_table_description</span> <span class="nv">table_description</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">index </span>); </code></pre></div></div> ##### Parameters * `table_description`: The table_description to query. * `index`: The index of the column to query. ##### Return Value The column name. <br> #### `duckdb_query_arrow` > Warning Deprecation notice. This method is scheduled for removal in a future release. Executes a SQL query within a connection and stores the full (materialized) result in an arrow structure. If the query fails to execute, DuckDBError is returned and the error message can be retrieved by calling `duckdb_query_arrow_error`. Note that after running `duckdb_query_arrow`, `duckdb_destroy_arrow` must be called on the result object even if the query fails, otherwise the error stored within the result will not be freed correctly. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_query_arrow</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">query</span>,<span class="nv"> </span> <span class="kt">duckdb_arrow</span> *<span class="nv">out_result </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection to perform the query in. * `query`: The SQL query to run. * `out_result`: The query result. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_query_arrow_schema` > Warning Deprecation notice. This method is scheduled for removal in a future release. Fetch the internal arrow schema from the arrow result. Remember to call release on the respective ArrowSchema object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_query_arrow_schema</span>(<span class="nv"> </span> <span class="kt">duckdb_arrow</span> <span class="nv">result</span>,<span class="nv"> </span> <span class="kt">duckdb_arrow_schema</span> *<span class="nv">out_schema </span>); </code></pre></div></div> ##### Parameters * `result`: The result to fetch the schema from. * `out_schema`: The output schema. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_prepared_arrow_schema` > Warning Deprecation notice. This method is scheduled for removal in a future release. Fetch the internal arrow schema from the prepared statement. Remember to call release on the respective ArrowSchema object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_prepared_arrow_schema</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared</span>,<span class="nv"> </span> <span class="kt">duckdb_arrow_schema</span> *<span class="nv">out_schema </span>); </code></pre></div></div> ##### Parameters * `prepared`: The prepared statement to fetch the schema from. * `out_schema`: The output schema. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_result_arrow_array` > Warning Deprecation notice. This method is scheduled for removal in a future release. Convert a data chunk into an arrow struct array. Remember to call release on the respective ArrowArray object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_result_arrow_array</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> <span class="nv">result</span>,<span class="nv"> </span> <span class="kt">duckdb_data_chunk</span> <span class="nv">chunk</span>,<span class="nv"> </span> <span class="kt">duckdb_arrow_array</span> *<span class="nv">out_array </span>); </code></pre></div></div> ##### Parameters * `result`: The result object the data chunk have been fetched from. * `chunk`: The data chunk to convert. * `out_array`: The output array. <br> #### `duckdb_query_arrow_array` > Warning Deprecation notice. This method is scheduled for removal in a future release. Fetch an internal arrow struct array from the arrow result. Remember to call release on the respective ArrowArray object. This function can be called multiple time to get next chunks, which will free the previous out_array. So consume the out_array before calling this function again. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_query_arrow_array</span>(<span class="nv"> </span> <span class="kt">duckdb_arrow</span> <span class="nv">result</span>,<span class="nv"> </span> <span class="kt">duckdb_arrow_array</span> *<span class="nv">out_array </span>); </code></pre></div></div> ##### Parameters * `result`: The result to fetch the array from. * `out_array`: The output array. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_arrow_column_count` > Warning Deprecation notice. This method is scheduled for removal in a future release. Returns the number of columns present in the arrow result object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_arrow_column_count</span>(<span class="nv"> </span> <span class="kt">duckdb_arrow</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object. ##### Return Value The number of columns present in the result object. <br> #### `duckdb_arrow_row_count` > Warning Deprecation notice. This method is scheduled for removal in a future release. Returns the number of rows present in the arrow result object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_arrow_row_count</span>(<span class="nv"> </span> <span class="kt">duckdb_arrow</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object. ##### Return Value The number of rows present in the result object. <br> #### `duckdb_arrow_rows_changed` > Warning Deprecation notice. This method is scheduled for removal in a future release. Returns the number of rows changed by the query stored in the arrow result. This is relevant only for INSERT/UPDATE/DELETE queries. For other queries the rows_changed will be 0. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_arrow_rows_changed</span>(<span class="nv"> </span> <span class="kt">duckdb_arrow</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object. ##### Return Value The number of rows changed. <br> #### `duckdb_query_arrow_error` > Warning Deprecation notice. This method is scheduled for removal in a future release. Returns the error message contained within the result. The error is only set if `duckdb_query_arrow` returns `DuckDBError`. The error message should not be freed. It will be de-allocated when `duckdb_destroy_arrow` is called. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">const</span> <span class="kt">char</span> *<span class="nv">duckdb_query_arrow_error</span>(<span class="nv"> </span> <span class="kt">duckdb_arrow</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the error from. ##### Return Value The error of the result. <br> #### `duckdb_destroy_arrow` > Warning Deprecation notice. This method is scheduled for removal in a future release. Closes the result and de-allocates all memory allocated for the arrow result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_arrow</span>(<span class="nv"> </span> <span class="kt">duckdb_arrow</span> *<span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result to destroy. <br> #### `duckdb_destroy_arrow_stream` > Warning Deprecation notice. This method is scheduled for removal in a future release. Releases the arrow array stream and de-allocates its memory. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_arrow_stream</span>(<span class="nv"> </span> <span class="nv">duckdb_arrow_stream</span> *<span class="nv">stream_p </span>); </code></pre></div></div> ##### Parameters * `stream_p`: The arrow array stream to destroy. <br> #### `duckdb_execute_prepared_arrow` > Warning Deprecation notice. This method is scheduled for removal in a future release. Executes the prepared statement with the given bound parameters, and returns an arrow query result. Note that after running `duckdb_execute_prepared_arrow`, `duckdb_destroy_arrow` must be called on the result object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_execute_prepared_arrow</span>(<span class="nv"> </span> <span class="kt">duckdb_prepared_statement</span> <span class="nv">prepared_statement</span>,<span class="nv"> </span> <span class="kt">duckdb_arrow</span> *<span class="nv">out_result </span>); </code></pre></div></div> ##### Parameters * `prepared_statement`: The prepared statement to execute. * `out_result`: The query result. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_arrow_scan` > Warning Deprecation notice. This method is scheduled for removal in a future release. Scans the Arrow stream and creates a view with the given name. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_arrow_scan</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table_name</span>,<span class="nv"> </span> <span class="nv">duckdb_arrow_stream</span> <span class="nv">arrow </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection on which to execute the scan. * `table_name`: Name of the temporary view to create. * `arrow`: Arrow stream wrapper. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_arrow_array_scan` > Warning Deprecation notice. This method is scheduled for removal in a future release. Scans the Arrow array and creates a view with the given name. Note that after running `duckdb_arrow_array_scan`, `duckdb_destroy_arrow_stream` must be called on the out stream. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_arrow_array_scan</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">connection</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">table_name</span>,<span class="nv"> </span> <span class="kt">duckdb_arrow_schema</span> <span class="nv">arrow_schema</span>,<span class="nv"> </span> <span class="kt">duckdb_arrow_array</span> <span class="nv">arrow_array</span>,<span class="nv"> </span> <span class="nv">duckdb_arrow_stream</span> *<span class="nv">out_stream </span>); </code></pre></div></div> ##### Parameters * `connection`: The connection on which to execute the scan. * `table_name`: Name of the temporary view to create. * `arrow_schema`: Arrow schema wrapper. * `arrow_array`: Arrow array wrapper. * `out_stream`: Output array stream that wraps around the passed schema, for releasing/deleting once done. ##### Return Value `DuckDBSuccess` on success or `DuckDBError` on failure. <br> #### `duckdb_execute_tasks` Execute DuckDB tasks on this thread. Will return after `max_tasks` have been executed, or if there are no more tasks present. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_execute_tasks</span>(<span class="nv"> </span> <span class="kt">duckdb_database</span> <span class="nv">database</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">max_tasks </span>); </code></pre></div></div> ##### Parameters * `database`: The database object to execute tasks for * `max_tasks`: The maximum amount of tasks to execute <br> #### `duckdb_create_task_state` Creates a task state that can be used with duckdb_execute_tasks_state to execute tasks until `duckdb_finish_execution` is called on the state. `duckdb_destroy_state` must be called on the result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_task_state</span> <span class="nv">duckdb_create_task_state</span>(<span class="nv"> </span> <span class="kt">duckdb_database</span> <span class="nv">database </span>); </code></pre></div></div> ##### Parameters * `database`: The database object to create the task state for ##### Return Value The task state that can be used with duckdb_execute_tasks_state. <br> #### `duckdb_execute_tasks_state` Execute DuckDB tasks on this thread. The thread will keep on executing tasks forever, until duckdb_finish_execution is called on the state. Multiple threads can share the same duckdb_task_state. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_execute_tasks_state</span>(<span class="nv"> </span> <span class="kt">duckdb_task_state</span> <span class="nv">state </span>); </code></pre></div></div> ##### Parameters * `state`: The task state of the executor <br> #### `duckdb_execute_n_tasks_state` Execute DuckDB tasks on this thread. The thread will keep on executing tasks until either duckdb_finish_execution is called on the state, max_tasks tasks have been executed or there are no more tasks to be executed. Multiple threads can share the same duckdb_task_state. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_execute_n_tasks_state</span>(<span class="nv"> </span> <span class="kt">duckdb_task_state</span> <span class="nv">state</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">max_tasks </span>); </code></pre></div></div> ##### Parameters * `state`: The task state of the executor * `max_tasks`: The maximum amount of tasks to execute ##### Return Value The amount of tasks that have actually been executed <br> #### `duckdb_finish_execution` Finish execution on a specific task. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_finish_execution</span>(<span class="nv"> </span> <span class="kt">duckdb_task_state</span> <span class="nv">state </span>); </code></pre></div></div> ##### Parameters * `state`: The task state to finish execution <br> #### `duckdb_task_state_is_finished` Check if the provided duckdb_task_state has finished execution ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_task_state_is_finished</span>(<span class="nv"> </span> <span class="kt">duckdb_task_state</span> <span class="nv">state </span>); </code></pre></div></div> ##### Parameters * `state`: The task state to inspect ##### Return Value Whether or not duckdb_finish_execution has been called on the task state <br> #### `duckdb_destroy_task_state` Destroys the task state returned from duckdb_create_task_state. Note that this should not be called while there is an active duckdb_execute_tasks_state running on the task state. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_task_state</span>(<span class="nv"> </span> <span class="kt">duckdb_task_state</span> <span class="nv">state </span>); </code></pre></div></div> ##### Parameters * `state`: The task state to clean up <br> #### `duckdb_execution_is_finished` Returns true if the execution of the current query is finished. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_execution_is_finished</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">con </span>); </code></pre></div></div> ##### Parameters * `con`: The connection on which to check <br> #### `duckdb_stream_fetch_chunk` > Warning Deprecation notice. This method is scheduled for removal in a future release. Fetches a data chunk from the (streaming) duckdb_result. This function should be called repeatedly until the result is exhausted. The result must be destroyed with `duckdb_destroy_data_chunk`. This function can only be used on duckdb_results created with 'duckdb_pending_prepared_streaming' If this function is used, none of the other result functions can be used and vice versa (i.e., this function cannot be mixed with the legacy result functions or the materialized result functions). It is not known beforehand how many chunks will be returned by this result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_data_chunk</span> <span class="nv">duckdb_stream_fetch_chunk</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the data chunk from. ##### Return Value The resulting data chunk. Returns `NULL` if the result has an error. <br> #### `duckdb_fetch_chunk` Fetches a data chunk from a duckdb_result. This function should be called repeatedly until the result is exhausted. The result must be destroyed with `duckdb_destroy_data_chunk`. It is not known beforehand how many chunks will be returned by this result. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_data_chunk</span> <span class="nv">duckdb_fetch_chunk</span>(<span class="nv"> </span> <span class="kt">duckdb_result</span> <span class="nv">result </span>); </code></pre></div></div> ##### Parameters * `result`: The result object to fetch the data chunk from. ##### Return Value The resulting data chunk. Returns `NULL` if the result has an error. <br> #### `duckdb_create_cast_function` Creates a new cast function object. ##### Return Value The cast function object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_cast_function</span> <span class="nv">duckdb_create_cast_function</span>(<span class="nv"> </span> <span class="nv"> </span>); </code></pre></div></div> <br> #### `duckdb_cast_function_set_source_type` Sets the source type of the cast function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_cast_function_set_source_type</span>(<span class="nv"> </span> <span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">source_type </span>); </code></pre></div></div> ##### Parameters * `cast_function`: The cast function object. * `source_type`: The source type to set. <br> #### `duckdb_cast_function_set_target_type` Sets the target type of the cast function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_cast_function_set_target_type</span>(<span class="nv"> </span> <span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>,<span class="nv"> </span> <span class="kt">duckdb_logical_type</span> <span class="nv">target_type </span>); </code></pre></div></div> ##### Parameters * `cast_function`: The cast function object. * `target_type`: The target type to set. <br> #### `duckdb_cast_function_set_implicit_cast_cost` Sets the "cost" of implicitly casting the source type to the target type using this function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_cast_function_set_implicit_cast_cost</span>(<span class="nv"> </span> <span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>,<span class="nv"> </span> <span class="kt">int64_t</span> <span class="nv">cost </span>); </code></pre></div></div> ##### Parameters * `cast_function`: The cast function object. * `cost`: The cost to set. <br> #### `duckdb_cast_function_set_function` Sets the actual cast function to use. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_cast_function_set_function</span>(<span class="nv"> </span> <span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>,<span class="nv"> </span> <span class="nv">duckdb_cast_function_t</span> <span class="nv">function </span>); </code></pre></div></div> ##### Parameters * `cast_function`: The cast function object. * `function`: The function to set. <br> #### `duckdb_cast_function_set_extra_info` Assigns extra information to the cast function that can be fetched during execution, etc. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_cast_function_set_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_cast_function</span> <span class="nv">cast_function</span>,<span class="nv"> </span> <span class="kt">void</span> *<span class="nv">extra_info</span>,<span class="nv"> </span> <span class="nv">duckdb_delete_callback_t</span> <span class="nv">destroy </span>); </code></pre></div></div> ##### Parameters * `extra_info`: The extra information * `destroy`: The callback that will be called to destroy the extra information (if any) <br> #### `duckdb_cast_function_get_extra_info` Retrieves the extra info of the function as set in `duckdb_cast_function_set_extra_info`. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> *<span class="nv">duckdb_cast_function_get_extra_info</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object. ##### Return Value The extra info. <br> #### `duckdb_cast_function_get_cast_mode` Get the cast execution mode from the given function info. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_cast_mode</span> <span class="nv">duckdb_cast_function_get_cast_mode</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info </span>); </code></pre></div></div> ##### Parameters * `info`: The info object. ##### Return Value The cast mode. <br> #### `duckdb_cast_function_set_error` Report that an error has occurred while executing the cast function. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_cast_function_set_error</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error </span>); </code></pre></div></div> ##### Parameters * `info`: The info object. * `error`: The error message. <br> #### `duckdb_cast_function_set_row_error` Report that an error has occurred while executing the cast function, setting the corresponding output row to NULL. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_cast_function_set_row_error</span>(<span class="nv"> </span> <span class="kt">duckdb_function_info</span> <span class="nv">info</span>,<span class="nv"> </span> <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">error</span>,<span class="nv"> </span> <span class="kt">idx_t</span> <span class="nv">row</span>,<span class="nv"> </span> <span class="kt">duckdb_vector</span> <span class="nv">output </span>); </code></pre></div></div> ##### Parameters * `info`: The info object. * `error`: The error message. * `row`: The index of the row within the output vector to set to NULL. * `output`: The output vector. <br> #### `duckdb_register_cast_function` Registers a cast function within the given connection. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_state</span> <span class="nv">duckdb_register_cast_function</span>(<span class="nv"> </span> <span class="kt">duckdb_connection</span> <span class="nv">con</span>,<span class="nv"> </span> <span class="kt">duckdb_cast_function</span> <span class="nv">cast_function </span>); </code></pre></div></div> ##### Parameters * `con`: The connection to use. * `cast_function`: The cast function to register. ##### Return Value Whether or not the registration was successful. <br> #### `duckdb_destroy_cast_function` Destroys the cast function object. ##### Syntax <div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_cast_function</span>(<span class="nv"> </span> <span class="kt">duckdb_cast_function</span> *<span class="nv">cast_function </span>); </code></pre></div></div> ##### Parameters * `cast_function`: The cast function object. <br>