Thread: compiling C Funktion for PostgreSQL

compiling C Funktion for PostgreSQL

From
Jürgen Ulrich
Date:

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

Re: compiling C Funktion for PostgreSQL

From
Marcin Giedz
Date:
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



Re: compiling C Funktion for PostgreSQL

From
Tom Lane
Date:
=?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