45742 {
45743 if (!stream->release) {
45744 return -1;
45745 }
45748 if (!my_stream->column_types.empty()) {
45749 try {
45750 ArrowConverter::ToArrowSchema(out, my_stream->column_types, my_stream->column_names,
45751 my_stream->result->client_properties);
45752 } catch (std::runtime_error &e) {
45753 my_stream->last_error = ErrorData(e);
45754 return -1;
45755 }
45756 return 0;
45757 }
45758
45759 auto &result = *my_stream->result;
45760 if (result.HasError()) {
45761 my_stream->last_error = result.GetErrorObject();
45762 return -1;
45763 }
45764 if (result.type == QueryResultType::STREAM_RESULT) {
45765 auto &stream_result = result.Cast<StreamQueryResult>();
45766 if (!stream_result.IsOpen()) {
45767 my_stream->last_error = ErrorData("Query Stream is closed");
45768 return -1;
45769 }
45770 }
45771 if (my_stream->column_types.empty()) {
45772 my_stream->column_types = result.types;
45773 my_stream->column_names = result.names;
45774 }
45775 try {
45776 ArrowConverter::ToArrowSchema(out, my_stream->column_types, my_stream->column_names,
45777 my_stream->result->client_properties);
45778 } catch (std::runtime_error &e) {
45779 my_stream->last_error = ErrorData(e);
45780 return -1;
45781 }
45782 return 0;
45783}
ResultArrowArrayStreamWrapper(unique_ptr< QueryResult > result, idx_t batch_size)
Definition duckdb.cpp:45847
void(* release)(struct ArrowSchema *)
Release callback.
Definition duckdb.hpp:11274