CREATE FOREIGN DATA WRAPPER — définit un nouveau wrapper de données distantes
CREATE FOREIGN DATA WRAPPERnom
[ HANDLERfonction_handler
| NO HANDLER ] [ VALIDATORfonction_validation
| NO VALIDATOR ] [ OPTIONS (option
'valeur
' [, ... ] ) ]
CREATE FOREIGN DATA WRAPPER
crée un nouveau wrapper de
données distantes. L'utilisateur qui définit un wrapper de données distantes
devient son propriétaire.
Le nom du wrapper de données distantes doit être unique dans la base de données.
Seuls les superutilisateurs peuvent créer des wrappers de données distantes.
nom
Le nom du wrapper de données distantes à créer.
HANDLER fonction_handler
fonction_handler
est le nom
d'une fonction enregistrée précédemment qui sera appelée pour récupérer
les fonctions d'exécution pour les tables distantes. La fonction de
gestion ne prend pas d'arguments et son code retour doit être
fdw_handler
.
Il est possible de créer un wrapper de données distantes sans fonction de gestion mais les tables distantes utilisant un tel wrapper peuvent seulement être déclarées mais pas utilisées.
VALIDATOR fonction_validation
fonction_validation
est le
nom d'une fonction déjà enregistrée qui sera appelée pour vérifier les
options génériques passées au wrapper de données distantes, ainsi que les
options fournies au serveur distant, aux correspondances d'utilisateurs
(user mappings) et aux tables distantes
utilisant le wrapper de données distantes.
Si aucune fonction de validation n'est spécifiée ou si NO
VALIDATOR
est spécifié, alors les options ne seront pas
vérifiées au moment de la création. (Il est possible que les wrappers
de données distantes ignorent ou rejettent des spécifications d'options
invalides à l'exécution, en fonction de l'implémentation) La fonction de
validation doit prendre deux arguments : l'un du type
text[]
, qui contiendra le tableau d'options, tel qu'il est
stocké dans les catalogues systèmes, et l'autre de type oid
,
qui sera l'OID du catalogue système contenant les options. Le type de
retour est inconnu ; la fonction doit rapporter les options
invalides grâce à la fonction ereport(ERROR)
.
OPTIONS ( option
'valeur
' [, ... ] )
Cette clause spécifie les options pour le nouveau wrapper de données distantes. Les noms et valeurs d'options autorisés sont spécifiques à chaque wrapper de données distantes. Ils sont validés par la fonction de validation du wrapper de données distantes. Les noms des options doivent être uniques.
La fonctionnalité de données distantes de PostgreSQL est toujours en développement actif. L'optimisation des requêtes est basique (et plutôt laissé aux bons soins du wrapper). Du coup, il existe certainement beaucoup de possibilités en terme d'amélioration des performances.
Créer un wrapper de données distantes bidon
:
CREATE FOREIGN DATA WRAPPER bidon;
Créer un wrapper de données distantes file
avec
la fonction de validation
file_fdw_validator
:
CREATE FOREIGN DATA WRAPPER postgresql VALIDATOR postgresql_fdw_validator;
Créer un wrapper de données distantes monwrapper
avec des
options :
CREATE FOREIGN DATA WRAPPER monwrapper OPTIONS (debug 'true');
CREATE FOREIGN DATA WRAPPER
est conforme à la norme
ISO/IEC 9075-9 (SQL/MED), à l'exception des clauses HANDLER
et
VALIDATOR
qui sont des extensions, et des clauses
LIBRARY
et LANGUAGE
qui ne sont pas
implémentées dans PostgreSQL.
Notez, cependant, que la fonctionnalité SQL/MED n'est pas encore conforme dans son ensemble.