alitrack / duckdb_fdw

DuckDB Foreign Data Wrapper for PostgreSQL
MIT License
272 stars 18 forks source link

create extension error on PG 14 #33

Closed digoal closed 5 months ago

digoal commented 5 months ago

use this docker image:

# 拉取镜像, 第一次拉取一次即可. 或者需要的时候执行, 将更新到最新镜像版本.  
docker pull registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64  

# 启动容器  
docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64

##### 如果你想学习备份恢复、修改参数等需要重启数据库实例的case, 换个启动参数, 使用参数--entrypoint将容器根进程换成bash更好. 如下: 
docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g --entrypoint /bin/bash registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64  
##### 以上启动方式需要进入容器后手工启动数据库实例: su - postgres; pg_ctl start;  

# 进入容器  
docker exec -ti pg bash  

# 连接数据库  
psql  
postgres=# create extension duckdb_fdw ;
ERROR:  could not load library "/usr/lib/postgresql/14/lib/duckdb_fdw.so": /usr/lib/postgresql/14/lib/duckdb_fdw.so: undefined symbol: _ZN6duckdb9Exception25ConstructMessageRecursiveERKSsRSt6vectorINS_20ExceptionFormatValueESaIS4_EE
digoal commented 5 months ago

compile with libduckdb 0.9.2

cd $TEMP_DIR  
git clone --depth 1 https://github.com/alitrack/duckdb_fdw
cd $TEMP_DIR/duckdb_fdw
wget -T 36000 -t 0 --waitretry=5 https://github.com/duckdb/duckdb/releases/download/v0.9.2/libduckdb-linux-aarch64.zip  
unzip -n -d . libduckdb-linux-aarch64.zip  
cp libduckdb.so $(pg_config --libdir)  
USE_PGXS=1 make  
USE_PGXS=1 make install  
digoal commented 5 months ago

compile libduckdb.so and recompile duckdb_fdw, and it's ok now: https://github.com/digoal/blog/blob/master/202401/20240124_01.md