Re: Problem of Magic Block in Postgres 8.2 - Mailing list pgsql-hackers

From Takahiro Itagaki
Subject Re: Problem of Magic Block in Postgres 8.2
Date
Msg-id 20100402144730.9760.52131E4D@oss.ntt.co.jp
Whole thread Raw
In response to Problem of Magic Block in Postgres 8.2  (Pei He <hepeimail@gmail.com>)
List pgsql-hackers
Pei He <hepeimail@gmail.com> wrote:

> The extension functions was developed by C++ mixed with C.
> ERROR:  incompatible library
> "/home/hepei/bin/Chameleon/lib/libspgist_trie.so": missing magic block
> HINT:  Extension libraries are required to use the PG_MODULE_MAGIC macro.

You can use extern "C" blocks for PG_MODULE_MAGIC, PG_FUNCTION_INFO_V1,
and function declarations:
   extern "C"   {   #include "postgres.h"   #include "fmgr.h"
   PG_MODULE_MAGIC;
   PG_FUNCTION_INFO_V1(your_function);   extern Datum your_function(PG_FUNCTION_ARGS);   }

However, you should very carefully use C++ exceptions and destructors
in your module because PostgreSQL uses siglongjmp; C++ unwind semantics
don't work on postgres' errors. You cannot use those C++ features and
postgres' APIs together.

Regards,
---
Takahiro Itagaki
NTT Open Source Software Center




pgsql-hackers by date:

Previous
From: Josh Berkus
Date:
Subject: Re: Compile fail, alpha5 & gcc 4.3.3 in elog.c
Next
From: Fujii Masao
Date:
Subject: Re: [DOCS] Streaming replication document improvements