

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation PL/Rust pour écrire des fonctions PostgreSQL dans le langage Rust
<a name="PostgreSQL.Concepts.General.Using.PL_Rust"></a>

PL/Rust est une extension de langage Rust fiable pour PostgreSQL. Vous pouvez l'utiliser pour des procédures stockées, des fonctions et tout autre code procédural pouvant être appelé depuis SQL. L'extension de PL/Rust langue est disponible dans les versions suivantes :
+ RDS pour PostgreSQL 17.1 et versions 17 ultérieures
+ RDS pour PostgreSQL 16.1 et versions 16 ultérieures
+ RDS pour PostgreSQL 15.2-R2 et versions 15 ultérieures
+ RDS pour PostgreSQL 14.9 et versions 14 ultérieures
+ RDS pour PostgreSQL 13.12 et versions 13 ultérieures

Pour plus d'informations, voir [PL/Rust](https://github.com/tcdi/plrust#readme)ci-dessous GitHub.

**Topics**
+ [Con PL/Rustfiguration](#PL_Rust-setting-up)
+ [Création de fonctions avec PL/Rust](#PL_Rust-create-function)
+ [Utiliser des caisses avec PL/Rust](#PL_Rust-crates)
+ [PL/Rust limites](#PL_Rust-limitations)

## Con PL/Rustfiguration
<a name="PL_Rust-setting-up"></a>

Pour installer l'extension plrust sur votre instance de base de données, ajoutez plrust au paramètre `shared_preload_libraries` dans le groupe de paramètres de la base de données associé à votre instance de base de données. Une fois l'extension plrust installée, vous pouvez créer des fonctions. 

Pour modifier le paramètre `shared_preload_libraries`, votre instance de base de données doit être associée à un groupe de paramètres personnalisé. Pour obtenir des informations sur la création d'un groupe de paramètres de base de données personnalisé, consultez [Groupes de paramètres pour Amazon RDS](USER_WorkingWithParamGroups.md).

Vous pouvez installer l'extension plrust en utilisant le AWS Management Console ou le AWS CLI.

Les étapes suivantes supposent que votre instance de base de données est associée à un groupe de paramètres de cluster de bases de données personnalisé.

### Console
<a name="PL_Rust-setting-up.CON"></a>

**Installer l'extension plrust dans le paramètre `shared_preload_libraries`**

Effectuez les étapes suivantes à l’aide d’un compte membre du groupe (rôle) `rds_superuser`.

1. Connectez-vous à la console Amazon RDS AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)l'adresse.

1. Dans le panneau de navigation, choisissez **Databases (Bases de données)**.

1. Choisissez le nom de votre instance de base de données pour afficher ses détails.

1. Ouvrez l'onglet **Configuration** de votre instance de base de données et recherchez le lien du groupe de paramètres de l'instance de base de données.

1. Cliquez sur le lien pour ouvrir les paramètres personnalisés associés à votre instance de base de données. 

1. Dans le champ de recherche **Parameters** (Paramètres), tapez `shared_pre` pour trouver le paramètre **`shared_preload_libraries`**.

1. Choisissez **Edit parameters** (Modifier les paramètres) pour accéder aux valeurs des propriétés.

1. Ajoutez plrust à la liste dans le champ **Valeurs**. Utilisez une virgule pour séparer les éléments de la liste de valeurs.

1. Redémarrez l'instance de base de données pour que la modification apportée au paramètre `shared_preload_libraries` prenne effet. Le redémarrage initial peut nécessiter plus de temps.

1. Lorsque l'instance est disponible, vérifiez que plrust a été initialisé. Utilisez `psql` pour vous connecter à l'instance de base de données, puis exécutez la commande suivante.

   ```
   SHOW shared_preload_libraries;
   ```

   Votre sortie doit ressembler à ce qui suit :

   ```
   shared_preload_libraries 
   --------------------------
   rdsutils,plrust
   (1 row)
   ```

### AWS CLI
<a name="PL_Rust-setting-up-CLI"></a>

**Installez l'extension plrust dans le paramètre shared\_preload\_libraries**

Effectuez les étapes suivantes à l'aide d'un compte membre du groupe (rôle) `rds_superuser`.

1. Utilisez la commande [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) AWS CLI pour ajouter plrust au paramètre. `shared_preload_libraries`

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name {{custom-param-group-name}} \
      --parameters "ParameterName=shared_preload_libraries,ParameterValue=plrust,ApplyMethod=pending-reboot" \
      --region {{aws-region}}
   ```

1. Utilisez la AWS CLI commande [reboot-db-instance pour redémarrer l'instance](https://docs.aws.amazon.com/cli/latest/reference/rds/reboot-db-instance) de base de données et initialiser la bibliothèque plrust. Le redémarrage initial peut nécessiter plus de temps.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier {{your-instance}} \
       --region {{aws-region}}
   ```

1. Lorsque l'instance est disponible, vous pouvez vérifier que plrust a été initialisé. Utilisez `psql` pour vous connecter à l'instance de base de données, puis exécutez la commande suivante.

   ```
   SHOW shared_preload_libraries;
   ```

   Votre sortie doit ressembler à ce qui suit :

   ```
   shared_preload_libraries
   --------------------------
   rdsutils,plrust
   (1 row)
   ```

## Création de fonctions avec PL/Rust
<a name="PL_Rust-create-function"></a>

PL/Rust compilera la fonction sous forme de bibliothèque dynamique, la chargera et l'exécutera.

La fonction Rust suivante filtre les multiples d'un tableau.

```
postgres=> CREATE LANGUAGE plrust;
CREATE EXTENSION
```

```
CREATE OR REPLACE FUNCTION filter_multiples(a BIGINT[], multiple BIGINT) RETURNS BIGINT[]
    IMMUTABLE STRICT
    LANGUAGE PLRUST AS
$$
    Ok(Some(a.into_iter().filter(|x| x.unwrap() % multiple != 0).collect()))
$$;
        
WITH gen_values AS (
SELECT ARRAY(SELECT * FROM generate_series(1,100)) as arr)
SELECT filter_multiples(arr, 3)
from gen_values;
```

## Utiliser des caisses avec PL/Rust
<a name="PL_Rust-crates"></a>

Dans RDS pour PostgreSQL versions 16.3-R2 et supérieures, 15.7-R2 et versions supérieures 15 versions, 14.12-R2 et versions supérieures 14 versions, et 13.15-R2 et versions supérieures 13 versions, prend en charge des caisses supplémentaires : PL/Rust 
+ `url` 
+ `regex` 
+ `serde` 
+ `serde_json` 

Dans RDS pour PostgreSQL versions 15.5-R2 et supérieures, 14.10-R2 et versions 14 et versions 13.13-R2 et supérieures 13 versions, prend en charge deux caisses supplémentaires : PL/Rust 
+ `croaring-rs` 
+ `num-bigint` 

À partir des versions 15.4, 14.9 et 13.12 d'Amazon RDS for PostgreSQL, les caisses suivantes sont prises en charge : PL/Rust 
+ `aes` 
+ `ctr` 
+ `rand` 

Seules les fonctionnalités par défaut sont prises en charge pour ces caisses. Les nouvelles versions de RDS pour PostgreSQL peuvent contenir des versions mises à jour de caisses, et les anciennes versions de caisses peuvent ne plus être prises en charge.

Suivez les meilleures pratiques pour effectuer une mise à niveau de version majeure afin de vérifier si vos PL/Rust fonctions sont compatibles avec la nouvelle version majeure. Pour plus d'informations, consultez le blog [Bonnes pratiques pour la mise à niveau d'Amazon RDS vers les versions majeures et mineures de PostgreSQL](https://aws.amazon.com/blogs/database/best-practices-for-upgrading-amazon-rds-to-major-and-minor-versions-of-postgresql/) (langue française non garantie) et [Mise à niveau du moteur de base de données PostgreSQL pour Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.PostgreSQL.html) dans le Guide de l'utilisateur Amazon RDS. 

Des exemples d'utilisation des dépendances lors de la création d'une PL/Rust fonction sont disponibles sur [Utiliser les dépendances](https://tcdi.github.io/plrust/use-plrust.html#use-dependencies).

## PL/Rust limites
<a name="PL_Rust-limitations"></a>

Par défaut, les utilisateurs de base de données ne peuvent pas utiliser PL/Rust. Pour fournir un accès à PL/Rust, connectez-vous en tant qu'utilisateur avec le privilège rds\_superuser et exécutez la commande suivante :

```
postgres=> GRANT USAGE ON LANGUAGE PLRUST TO {{user}};
```