| 1 | #include "duckdb/main/capi/capi_internal.hpp" |
|---|---|
| 2 | #include "duckdb/common/types/timestamp.hpp" |
| 3 | #include "duckdb/common/allocator.hpp" |
| 4 | |
| 5 | duckdb_data_chunk duckdb_stream_fetch_chunk(duckdb_result result) { |
| 6 | if (!result.internal_data) { |
| 7 | return nullptr; |
| 8 | } |
| 9 | auto &result_data = *((duckdb::DuckDBResultData *)result.internal_data); |
| 10 | if (result_data.result_set_type == duckdb::CAPIResultSetType::CAPI_RESULT_TYPE_DEPRECATED) { |
| 11 | return nullptr; |
| 12 | } |
| 13 | if (result_data.result->type != duckdb::QueryResultType::STREAM_RESULT) { |
| 14 | // We can only fetch from a StreamQueryResult |
| 15 | return nullptr; |
| 16 | } |
| 17 | result_data.result_set_type = duckdb::CAPIResultSetType::CAPI_RESULT_TYPE_STREAMING; |
| 18 | auto &streaming = (duckdb::StreamQueryResult &)*result_data.result; |
| 19 | if (!streaming.IsOpen()) { |
| 20 | return nullptr; |
| 21 | } |
| 22 | // FetchRaw ? Do we care about flattening them? |
| 23 | auto chunk = streaming.Fetch(); |
| 24 | return reinterpret_cast<duckdb_data_chunk>(chunk.release()); |
| 25 | } |
| 26 |