Обсуждение: Fwd: lots of errors from fmgr.h when I try to write a C UDF

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

Fwd: lots of errors from fmgr.h when I try to write a C UDF

От
Anh Pham
Дата:
Hi,
I had Postgres 9.3 setup and run successfully in Eclipse (MacOSX)
I am trying to write a C user-defined function:

#include <fmgr.h>
...
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
...

However, when I tried to compile the code:
gcc -fpic -c ...
It gave me a lot of errors and warnings from fmgr.h:

...
/Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:59:2: error: unknown type name 'MemoryContext'

        MemoryContext fn_mcxt;          /* memory context to store fn_extra in */
        ^
/Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:71:2: error: unknown type name 'Oid'
        Oid                     fncollation;    /* collation for function to use */
        ^
/Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:72:2: error: unknown type name 'bool'
        bool            isnull;                 /* function must set true if result is NULL */
...

Any suggestion where I did it wrong?
Thank you :)

Re: Fwd: lots of errors from fmgr.h when I try to write a C UDF

От
Ian Lawrence Barwick
Дата:
2014-02-01 Anh Pham <atpham.wpi@gmail.com>:
> Hi,
> I had Postgres 9.3 setup and run successfully in Eclipse (MacOSX)
> I am trying to write a C user-defined function:
>
> #include <fmgr.h>
> ...
> #ifdef PG_MODULE_MAGIC
> PG_MODULE_MAGIC;
> #endif
> ...
>
> However, when I tried to compile the code:
> gcc -fpic -c ...
> It gave me a lot of errors and warnings from fmgr.h:
>
> ...
> /Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:59:2: error: unknown
> type name 'MemoryContext'
>         MemoryContext fn_mcxt;          /* memory context to store fn_extra
> in */
>         ^
> /Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:71:2: error: unknown
> type name 'Oid'
>         Oid                     fncollation;    /* collation for function to
> use */
>         ^
> /Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:72:2: error: unknown
> type name 'bool'
>         bool            isnull;                 /* function must set true if
> result is NULL */
> …

You'll need to include the appropriate header files. Certainly "postgres.h".

Regards

Ian Barwick


Re: Fwd: lots of errors from fmgr.h when I try to write a C UDF

От
Anh Pham
Дата:
Hi,
I actually included 'postgres.h'

However I found out that when I stopped the server, the code then compiled successfully.
It's weird


On Fri, Jan 31, 2014 at 10:53 PM, Ian Lawrence Barwick <barwick@gmail.com> wrote:
2014-02-01 Anh Pham <atpham.wpi@gmail.com>:
> Hi,
> I had Postgres 9.3 setup and run successfully in Eclipse (MacOSX)
> I am trying to write a C user-defined function:
>
> #include <fmgr.h>
> ...
> #ifdef PG_MODULE_MAGIC
> PG_MODULE_MAGIC;
> #endif
> ...
>
> However, when I tried to compile the code:
> gcc -fpic -c ...
> It gave me a lot of errors and warnings from fmgr.h:
>
> ...
> /Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:59:2: error: unknown
> type name 'MemoryContext'
>         MemoryContext fn_mcxt;          /* memory context to store fn_extra
> in */
>         ^
> /Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:71:2: error: unknown
> type name 'Oid'
>         Oid                     fncollation;    /* collation for function to
> use */
>         ^
> /Users/atpham/workspacecdt/pgsql/src/include/fmgr.h:72:2: error: unknown
> type name 'bool'
>         bool            isnull;                 /* function must set true if
> result is NULL */
> …

You'll need to include the appropriate header files. Certainly "postgres.h".

Regards

Ian Barwick



--
Anh T Pham
Computer Science
Worcester Polytechnic Institute

Re: Fwd: lots of errors from fmgr.h when I try to write a C UDF

От
Michael Paquier
Дата:
On Sat, Feb 1, 2014 at 1:34 PM, Anh Pham <atpham.wpi@gmail.com> wrote:
> Hi,
> I actually included 'postgres.h'
>
> However I found out that when I stopped the server, the code then compiled
> successfully.
Code compilation and a server status are not related as compilation of
Postgres-related modules require the libraries and headers in place to
compile. You could have those things installed with a server, multiple
servers or even nothing running.
Regards,
--
Michael