diff --git a/src/include/mysql_result.hpp b/src/include/mysql_result.hpp index 1d74ac3..9473bf0 100644 --- a/src/include/mysql_result.hpp +++ b/src/include/mysql_result.hpp @@ -38,6 +38,7 @@ class MySQLResult { DataChunk &NextChunk(); bool Next(); + bool Exhausted(); idx_t AffectedRows(); const vector &Fields(); diff --git a/src/mysql_result.cpp b/src/mysql_result.cpp index 2060e47..8ba6bd7 100644 --- a/src/mysql_result.cpp +++ b/src/mysql_result.cpp @@ -133,6 +133,10 @@ DataChunk &MySQLResult::NextChunk() { return this->data_chunk; } +bool MySQLResult::Exhausted() { + return this->exhausted; +} + bool MySQLResult::FetchNext() { for (auto &f : fields) { #ifdef DEBUG diff --git a/src/mysql_scanner.cpp b/src/mysql_scanner.cpp index 45b4505..dc159d3 100644 --- a/src/mysql_scanner.cpp +++ b/src/mysql_scanner.cpp @@ -77,6 +77,11 @@ static unique_ptr MySQLInitLocalState(ExecutionContext static void MySQLScan(ClientContext &context, TableFunctionInput &data, DataChunk &output) { auto &gstate = data.global_state->Cast(); + if (gstate.result->Exhausted()) { + output.SetCardinality(0); + return; + } + DataChunk &res_chunk = gstate.result->NextChunk(); D_ASSERT(output.ColumnCount() == res_chunk.ColumnCount()); string error;