L'interface de programmation serveur
(SPI) donne aux auteurs de
fonctions C la capacité de lancer
des commandes SQL au sein de leurs
fonctions. SPI est une série de
fonctions d'interface simplifiant l'accès à l'analyseur, au
planificateur, à l'optimiseur 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 procédures. La plupart est
basée à partir de SPI. Cette documentation présente donc
également un intérêt pour les utilisateurs de ces langages.
Pour assurer la compréhension, nous utiliserons le terme de
« fonction » quand nous
parlerons de fonctions d'interface SPI et « procédure » pour une fonction C définie par
l'utilisateur et utilisant SPI.
Notez que si une commande appelée via SPI échoue, alors le contrôle
ne sera pas redonné à votre procédure. Au contraire, la transaction
ou sous-transaction dans laquelle est exécutée votre procédure 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.
Ceci n'est actuellement pas documenté parce que les mécanismes requis
sont toujours en flux.
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.