| 32 | class ADBCTestDatabase { |
| 33 | public: |
| 34 | explicit ADBCTestDatabase(const string &path_parameter = ":memory:") { |
| 35 | InitializeADBCError(&adbc_error); |
| 36 | if (path_parameter != ":memory:") { |
| 37 | path = TestCreatePath(path_parameter); |
| 38 | } else { |
| 39 | path = path_parameter; |
| 40 | } |
| 41 | REQUIRE(duckdb_lib); |
| 42 | REQUIRE(SUCCESS(AdbcDatabaseNew(&adbc_database, &adbc_error))); |
| 43 | REQUIRE(SUCCESS(AdbcDatabaseSetOption(&adbc_database, "driver", duckdb_lib, &adbc_error))); |
| 44 | REQUIRE(SUCCESS(AdbcDatabaseSetOption(&adbc_database, "entrypoint", "duckdb_adbc_init", &adbc_error))); |
| 45 | REQUIRE(SUCCESS(AdbcDatabaseSetOption(&adbc_database, "path", path.c_str(), &adbc_error))); |
| 46 | |
| 47 | REQUIRE(SUCCESS(AdbcDatabaseInit(&adbc_database, &adbc_error))); |
| 48 | |
| 49 | REQUIRE(SUCCESS(AdbcConnectionNew(&adbc_connection, &adbc_error))); |
| 50 | REQUIRE(SUCCESS(AdbcConnectionInit(&adbc_connection, &adbc_database, &adbc_error))); |
| 51 | // Create a separate connection for ingest operations to avoid streaming conflicts. |
| 52 | // Using the same connection for both streaming query results and ingest would cause issues |
| 53 | // because the streaming result holds the ClientContext lock. |
| 54 | REQUIRE(SUCCESS(AdbcConnectionNew(&adbc_connection_ingest, &adbc_error))); |
| 55 | REQUIRE(SUCCESS(AdbcConnectionInit(&adbc_connection_ingest, &adbc_database, &adbc_error))); |
| 56 | arrow_stream.release = nullptr; |
| 57 | arrow_stream_ingest.release = nullptr; |
| 58 | } |
| 59 | |
| 60 | ~ADBCTestDatabase() { |
| 61 | if (arrow_stream.release) { |
nothing calls this directly
no test coverage detected