Bonjour, je travaille avec PostgreSQL 8.3.5 sur FreeBSD 7.0 et j'essai de faire fonctionner du code C.
Le probleme, c'est que je ne peux pas utiliser le type "char *" sous peine d'avoir un
"
ERROR: invalid memory alloc request size 18446744073709551613
********** Erreur **********
ERROR: invalid memory alloc request size 18446744073709551613
État SQL :XX000
"
Voici mon code :Si je commente la ligne char * temp = NULL;, j'ai un resultat vide en guise de compensation (normal).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include "/usr/local/include/postgresql/server/postgres.h" #include "/usr/local/include/postgresql/server/fmgr.h" #include <string.h> #ifdef PG_MODULE_MAGIC PG_MODULE_MAGIC; #endif Datum myFunction(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(myFunction); Datum myFunction(PG_FUNCTION_ARGS) { text *newName; // char *temp = NULL; if( PG_ARGISNULL(0) || PG_ARGISNULL(1)) { PG_RETURN_NULL(); } newName = PG_GETARG_TEXT_P(0); PG_RETURN_TEXT_P(newName); }
Mais si je décommente, paf, Error.
J'ai bien testé sans l'initialisation du pointeur ou en changeant de nom sans résultats.
Aurais-je oublié quelque chose?
EDIT:
J'ai essayé de passer par un void * , même topo. Avec un int*, pareil. On ne peut pas utiliser de pointeurs autre que text*?
Partager