|
19 | 19 | // with windows.h |
20 | 20 | #include "arrow/flight/sql/odbc/odbc_impl/flight_sql_connection.h" |
21 | 21 |
|
| 22 | +#include "arrow/compute/api.h" |
22 | 23 | #include "arrow/flight/sql/odbc/tests/odbc_test_suite.h" |
23 | 24 |
|
24 | 25 | // For DSN registration |
@@ -82,12 +83,28 @@ class OdbcTestEnvironment : public ::testing::Environment { |
82 | 83 | } |
83 | 84 | }; |
84 | 85 |
|
| 86 | +#ifdef _WIN32 |
| 87 | +// A global test "environment", to ensure Arrow compute kernel functions are registered |
| 88 | +class ComputeKernelEnvironment : public ::testing::Environment { |
| 89 | + public: |
| 90 | + void SetUp() override { ASSERT_OK(arrow::compute::Initialize()); } |
| 91 | +}; |
| 92 | + |
| 93 | +::testing::Environment* compute_kernel_env = |
| 94 | + ::testing::AddGlobalTestEnvironment(new ComputeKernelEnvironment); |
| 95 | +#endif // _WIN32 |
| 96 | + |
85 | 97 | ::testing::Environment* mock_server_env = |
86 | 98 | ::testing::AddGlobalTestEnvironment(new MockServerEnvironment); |
87 | 99 |
|
88 | 100 | ::testing::Environment* odbc_test_env = |
89 | 101 | ::testing::AddGlobalTestEnvironment(new OdbcTestEnvironment); |
90 | 102 |
|
| 103 | +SQLHENV FlightSQLOdbcEnvConnHandleRemoteTestBase::env_h = SQL_NULL_HENV; |
| 104 | +SQLHDBC FlightSQLOdbcEnvConnHandleRemoteTestBase::conn_h = SQL_NULL_HDBC; |
| 105 | +SQLHENV FlightSQLOdbcEnvConnHandleMockTestBase::env_h = SQL_NULL_HENV; |
| 106 | +SQLHDBC FlightSQLOdbcEnvConnHandleMockTestBase::conn_h = SQL_NULL_HDBC; |
| 107 | + |
91 | 108 | void ODBCTestBase::AllocEnvConnHandles(SQLHENV& env_handle, SQLHDBC& conn_handle, |
92 | 109 | SQLINTEGER odbc_ver) { |
93 | 110 | // Allocate an environment handle |
@@ -250,20 +267,19 @@ void FlightSQLOdbcEnvConnHandleRemoteTestBase::SetUpTestSuite() { |
250 | 267 | return; |
251 | 268 | } |
252 | 269 |
|
253 | | - AllocEnvConnHandles(remote_non_connection_handles.env, |
254 | | - remote_non_connection_handles.conn); |
255 | | - env = remote_non_connection_handles.env; |
256 | | - conn = remote_non_connection_handles.conn; |
257 | | - stmt = remote_non_connection_handles.stmt; |
| 270 | + env_h = SQL_NULL_HENV; |
| 271 | + conn_h = SQL_NULL_HDBC; |
| 272 | + AllocEnvConnHandles(env_h, conn_h); |
| 273 | + env = env_h; |
| 274 | + conn = conn_h; |
258 | 275 | } |
259 | 276 |
|
260 | 277 | void FlightSQLOdbcEnvConnHandleRemoteTestBase::TearDownTestSuite() { |
261 | 278 | if (!RunningRemoteTests()) { |
262 | 279 | return; |
263 | 280 | } |
264 | 281 |
|
265 | | - FreeEnvConnHandles(remote_non_connection_handles.env, |
266 | | - remote_non_connection_handles.conn); |
| 282 | + FreeEnvConnHandles(env_h, conn_h); |
267 | 283 | } |
268 | 284 |
|
269 | 285 | std::string FindTokenInCallHeaders(const CallHeaders& incoming_headers) { |
@@ -446,14 +462,15 @@ void FlightSQLOdbcV2MockTestBase::SetUpTestSuite() { |
446 | 462 | } |
447 | 463 |
|
448 | 464 | void FlightSQLOdbcEnvConnHandleMockTestBase::SetUpTestSuite() { |
449 | | - AllocEnvConnHandles(mock_non_connection_handles.env, mock_non_connection_handles.conn); |
450 | | - env = mock_non_connection_handles.env; |
451 | | - conn = mock_non_connection_handles.conn; |
452 | | - stmt = mock_non_connection_handles.stmt; |
| 465 | + env_h = SQL_NULL_HENV; |
| 466 | + conn_h = SQL_NULL_HDBC; |
| 467 | + AllocEnvConnHandles(env_h, conn_h); |
| 468 | + env = env_h; |
| 469 | + conn = conn_h; |
453 | 470 | } |
454 | 471 |
|
455 | 472 | void FlightSQLOdbcEnvConnHandleMockTestBase::TearDownTestSuite() { |
456 | | - FreeEnvConnHandles(mock_non_connection_handles.env, mock_non_connection_handles.conn); |
| 473 | + FreeEnvConnHandles(env_h, conn_h); |
457 | 474 | } |
458 | 475 |
|
459 | 476 | bool CompareConnPropertyMap(Connection::ConnPropertyMap map1, |
|
0 commit comments