mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-04 03:52:56 +00:00
## Problem Introducing pg_duckdb caused a conflict with pg_mooncake. Both use libduckdb.so in different versions. ## Summary of changes - Rename the libduckdb.so to libduckdb_pg_duckdb.so in the context of pg_duckdb so that it doesn't conflict with libduckdb.so referenced by pg_mooncake. - use a version map to rename the duckdb symbols to a version specific name - DUCKDB_1.1.3 for pg_mooncake - DUCKDB_1.2.0 for pg_duckdb For the concept of version maps see - https://www.man7.org/conf/lca2006/shared_libraries/slide19a.html - https://peeterjoot.com/2019/09/20/an-example-of-linux-glibc-symbol-versioning/ - https://akkadia.org/drepper/dsohowto.pdf
68 lines
2.2 KiB
Diff
68 lines
2.2 KiB
Diff
diff --git a/libduckdb_pg_duckdb.map b/libduckdb_pg_duckdb.map
|
|
new file mode 100644
|
|
index 0000000000..0872978b48
|
|
--- /dev/null
|
|
+++ b/libduckdb_pg_duckdb.map
|
|
@@ -0,0 +1,6 @@
|
|
+DUCKDB_1.2.0 {
|
|
+ global:
|
|
+ *duckdb*;
|
|
+ local:
|
|
+ *;
|
|
+};
|
|
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
|
index 58adef3fc0..2c522f91be 100644
|
|
--- a/src/CMakeLists.txt
|
|
+++ b/src/CMakeLists.txt
|
|
@@ -59,7 +59,7 @@ endfunction()
|
|
|
|
if(AMALGAMATION_BUILD)
|
|
|
|
- add_library(duckdb SHARED "${PROJECT_SOURCE_DIR}/src/amalgamation/duckdb.cpp")
|
|
+ add_library(duckdb_pg_duckdb SHARED "${PROJECT_SOURCE_DIR}/src/amalgamation/duckdb.cpp")
|
|
target_link_libraries(duckdb ${DUCKDB_SYSTEM_LIBS})
|
|
link_threads(duckdb)
|
|
link_extension_libraries(duckdb)
|
|
@@ -109,7 +109,7 @@ else()
|
|
duckdb_yyjson
|
|
duckdb_zstd)
|
|
|
|
- add_library(duckdb SHARED ${ALL_OBJECT_FILES})
|
|
+ add_library(duckdb_pg_duckdb SHARED ${ALL_OBJECT_FILES})
|
|
|
|
if(WIN32 AND NOT MINGW)
|
|
ensure_variable_is_number(DUCKDB_MAJOR_VERSION RC_MAJOR_VERSION)
|
|
@@ -131,9 +131,11 @@ else()
|
|
target_sources(duckdb PRIVATE version.rc)
|
|
endif()
|
|
|
|
- target_link_libraries(duckdb ${DUCKDB_LINK_LIBS})
|
|
- link_threads(duckdb)
|
|
- link_extension_libraries(duckdb)
|
|
+ target_link_libraries(duckdb_pg_duckdb ${DUCKDB_LINK_LIBS})
|
|
+ link_threads(duckdb_pg_duckdb)
|
|
+ link_extension_libraries(duckdb_pg_duckdb)
|
|
+ target_link_options(duckdb_pg_duckdb PRIVATE
|
|
+ -Wl,--version-script=${CMAKE_SOURCE_DIR}/libduckdb_pg_duckdb.map)
|
|
|
|
add_library(duckdb_static STATIC ${ALL_OBJECT_FILES})
|
|
target_link_libraries(duckdb_static ${DUCKDB_LINK_LIBS})
|
|
@@ -141,7 +143,7 @@ else()
|
|
link_extension_libraries(duckdb_static)
|
|
|
|
target_include_directories(
|
|
- duckdb PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
+ duckdb_pg_duckdb PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
|
|
target_include_directories(
|
|
@@ -161,7 +163,7 @@ else()
|
|
endif()
|
|
|
|
install(
|
|
- TARGETS duckdb duckdb_static
|
|
+ TARGETS duckdb_pg_duckdb duckdb_static
|
|
EXPORT "${DUCKDB_EXPORT_SET}"
|
|
LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
|
|
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
|