|
||||
Ouverture de sessionNavigationContactez-nousAdministration du site : RechercheSujets du forumSujets actifsNouveaux sujets:SyndicationSondageQuelle est la version de PostgreSQL la plus répandue sur vos serveurs ? 8.3 10% 8.2 42% 8.1 40% 8.0 2% 7.4 6% 7.3 ou antérieure 0% Nombre de votes: 48 |
Probleme avec les fonctions SPI (procédure stockée en C)Technique - général | Probleme avec les fonctions SPI (procédure stockée en C)Par max75014 le 11/07/2007 - 11:19 Bonjour, j'ai un serieux problème avec l'utilisation des fonctions SPI (spi.h) dans une fonction (procédure) stockée en C. J'utilise PostgreSQL 8.2.0. ma fonction stockée (test_spi.c) est la suivante: #include "executor/spi.h" #ifdef PG_MODULE_MAGIC /************************************************************************************/ Datum test_spi (PG_FUNCTION_ARGS) char *commande; commande = PG_GETARG_CSTRING(0); SPI_connect(); ret = SPI_exec(commande,0); proc = SPI_processed; if ((ret>0) && (SPI_tuptable != NULL)) TupleDesc tupdesc = SPI_tuptable->tupdesc; for (j=0;j HeapTuple tuple = tuptable->vals[j]; for (i=1, buf[0]=0; i<= tupdesc->natts; i++) SPI_finish(); PG_RETURN_INT32 (proc); exit(0); Cette fonction est quasiment la même que celle présente dans la doc de postgres 8.2.0 mais adaptée en version 1. cc -fpic -c test_spi.c -I /usr/local/pgsql/include/server/ -I /usr/local/pgsql/include Mon test_spi.so est ainsi créé dans le repertoire /home/postgres/programmes de mon poste linux. Ensuite, je créé la fonction test_spi() sur PGadmin. CREATE OR REPLACE FUNCTION test_spi(commande cstring) Enfin je lance les deux lignes suivantes sur le programme PGadmin du poste voisin: load '/home/postgres/programmes/test_spi'; Et la, PAN (!) la connexion avec le client postgres de mon poste linux se plante, la fonction ne renvoie rien (pgadmin affiche ":" en guise de réponse) et l'erreur suivante apparait: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. Au niveau de l'execution de ma fonction stockée, le programme "bloque" sur la fonction SPI_connect(); Je pense, aprés un certain nombre de recherches sur le problème, que cela vient de la configuration de Postgres: j'ai du omettre une config de pg_hba.conf ou postgresql.conf mais je ne voit pas laquelle. Si quelqu'un possède une piste pour m'aider à résoudre ce problème de SPI... Merci d'avance. |
|||
© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.