Documentation PostgreSQL 14.22 » Internes » Écrire un wrapper de données distantes » Fonctions d'aide pour les wrapper de données distantes

Précédent | Niveau supérieur | Suivant
57.2. Routines callback des wrappers de données distantes | Sommaire | 57.4. Planification de la requête avec un wrapper de données distantes

## 57.3. Fonctions d'aide pour les wrapper de données distantes

Plusieurs fonctions d'aide sont exportées à partir du cœur du serveur, pour que les auteurs de wrappers de données distantes puissent accéder facilement aux attributs des objets en relation avec les wrappers, comme par exemple les options d'un wrapper. Pour utiliser une de ces fonctions, vous avez besoin d'inclure le fichier en-tête `foreign/foreign.h` dans votre fichier source. Cet en-tête définit aussi les types de structures qui sont renvoyés par ces fonctions.

    ForeignDataWrapper *
    GetForeignDataWrapperExtended(Oid fdwid, bits16 flags);

Cette fonction renvoie un objet `ForeignDataWrapper` pour le FDW avec l'OID précisé. Un objet `ForeignDataWrapper` contient les propriétés du FDW (voir `foreign/foreign.h` pour les détails). `flags` est un masque de bit OU indiquant des options supplémentaires. Il peut prendre la valeur `FDW_MISSING_OK`, auquel cas un `NULL` est retourné comme résultat à l'appelant au lieu d'une erreur d'objet indéfini.

    ForeignDataWrapper *
    GetForeignDataWrapper(Oid fdwid);

Cette fonction renvoie un objet `ForeignDataWrapper` pour le wrapper de données distantes de l'OID spécifié. Un objet `ForeignDataWrapper` contient les propriétés du wrapper (voir `foreign/foreign.h` pour les détails).

    ForeignServer *
    GetForeignServerExtended(Oid serverid, bits16 flags);

Cette fonction renvoie un objet `ForeignServer` pour le FDW avec l'OID précisé. Un objet `ForeignServer` contient les propriétés du FDW (voir `foreign/foreign.h` pour les détails). `flags` est un masque de bit OU indiquant des options supplémentaires. Il peut prendre la valeur `FSV_MISSING_OK`, auquel cas un `NULL` est retourné comme résultat à l'appelant au lieu d'une erreur d'objet indéfini.

    ForeignServer *
    GetForeignServer(Oid serverid);

Cette fonction renvoie un objet `ForeignServer` pour le serveur distant de l'OID donné. Un objet `ForeignServer` contient les propriétés du serveur (voir `foreign/foreign.h` pour les détails).

    UserMapping *
    GetUserMapping(Oid userid, Oid serverid);

Cette fonction renvoie un objet `UserMapping` pour la correspondance utilisateur du rôle donné sur le serveur donné. (S'il n'existe pas de correspondance utilisateur, la fonction renvoie la correspondance pour `PUBLIC` ou une erreur si cette dernière n'existe pas non plus.) Un objet `UserMapping` contient les propriétés de la correspondance utilisateur (voir `foreign/foreign.h` pour les détails).

    ForeignTable *
    GetForeignTable(Oid relid);

Cette fonction renvoie un objet `ForeignTable` pour la table distante de l'OID donné. Un objet `ForeignTable` contient les propriétés de la table distante (voir `foreign/foreign.h` pour les détails).

    List *
    GetForeignColumnOptions(Oid relid, AttrNumber attnum);

Cette fonction renvoie les opérations du wrapper de données distantes par colonne pour l'OID de la table distante donnée et le numéro de l'attribut sous la forme d'une liste de `DefElem`. NIL est renvoyé sur la colonne n'a pas d'options.

Certains types d'objets ont des fonctions de recherche basées sur le nom en plus de celles basées sur l'OID :

    ForeignDataWrapper *
    GetForeignDataWrapperByName(const char *name, bool missing_ok);

Cette fonction renvoie un objet `ForeignDataWrapper` pour le wrapper de données distante du nom indiqué. Si le wrapper n'est pas trouvé, cette fonction renvoie NULL si missing_ok vaut true, et renvoie une erreur sinon.

    ForeignServer *
    GetForeignServerByName(const char *name, bool missing_ok);

Cette fonction renvoie un objet `ForeignServer` pour le serveur distant du nom donné. Si le serveur n'est pas trouvé, cette fonction renvoie NULL si missing_ok vaut true, et renvoie une erreur sinon.