Probleme beim Compilieren von C-Funktion

Hallo,
ich habe folgendes Problem. Und zwar möchte ich die Soundex Funktion von PostgreSQL so erweitern, dass Umlaute umgewandelt werden, also z.b. ein Ö in ein O usw…das ist so weit auch kein Problem. Allerdings tritt beim compilieren von der fuzzystrmatch.c folgendes Problem auf:

Bei dieser Zeile:
[php]PG_MODULE_MAGIC;[/php]

Error:
[php]In function ‘Pg_magic_func’: ‘PG_VERSION_NUM’ undeclared (first use in function)[/php]

Dieses PG_VERSION_NUM wird in der fmgr.h vom PostgreSQL Source Code definiert mit den folgenden Zeilen:

[php]
/* 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
}
[/php]

Weis evtl. jemand, wie ich dieses Problem beheben kann? Bin schon am verzweifeln. Danke :slight_smile:

Gruß dayxtry

Für welche Version von PostgreSQL compilierst du?

PG_MODULE_MAGIC ist neu ab 8.2, du solltest also einen Define drumherum setzen, der diese Zeile nur ab 8.2 zulässt.

Schau mal in den table_log Source, Version 0.4.4, dort habe ich das bereits eingebaut.

Danke für die Antwort.

Also ich hab schon ein define drum rum,…falls du das hier meinst:

[php]
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
[/php]

Und ich nutze PostgreSQL Version 8.2.4.7110

Und mit dem table_log Source meinst du bestimmt das Projekt “tablefunc”, oder?

Gruß dayxtry

Ja, jenen #ifdef meinte ich. Und nein, ich meinte etwas anderes:

PgFoundry: Table Audit: Project Info

Keine Ahnung, ob tablefunc das auch bereits implementiert hat, aber wenn es im contrib Verzeichnis ist, sollte dem so sein.

Bindest du denn die Datei fmgr.h auch ein?

So, bin wieder off für die gesamte Woche …

jup, die Datei fmgr.h ist in der Datei fuzzystrmatch.h included.

Werd mir mal das Projekt anschauen, danke :slight_smile: . Hoffe dass mich das weiterbringt.

Achja,…und das Projekt “fuzzystrmatch” befindet sich auch im contrib Verzeichnis, d.h. das is dabei wenn man den Source Code von PostgreSQL runterlädt. Und da ist dann auch schon die Soundex Funktion enthalten. Ich will die ja eig. nur anpassen, allerdings muss ich die dazu natürlich kompilieren und dabei tritt eben leider der Fehler auf :frowning: .

Gruß dayxtry