Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERROR: could not load library "/usr/lib64/pgsql/tds_fdw.so": /usr/lib64/pgsql/tds_fdw.so: undefined symbol: bms_is_empty #370

Open
GeraldScott opened this issue Oct 17, 2024 · 2 comments

Comments

@GeraldScott
Copy link

GeraldScott commented Oct 17, 2024

Issue report

Operating system

On recent GNU/Linux distributions, you can provide the content of the file /etc/os-release

Fedora Linux 40 (Workstation Edition)

Version of tds_fdw

From a psql session, paste the outputs of running \dx

If you built the package from Git sources, also paste the output of running git log --source -n 1 on your git clone from a console

The package was installed from the PGDG repo usingsudo dnf install tds_fdw_16

CREATE EXTENSION tds_fdw;
ERROR:  could not load library "/usr/lib64/pgsql/tds_fdw.so": /usr/lib64/pgsql/tds_fdw.so: undefined symbol: bms_is_empty

moodle=# \dx
                               List of installed extensions
     Name     | Version |   Schema   |                    Description                     
--------------+---------+------------+----------------------------------------------------
 plpgsql      | 1.0     | pg_catalog | PL/pgSQL procedural language
 postgres_fdw | 1.1     | public     | foreign-data wrapper for remote PostgreSQL servers

Version of PostgreSQL

From a psql session, paste the output of running SELECT version();

SELECT version();
 PostgreSQL 16.3 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 14.1.1 20240522 (Red Hat 14.1.1-4), 64-bit

Version of FreeTDS

How to get it will depend on your Operating System and how you installes FreeTDS

From a console:

  • On RPM based systems: rpm -qa|grep freetds
  • On Deb based systems: dpkg -l|grep freetds
  • If you built your own binaries from source code, then go to the sources, and run: grep 'AC_INIT' configure.ac
rpm -qa|grep freetds                                                                                                                                                                                         freetds-1.4.16-1.fc40.x86_64
freetds-libs-1.4.16-1.fc40.x86_64
freetds-devel-1.4.16-1.fc40.x86_64

rpm -qa|grep tds_fdw
tds_fdw_16-2.0.4-1PGDG.f40.x86_64

Logs

Please capture the logs when the error you are reporting is happening, as well as commands with their outputs if you are reporting a problem build or installing

For problems using tds_fdw on PostgreSQL how to do it will depend on your system, but if your PostgreSQL is installed on GNU/Linux, you will want to use tail -f with the log of the PostgreSQL cluster

For MSSQL you will need to use the SQL Server Audit Log

ERROR:  could not load library "/usr/lib64/pgsql/tds_fdw.so": /usr/lib64/pgsql/tds_fdw.so: undefined symbol: bms_is_empty

Sentences, data structures, data

This will depend on the exact problem you are having and data privacy restrictions

However the more data you provide, the more likely we will be able to help

As a bare minimum, you should provide

  • The SQL sentence that is failing
  • The data structure on the PostgreSQL side and on the MSSQL side
N/A
@GeraldScott
Copy link
Author

Further to the above, the library is installed correctly:

ls /usr/lib64/pgsql/tds_fdw.so
/usr/lib64/pgsql/tds_fdw.so

@achix
Copy link

achix commented Nov 13, 2024

I dont see bms_is_empty in my pgsql16 installation :

postgres@smadb:$ nm /usr/local/pgsql/lib/tds_fdw.so | grep bms_
U bms_del_member
U bms_equal
U bms_is_member
U bms_make_singleton
U bms_union
postgres@smadb:$

whereas this exists in my old pgsql10 installation :

postgres@test-smadbold:$ nm /usr/local/pgsql/lib/tds_fdw.so | grep bms_is_empty
U bms_is_empty
postgres@test-smadbold:$

In any case, your tds_fdw package seems broken, try to build tds_fdw-2.0.4 from source, against the correct pgsql (16) sources.

update : up to some version,at least in pgsql 10, bms_is_empty used to be a function, now at least in pgsql16 and 17, this is a macro. This means that your version of tds_fdw was compiled against a posgresql version before pgsql16. Hence broken.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants