mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-05 20:42:54 +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
34 lines
1.4 KiB
Diff
34 lines
1.4 KiB
Diff
diff --git a/Makefile b/Makefile
|
|
index 3235cc8..6b892bc 100644
|
|
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -32,7 +32,7 @@ else
|
|
DUCKDB_BUILD_TYPE = release
|
|
endif
|
|
|
|
-DUCKDB_LIB = libduckdb$(DLSUFFIX)
|
|
+DUCKDB_LIB = libduckdb_pg_duckdb$(DLSUFFIX)
|
|
FULL_DUCKDB_LIB = third_party/duckdb/build/$(DUCKDB_BUILD_TYPE)/src/$(DUCKDB_LIB)
|
|
|
|
ERROR_ON_WARNING ?=
|
|
@@ -54,7 +54,7 @@ override PG_CXXFLAGS += -std=c++17 ${DUCKDB_BUILD_CXX_FLAGS} ${COMPILER_FLAGS} -
|
|
# changes to the vendored code in one place.
|
|
override PG_CFLAGS += -Wno-declaration-after-statement
|
|
|
|
-SHLIB_LINK += -Wl,-rpath,$(PG_LIB)/ -lpq -Lthird_party/duckdb/build/$(DUCKDB_BUILD_TYPE)/src -L$(PG_LIB) -lduckdb -lstdc++ -llz4
|
|
+SHLIB_LINK += -Wl,-rpath,$(PG_LIB)/ -lpq -Lthird_party/duckdb/build/$(DUCKDB_BUILD_TYPE)/src -L$(PG_LIB) -lduckdb_pg_duckdb -lstdc++ -llz4
|
|
|
|
include Makefile.global
|
|
|
|
diff --git a/sql/pg_duckdb--0.2.0--0.3.0.sql b/sql/pg_duckdb--0.2.0--0.3.0.sql
|
|
index d777d76..af60106 100644
|
|
--- a/sql/pg_duckdb--0.2.0--0.3.0.sql
|
|
+++ b/sql/pg_duckdb--0.2.0--0.3.0.sql
|
|
@@ -1056,3 +1056,6 @@ GRANT ALL ON FUNCTION duckdb.cache(TEXT, TEXT) TO PUBLIC;
|
|
GRANT ALL ON FUNCTION duckdb.cache_info() TO PUBLIC;
|
|
GRANT ALL ON FUNCTION duckdb.cache_delete(TEXT) TO PUBLIC;
|
|
GRANT ALL ON PROCEDURE duckdb.recycle_ddb() TO PUBLIC;
|
|
+GRANT ALL ON FUNCTION duckdb.install_extension(TEXT) TO neon_superuser;
|
|
+GRANT ALL ON TABLE duckdb.extensions TO neon_superuser;
|
|
+GRANT ALL ON SEQUENCE duckdb.extensions_table_seq TO neon_superuser;
|