alitrack / duckdb_fdw

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

duckdb_fdw.so: undefined symbol: sqlite3_limit #11

Closed myaniu closed 1 year ago

myaniu commented 1 year ago

I create a docker image. When I run this image , it show this message: unable load "/usr/lib/postgresql/15/lib/duckdb_fdw.so": /usr/lib/postgresql/15/lib/duckdb_fdw.so: undefined symbol: sqlite3_limit

this is my Dockerfile: `FROM myaniu/duckdb-build:0.6.0 as duckdb

RUN set -x \ && cd / \ && git clone https://github.com/alitrack/duckdb_fdw.git

FROM myaniu/postgres:15.1

ARG PG_DEV_VERSION=15

COPY --from=duckdb /duckdb_fdw /duckdb_fdw COPY --from=duckdb /duckdb/build/release/tools/sqlite3_api_wrapper/libsqlite3_api_wrapper.so /usr/lib/postgresql/15/lib/libsqlite3_api_wrapper.so COPY --from=duckdb /duckdb/build/release/tools/sqlite3_api_wrapper/libsqlite3_api_wrapper.so /usr/lib/x86_64-linux-gnu/libsqlite3_api_wrapper.so COPY --from=duckdb /duckdb/build/release/src/libduckdb.so /usr/lib/postgresql/15/lib/libduckdb.so COPY --from=duckdb /duckdb/tools/sqlite3_api_wrapper/include/sqlite3.h /duckdb_fdw/sqlite3.h

RUN set -x \ && apt-get update && apt-get install -y --no-install-recommends ca-certificates make postgresql-server-dev-$PG_DEV_VERSION postgresql-client-$PG_DEV_VERSION gcc libsqlite3-dev libsqlite3-0 libc6-dev \ && cd /duckdb_fdw \ && make USE_PGXS=1 \ && make install USE_PGXS=1 \ && rm -rf /var/lib/apt/lists/* \ && apt-get purge -y --auto-remove make postgresql-server-dev-$PG_DEV_VERSION gcc libc6-dev libsqlite3-dev \ && rm -rf /duckdb_fdw

ENV POSTGRES_HOST_AUTH_METHOD='md5'

COPY docker-entrypoint-initdb.d/duckdb_fdw_enable.sql /docker-entrypoint-initdb.d/duckdb_fdw_enable.sql`

Thank you for writing this software.

myaniu commented 1 year ago

use latest source and rebuild docker images.

unable load "/usr/lib/postgresql/15/lib/duckdb_fdw.so": /usr/lib/postgresql/15/lib/duckdb_fdw.so: undefined symbol: sqlite3_limit sqlite3_limit error is ok now.

found new error: unable load "/usr/lib/postgresql/15/lib/duckdb_fdw.so": /usr/lib/postgresql/15/lib/duckdb_fdw.so: undefined symbol:

I found sqlite3_bind_int64 is used in sqlite_query.c

myaniu commented 1 year ago

I modify Makefile SHLIB_LINK := -lsqlite3_api_wrapper ==> SHLIB_LINK := -lsqlite3_api_wrapper -lsqlite3

Everything is ok.

alitrack commented 1 year ago

@myaniu just found correct solution, please have a look https://github.com/alitrack/duckdb_fdw/issues/12