Обсуждение: using libjansson in postgres extension

Поиск
Список
Период
Сортировка

using libjansson in postgres extension

От
mahendrakar s
Дата:
Hello Hackers,

I'm developing an extension where in it indirectly references (libjansson) and libjansson has a symbol json_object which conflicts with postgres  symbol 'json_object'.

I see below:
PostgreSQL: Documentation: 11: 38.10. C-Language Functions
"Symbol names defined within object files must not conflict with each other or with symbols defined in the PostgreSQL server executable. You will have to rename your functions or variables if you get error messages to this effect."

But this requires to maintain libjansson with customizations(have a different symbol) to meet the needs.

Do you have any suggestions to use the libjansson 'as it is' without using the different symbol.

Thanks,
Mahendrakar.


Re: using libjansson in postgres extension

От
mahendrakar s
Дата:
Thoughts?

On Thu, 23 Feb 2023 at 19:08, mahendrakar s <mahendrakarforpg@gmail.com> wrote:
Hello Hackers,

I'm developing an extension where in it indirectly references (libjansson) and libjansson has a symbol json_object which conflicts with postgres  symbol 'json_object'.

I see below:
PostgreSQL: Documentation: 11: 38.10. C-Language Functions
"Symbol names defined within object files must not conflict with each other or with symbols defined in the PostgreSQL server executable. You will have to rename your functions or variables if you get error messages to this effect."

But this requires to maintain libjansson with customizations(have a different symbol) to meet the needs.

Do you have any suggestions to use the libjansson 'as it is' without using the different symbol.

Thanks,
Mahendrakar.


Re: using libjansson in postgres extension

От
Gurjeet Singh
Дата:
On Thu, Feb 23, 2023 at 5:39 AM mahendrakar s
<mahendrakarforpg@gmail.com> wrote:
> I'm developing an extension where in it indirectly references (libjansson) and libjansson has a symbol json_object
whichconflicts with postgres  symbol 'json_object'.
 
>
> I see below:
> PostgreSQL: Documentation: 11: 38.10. C-Language Functions
> "Symbol names defined within object files must not conflict with each other or with symbols defined in the PostgreSQL
serverexecutable. You will have to rename your functions or variables if you get error messages to this effect."
 
>
> But this requires to maintain libjansson with customizations(have a different symbol) to meet the needs.
>
> Do you have any suggestions to use the libjansson 'as it is' without using the different symbol.

I don't think that'll be possible. The docs are pretty clear, and I'm
afraid any proposal to change Postgres function's name will not be
welcome.

Perhaps you can perform surgery on your library _after_ linking, to
remove any exports of the symbol json_object. See [1] for some ideas.
This will allow you to keep using libjansson code without
modifications, but it will require some post-build complexity, with
platform-specific solutions.

[1]: https://stackoverflow.com/questions/9648655/how-to-hide-the-exported-symbols-name-within-a-shared-library

Best regards,
Gurjeet
http://Gurje.et



Re: using libjansson in postgres extension

От
Andrew Dunstan
Дата:


On 2023-02-23 Th 20:59, mahendrakar s wrote:

On Thu, 23 Feb 2023 at 19:08, mahendrakar s <mahendrakarforpg@gmail.com> wrote:
Hello Hackers,

I'm developing an extension where in it indirectly references (libjansson) and libjansson has a symbol json_object which conflicts with postgres  symbol 'json_object'.

I see below:
PostgreSQL: Documentation: 11: 38.10. C-Language Functions
"Symbol names defined within object files must not conflict with each other or with symbols defined in the PostgreSQL server executable. You will have to rename your functions or variables if you get error messages to this effect."

But this requires to maintain libjansson with customizations(have a different symbol) to meet the needs.

Do you have any suggestions to use the libjansson 'as it is' without using the different symbol.




No. AFAICT you will have to create a fork of the library as the documentation suggests.


cheers


andrew


--
Andrew Dunstan
EDB: https://www.enterprisedb.com