PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 17.6 » Programmation serveur » Interface de programmation serveur

Chapitre 45. Interface de programmation serveur

Table des matiĂšres

45.1. Fonctions d'interface
SPI_connect_ext — connecter une fonction C au gestionnaire SPI
SPI_finish — dĂ©connecter une fonction C du gestionnaire SPI
SPI_execute — exĂ©cute une commande
SPI_exec — exĂ©cute une commande en lecture/Ă©criture
SPI_execute_extended — ExĂ©cute une commande avec des paramĂštres hors ligne
SPI_execute_with_args — exĂ©cute une commande avec des paramĂštres hors ligne
SPI_prepare — prĂ©pare une instruction sans l'exĂ©cuter tout de suite
SPI_prepare_cursor — prĂ©pare une requĂȘte, sans l'exĂ©cuter pour l'instant
SPI_prepare_extended — prĂ©pare une instruction, sans l'exĂ©cuter tout de suite
SPI_prepare_params — prĂ©pare une requĂȘte, mais sans l'exĂ©cuter
SPI_getargcount — renvoie le nombre d'arguments nĂ©cessaire Ă  une requĂȘte par SPI_prepare
SPI_getargtypeid — renvoie l'OID du type de donnĂ©es pour un argument de la requĂȘte prĂ©parĂ©e par SPI_prepare
SPI_is_cursor_plan — renvoie true si la requĂȘte prĂ©parĂ©e par SPI_prepare peut ĂȘtre utilisĂ© avec SPI_cursor_open
SPI_execute_plan — exĂ©cute une requĂȘte prĂ©parĂ©e par SPI_prepare
SPI_execute_plan_extended — exĂ©cute une requĂȘte prĂ©parĂ©e par SPI_prepare
SPI_execute_plan_with_paramlist — exĂ©cute une requĂȘte prĂ©parĂ©e par SPI_prepare
SPI_execp — exĂ©cute une requĂȘte en mode lecture/Ă©criture
SPI_cursor_open — met en place un curseur en utilisant une requĂȘte créée avec SPI_prepare
SPI_cursor_open_with_args — ouvre un curseur en utilisant une requĂȘte et des paramĂštres
SPI_cursor_open_with_paramlist — ouvre un curseur en utilisant les paramùtres
SPI_cursor_parse_open — provisionne un curseur en utilisant une requĂȘte sous forme chaĂźne et des paramĂštres
SPI_cursor_find — recherche un curseur existant par nom
SPI_cursor_fetch — extrait des lignes à partir d'un curseur
SPI_cursor_move — dĂ©place un curseur
SPI_scroll_cursor_fetch — rĂ©cupĂšre quelques lignes Ă  partir d'un curseur
SPI_scroll_cursor_move — dĂ©placer un curseur
SPI_cursor_close — ferme un curseur
SPI_keepplan — sauvegarde une instruction prĂ©parĂ©e
SPI_saveplan — sauvegarde une requĂȘte prĂ©parĂ©e
SPI_register_relation — rend une relation nommĂ©e Ă©phĂ©mĂšre disponible par son nom dans les requĂȘtes SPI
SPI_unregister_relation — supprime une relation nommĂ©e Ă©phĂ©mĂšre du registre
SPI_register_trigger_data — rends les donnĂ©es de triggers disponibles dans les requĂȘtes SPI
45.2. Fonctions de support d'interface
SPI_fname — dĂ©termine le nom de colonne pour le numĂ©ro de colonne spĂ©cifiĂ©
SPI_fnumber — dĂ©termine le numĂ©ro de colonne pour le nom de colonne spĂ©cifiĂ©e
SPI_getvalue — renvoie la valeur de chaĂźne de la colonne spĂ©cifiĂ©e
SPI_getbinval — retourne la valeur binaire de la colonne spĂ©cifiĂ©e
SPI_gettype — retourne le nom du type de donnĂ©e de la colonne spĂ©cifiĂ©e
SPI_gettypeid — retourne l'OID de type de donnĂ©e de la colonne spĂ©cifiĂ©e
SPI_getrelname — retourne le nom de la relation spĂ©cifiĂ©e
SPI_getnspname — renvoie l'espace de noms de la relation spĂ©cifiĂ©e
SPI_result_code_string — renvoie un code d'erreur sous la forme d'une chaüne de caractùres
45.3. Gestion de la mémoire
SPI_palloc — alloue de la mĂ©moire dans le contexte de mĂ©moire courant
SPI_repalloc — rĂ©-alloue de la mĂ©moire dans le contexte de mĂ©moire courant
SPI_pfree — libĂšre de la mĂ©moire dans le contexte de mĂ©moire courant
SPI_copytuple — effectue une copie d'une ligne dans le contexte de mĂ©moire courant
SPI_returntuple — prĂ©pare le renvoi d'une ligne en tant que Datum
SPI_modifytuple — crĂ©e une ligne en remplaçant les champs sĂ©lectionnĂ©s d'une ligne donnĂ©e
SPI_freetuple — libĂšre une ligne allouĂ©e dans le contexte de mĂ©moire courant
SPI_freetuptable — libĂšre une sĂ©rie de lignes créée par SPI_execute ou une fonction semblable
SPI_freeplan — libĂšre une requĂȘte prĂ©parĂ©e sauvegardĂ©e auparavant
45.4. Gestion des transactions
SPI_commit — valider la transaction courante
SPI_rollback — annuler la transaction courante
SPI_start_transaction — fonction obsolùte
45.5. Visibilité des modifications de données
45.6. Exemples

L'interface de programmation serveur (SPI) donne aux auteurs de fonctions C la capacité de lancer des commandes SQL au sein de leurs fonctions ou procédures. SPI est une série de fonctions d'interface simplifiant l'accÚs à l'analyseur, au planificateur et au lanceur. SPI fait aussi de la gestion de mémoire.

Note

Les langages procĂ©duraux disponibles donnent plusieurs moyens de lancer des commandes SQL Ă  partir de fonctions. La plupart est basĂ©e Ă  partir de SPI. Cette documentation prĂ©sente donc Ă©galement un intĂ©rĂȘt pour les utilisateurs de ces langages.

Notez que si une commande appelĂ©e via SPI Ă©choue, alors le contrĂŽle ne sera pas rendu Ă  votre fonction C. Au contraire, la transaction ou sous-transaction dans laquelle est exĂ©cutĂ©e votre fonction C sera annulĂ©e. (Ceci pourrait ĂȘtre surprenant Ă©tant donnĂ© que les fonctions SPI ont pour la plupart des conventions documentĂ©es de renvoi d'erreur. Ces conventions s'appliquent seulement pour les erreurs dĂ©tectĂ©es Ă  l'intĂ©rieur des fonctions SPI.) Il est possible de rĂ©cupĂ©rer le contrĂŽle aprĂšs une erreur en Ă©tablissant votre propre sous-transaction englobant les appels SPI qui pourraient Ă©chouer.

Les fonctions SPI renvoient un résultat positif en cas de succÚs (soit par une valeur de retour entiÚre, soit dans la variable globale SPI_result comme décrit ci-dessous). En cas d'erreur, un résultat négatif ou NULL sera retourné.

Les fichiers de code source qui utilisent SPI doivent inclure le fichier d'en-tĂȘte executor/spi.h.