Обсуждение: Fwd: lots of errors from fmgr.h when I try to write a C UDF
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
...
...
#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 */
...
/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 :)
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
Hi,
I actually included 'postgres.h'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
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