31 lines
762 B
C++
31 lines
762 B
C++
#include "capi_tester.hpp"
|
|
#include "duckdb.h"
|
|
|
|
using namespace duckdb;
|
|
using namespace std;
|
|
|
|
TEST_CASE("Test pending statements in C API", "[capi]") {
|
|
CAPITester tester;
|
|
CAPIPrepared prepared;
|
|
CAPIPending pending;
|
|
duckdb::unique_ptr<CAPIResult> result;
|
|
|
|
// open the database in in-memory mode
|
|
REQUIRE(tester.OpenDatabase(nullptr));
|
|
REQUIRE(prepared.Prepare(tester, "SELECT SUM(i) FROM range(1000000) tbl(i)"));
|
|
REQUIRE(pending.Pending(prepared));
|
|
|
|
while (true) {
|
|
auto state = pending.ExecuteTask();
|
|
REQUIRE(state != DUCKDB_PENDING_ERROR);
|
|
if (duckdb_pending_execution_is_finished(state)) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
result = pending.Execute();
|
|
REQUIRE(result);
|
|
REQUIRE(!result->HasError());
|
|
REQUIRE(result->Fetch<int64_t>(0, 0) == 499999500000LL);
|
|
}
|