diff --git a/c/cmake_modules/AdbcDefines.cmake b/c/cmake_modules/AdbcDefines.cmake index 69a8c1aa82..8c9c37ee61 100644 --- a/c/cmake_modules/AdbcDefines.cmake +++ b/c/cmake_modules/AdbcDefines.cmake @@ -60,8 +60,8 @@ if(CXX_LINKER_SUPPORTS_VERSION_SCRIPT) endif() # Set common build options +string(TOLOWER "${CMAKE_BUILD_TYPE}" _lower_build_type) if("${ADBC_BUILD_WARNING_LEVEL}" STREQUAL "") - string(TOLOWER "${CMAKE_BUILD_TYPE}" _lower_build_type) if("${_lower_build_type}" STREQUAL "release") set(ADBC_BUILD_WARNING_LEVEL "PRODUCTION") else() @@ -92,6 +92,26 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" -Werror -Wno-unused-parameter) set(ADBC_C_CXX_FLAGS_PRODUCTION -Wall) + + if(NOT CMAKE_C_FLAGS_DEBUG MATCHES "-O") + string(APPEND CMAKE_C_FLAGS_DEBUG " -Og") + endif() + if(NOT CMAKE_CXX_FLAGS_DEBUG MATCHES "-O") + string(APPEND CMAKE_CXX_FLAGS_DEBUG " -Og") + endif() + + if(NOT CMAKE_C_FLAGS_DEBUG MATCHES "-g") + string(APPEND CMAKE_C_FLAGS_DEBUG " -g3") + endif() + if(NOT CMAKE_CXX_FLAGS_DEBUG MATCHES "-g") + string(APPEND CMAKE_CXX_FLAGS_DEBUG " -g3") + endif() + if(NOT CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES "-g") + string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -g3") + endif() + if(NOT CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES "-g") + string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -g3") + endif() else() message(WARNING "Unknown compiler: ${CMAKE_CXX_COMPILER_ID}") endif() diff --git a/c/driver/sqlite/sqlite.c b/c/driver/sqlite/sqlite.c index 87390ce351..83d2d61106 100644 --- a/c/driver/sqlite/sqlite.c +++ b/c/driver/sqlite/sqlite.c @@ -1584,7 +1584,7 @@ AdbcStatusCode SqliteStatementGetParameterSchema(struct AdbcStatement* statement ArrowSchemaInit(schema); CHECK_NA(INTERNAL, ArrowSchemaSetType(schema, NANOARROW_TYPE_STRUCT), error); CHECK_NA(INTERNAL, ArrowSchemaAllocateChildren(schema, num_params), error); - char buffer[11]; + char buffer[12]; for (int i = 0; i < num_params; i++) { const char* name = sqlite3_bind_parameter_name(stmt->stmt, i + 1); if (name == NULL) { diff --git a/c/validation/adbc_validation_statement.cc b/c/validation/adbc_validation_statement.cc index 7d24aac02e..59f3f3f9a3 100644 --- a/c/validation/adbc_validation_statement.cc +++ b/c/validation/adbc_validation_statement.cc @@ -2591,10 +2591,18 @@ void StatementTest::TestConcurrentStatements() { ASSERT_NO_FATAL_FAILURE(reader1.GetSchema()); } +struct ADBC_EXPORT AdbcError100 { + char* message; + int32_t vendor_code; + char sqlstate[5]; + void (*release)(struct AdbcError100* error); +}; + // Test that an ADBC 1.0.0-sized error still works void StatementTest::TestErrorCompatibility() { + static_assert(sizeof(AdbcError100) == ADBC_ERROR_1_0_0_SIZE, "Wrong size"); // XXX: sketchy cast - auto* error = static_cast(malloc(ADBC_ERROR_1_0_0_SIZE)); + auto* error = reinterpret_cast(malloc(ADBC_ERROR_1_0_0_SIZE)); std::memset(error, 0, ADBC_ERROR_1_0_0_SIZE); ASSERT_THAT(AdbcStatementNew(&connection, &statement, error), IsOkStatus(error)); @@ -2605,7 +2613,8 @@ void StatementTest::TestErrorCompatibility() { ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value, &reader.rows_affected, error), ::testing::Not(IsOkStatus(error))); - error->release(error); + auto* old_error = reinterpret_cast(error); + old_error->release(old_error); free(error); }