Обсуждение: compiling C Funktion for PostgreSQL
Hello,
I have a problem with the postgreSQL Source Code when I compile the fuzzystrmatch.c. I want to try to replace all german umlauts for the soundex algorithm. But when I want to compile the C Code, I get an error on the following line in the fuzzystrmatch.c:
PG_MODULE_MAGIC;
And here is the error I get:
In function 'Pg_magic_func': 'PG_VERSION_NUM' undeclared (first use in function)
The PG_VERSION_NUM is defined in the fmgr.h of the PostgreSQL Source Code:
/* Definition of the magic block structure */ typedef struct { int len; /* sizeof(this struct) */ int version; /* PostgreSQL major version */ int funcmaxargs; /* FUNC_MAX_ARGS */ int indexmaxkeys; /* INDEX_MAX_KEYS */ int namedatalen; /* NAMEDATALEN */ } Pg_magic_struct; /* The actual data block contents */ #define PG_MODULE_MAGIC_DATA \ { sizeof(Pg_magic_struct), PG_VERSION_NUM / 100, FUNC_MAX_ARGS, INDEX_MAX_KEYS, NAMEDATALEN }
Can anyone help me to figure out this problem?
Thanks in advance
Jürgen Ulrich
Jürgen Ulrich wrote:
>
> Hello,
>
Hi,
I hope this is what you're looking for:
add to your C code:
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
Regards,
Marcin
>
> I have a problem with the postgreSQL Source Code when I compile the
> fuzzystrmatch.c. I want to try to replace all german umlauts for the
> soundex algorithm. But when I want to compile the C Code, I get an
> error on the following line in the fuzzystrmatch.c:
>
> PG_MODULE_MAGIC;
>
> And here is the error I get:
>
> |In function 'Pg_magic_func': 'PG_VERSION_NUM' undeclared (first use
> in function)|
>
> | |
>
> |The PG_VERSION_NUM is defined in the fmgr.h of the PostgreSQL Source
> Code:|
>
> | |
>
> |/* Definition of the magic block structure */ |
> |typedef struct |
> |{ |
> | int len; /* sizeof(this struct) */ |
> | int version; /* PostgreSQL major version */ |
> | int funcmaxargs; /* FUNC_MAX_ARGS */ |
> | int indexmaxkeys; /* INDEX_MAX_KEYS */ |
> | int namedatalen; /* NAMEDATALEN */ |
> |} Pg_magic_struct; |
>
>
> |/* The actual data block contents */ |
> |#define PG_MODULE_MAGIC_DATA \ |
> |{ |
> | sizeof(Pg_magic_struct), |
> | PG_VERSION_NUM / 100, |
> | FUNC_MAX_ARGS, |
> | INDEX_MAX_KEYS, |
> | NAMEDATALEN |
> |}|
>
> | |
>
> |Can anyone help me to figure out this problem?|
>
> | |
>
> |Thanks in advance|
>
> |Jürgen Ulrich|
>
--
ARISE M.Giedz, T.Żebruń sp.j.
http: www.arise.pl
mail: giedz@arise.pl
tel: +48 502 537 157
=?iso-8859-1?Q?J=FCrgen_Ulrich?= <juergen.ulrich@etourism-austria.at> writes:
> In function 'Pg_magic_func': 'PG_VERSION_NUM' undeclared (first use in
> function)
Perhaps you forgot to include postgres.h? That should always be the
very first #include in any backend module.
regards, tom lane