Bonjour,

j'ai créé un nouveau type de donnée sous postgre appelé "Ppoint" , j'ai créé aussi une fonction C qui a comme paramettre ce nouveau type.

Mon probleme est le suivant : apres avoir créé une dll (je travail sur win xp) si j'utilisé le pointeur predefini par postgre c-à-d "point" ma fonction en C resemblerait à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
PG_FUNCTION_INFO_V1(makepoint1);
 
PGMODULEEXPORT Datum makepoint1(PG_FUNCTION_ARGS)
 
{
Point     *point2 = PG_GETARG_POINT_P(0);
 
PG_RETURN_INT32(point2->x);
}
et voici l'appel de cette fonction sous postgre SELECT makepoint1('(3,4)') jusque la tout marche.

Sauf que j'utilise une nouveau type donc PG_GETARG_XXX(0) qui recupere le 1er paramettre de type XXX (XXX = type predefini par postgre ) n'est plus utilisable.

voici ma 1ere idée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
PG_FUNCTION_INFO_V1(makepoint1);
 
PGMODULEEXPORT Datum makepoint1(Point *pointTest)
{
 
PG_RETURN_INT32(pointTest->x);
}
en fesant l'appel à cette fonction dans postgre avec SELECT makepoint1((3,4)) par exemple elle me revois la valeur 0 alors quelle devrait renvoyer 3.

donc je ne sais pas si le probleme est au niveau de l'appel ( peut etre que le (3,4) n'est pas conciderer comme un type Ppoint ce que ne pense pas) ou alors le probleme vien du code C.

Quelqu'un aurait-il la solution ?

Merci pour votre lecture !