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 :
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);
}
Si je commente la ligne char * temp = NULL;, j'ai un resultat vide en guise de compensation (normal).
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*?