CREATE EXTENSION — installe une nouvelle extension
CREATE EXTENSION [ IF NOT EXISTS ]nom_extension[ WITH ] [ SCHEMAnom_schema] [ VERSIONversion] [ CASCADE ]
   CREATE EXTENSION charge une nouvelle extension dans la
   base de donnée courante. Il ne doit pas y avoir d'extension déjà chargée
   portant le même nom.
  
   L'utilisateur qui exécute CREATE EXTENSION devient le
   propriétaire de l'extension, ce qui est important pour les vérifications de
   droit ultérieurement, et devient aussi normalement le propriétaire de tout
   objet créé par le script de l'extension.
  
   Charger une extension nécessite normalement les même droits que pour créer
   les objets qui le composent. Pour beaucoup d'extensions, cela signifie que
   l'attribut SUPERUSER est nécessaire. Néanmoins, si
   l'extension est marquée de confiance dans son
   fichier confiance, alors elle peut être installée par tout utilisateur
   disposant du droit CREATE sur la base de données
   actuelle. Dans ce cas, l'objet extension sera la propriété de l'utilisateur
   appelant, mais les objets contenus auront pour propriétaire le
   super-utilisateur (sauf si le script de l'extension ne les affecte lui même
   à l'utilisateur appelant). Cette configuration donne à l'utilisateur
   appelant le droit de supprimer l'extension, mais pas de modifier les objets
   individuels qu'elle contient.
  
   Le chargement d'une extension nécessite les mêmes droits que ceux
   qui permettent la création de ses objets. La plupart des extensions
   nécessitent ainsi des droits super-utilisateur ou d'être le propriétaire
   de la base de donnée.
   L'utilisateur qui lance la commande CREATE EXTENSION
   devient alors le propriétaire de l'extension (une vérification ultérieure
   des droits permettra de le confirmer) et le propriétaire de chacun
   des objets créé par le script de l'extension.
  
IF NOT EXISTSPermet de ne pas retourner d'erreur si une extension de même nom existe déjà. Un simple message d'avertissement est alors rapporté. À noter que l'extension existante n'a potentiellement aucun lien avec l'extension qui aurait pu être créée.
nom_extension
      Le nom de l'extension à installer. PostgreSQL
      créera alors l'extension en utilisant les instructions du fichier de contrôle
      SHAREDIR/extension/nom_extension.control .
     
nom_schemaLe nom du schéma dans lequel installer les objets de l'extension, en supposant que l'extension permette de déplacer ses objets dans un autre schéma. Le schéma en question doit exister au préalable. Si ce nom n'est pas spécifié et que le fichier de contrôle de l'extension ne spécifie pas de schéma, le schéma par défaut en cours sera utilisé.
      Si l'extension indique un paramètre schema dans son
      fichier contrôle, alors ce schéma ne peut pas être surchargé avec une
      clause SCHEMA. Habituellement, une erreur est levée
      si une clause SCHEMA est indiquée et qu'elle entre en
      conflit avec le paramètre schema de l'extension.
      Néanmoins, si la clause CASCADE est aussi indiquée,
      alors nom_schema est ignoré
      s'il y a conflit. Le nom_schema indiqué sera utilisé pour
      l'installation de toute extension qui ne précise pas
      schema dans son fichier contrôle.
     
Rappelez-vous que l'extension en soit n'est pas considérée comme étant dans un schéma. Les extensions ont des noms non qualifiés qui doivent être uniques au niveau de la base de données. Par contre, les objets appartenant à l'extension peuvent être dans des schémas.
versionLa version de l'extension à installer. Il peut s'agir d'un identifiant autant que d'une chaîne de caractère. La version par défaut est celle spécifiée dans le fichier de contrôle de l'extension.
CASCADE
      Installe automatiquement toute extension non déjà présente dont cette extension dépend.
      Leurs dépendances sont aussi automatiquement installées, récursivement. La clause
      SCHEMA, si elle est indiquée, s'applique à toutes les extensions
      installées de cette façon. Les autres options de l'instruction ne sont pas appliquées
      aux extensions créées automatiquement. En particulier, leurs versions par défaut
      sont toujours sélectionnées.
     
   Avant d'utiliser la commande CREATE EXTENSION pour charger
   une extension dans une base de données, il est nécessaire d'installer les fichiers qui l'accompagnent.
   Les informations de Modules supplémentaires fournis
   permettent d'installer les extensions fournies avec PostgreSQL.
  
   Les extensions disponibles à l'installation sur le serveur peuvent être identifiées au moyen des vues systèmes
   pg_available_extensions
   et
   pg_available_extension_versions.
  
    Installer une extension en tant que super-utilisateur nécessite d'avoir
    confiance dans le fait que l'auteur de l'extension a écrit le script
    d'installation avec la sécurité en tpete. Il n'est pas particulièrement
    compliqué pour un utilisateur ayant de mauvaises intentions de créer des
    objets de type cheval de Troie qui comprométeront une exécution ultérieure
    d'un script d'extension mal écrit, permettant à l'utilisateur d'acquérir
    des droits super-utilisateur. Néanmoins, les objets chevaux de Troie sont
    seulement dangereux s'ils se trouvent dans le
    search_path lors de l'exécution du script, signifiant
    qu'ils sont dans le schéma d'installation de l'extension ou dans le schéma
    d'une extension dont l'extension installée dépend. De ce fait, une bonne
    règle lors de la gestion d'extensions dont les scripts n'ont pas été
    validés est de les installer seulement dans des schémas pour lesquels le
    droit CREATE n'a pas été et ne sera jamais donné à des utilisateurs qui ne
    bénéficient pas d'une confiance complète. De même pour toute extension
    dont elle dépend.
   
Les extensions fournies avec PostgreSQL sont supposées être sécurisées contre les attaques à l'installation de ce type, sauf quelques unes dépendant d'autres extensions. Comme indiqué dans la documentation pour ces extensions, elles devraient être installées dans des schémas sécurisés ou installés dans les mêmes schémas que celles des extensions dont elles dépendant, ou les deux.
Pour obtenir des informations sur l'écriture de nouvelles extensions, consultez Section 38.17.
   Installer l'extension hstore dans la base de
   données courante, en plaçant ses objets dans le schéma
   addons :
   
CREATE EXTENSION hstore SCHEMA addons;
Une autre façon d'accomplir la même chose :
SET search_path = addons; CREATE EXTENSION hstore;
   La commande CREATE EXTENSION est spécifique à
   PostgreSQL.