

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo PL/Rust per scrivere funzioni PostgreSQL nel linguaggio Rust
<a name="PostgreSQL.Concepts.General.Using.PL_Rust"></a>

PL/Rust is a trusted Rust language extension for PostgreSQL. You can use it for stored procedures, functions, and other procedural code that's callable from SQL. The PL/Rustl'estensione del linguaggio è disponibile nelle seguenti versioni:
+ RDS per PostgreSQL 17.1 e versioni successive 17
+ RDS per PostgreSQL 16.1 e versioni successive 16
+ RDS per PostgreSQL 15.2-R2 e versioni successive alla 15
+ RDS per PostgreSQL 14.9 e versioni successive alla 14
+ RDS per PostgreSQL 13.12 e versioni successive alla 13

[Per ulteriori informazioni, vedere PL/Rust on.](https://github.com/tcdi/plrust#readme) GitHub

**Topics**
+ [Configurazione di PL/Rust](#PL_Rust-setting-up)
+ [Creazione di funzioni con PL/Rust](#PL_Rust-create-function)
+ [Utilizzo dei formati crate con PL/Rust](#PL_Rust-crates)
+ [Limitazioni del linguaggio PL/Rust](#PL_Rust-limitations)

## Configurazione di PL/Rust
<a name="PL_Rust-setting-up"></a>

Per installare l'estensione plrust sull'istanza database, aggiungere plrust al parametro `shared_preload_libraries` nel gruppo di parametri database associato all'istanza database. Dopo aver installato l'estensione plrust, è possibile creare funzioni. 

Per modificare il parametro `shared_preload_libraries`, l'istanza database deve essere associata a un gruppo di parametri personalizzato. Per ulteriori informazioni sulla creazione di un gruppo di parametri personalizzato, consulta [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

È possibile installare l'estensione plrust utilizzando o il Console di gestione AWS . AWS CLI

I passaggi seguenti si basano sull'ipotesi che l'istanza database sia associata a un gruppo di parametri personalizzato.

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

**Installare l'estensione plrust nel parametro `shared_preload_libraries`**

Eseguire i seguenti passaggi utilizzando un account membro del gruppo `rds_superuser` (ruolo).

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione, seleziona **Database**.

1. Scegliere il nome dell'istanza database per visualizzarne i dettagli.

1. Aprire la scheda **Configurazione** dell'istanza database e trovare il link al gruppo di parametri dell'istanza database.

1. Scegliere il link per aprire i parametri personalizzati associati all'istanza database. 

1. Nel campo di ricerca **Parametri**, digita `shared_pre` per trovare il parametro **`shared_preload_libraries`**.

1. Scegli **Edit parameters** (Modifica parametri) per accedere ai valori delle proprietà.

1. Aggiungere plrust all'elenco nel campo **Valori**. Utilizza una virgola per separare gli elementi nell’elenco di valori.

1. Riavviare l'istanza database per applicare le modifiche al parametro `shared_preload_libraries`. Il completamento del riavvio iniziale potrebbe richiedere più tempo.

1. Quando l'istanza è disponibile, verificare che plrust sia stato inizializzato. Utilizzare `psql` per connettersi all'istanza database ed eseguire il comando riportato di seguito.

   ```
   SHOW shared_preload_libraries;
   ```

   L'aspetto dell'output sarà simile al seguente:

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

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

**Installare l'estensione plrust nel parametro shared\$1preload\$1libraries**

Eseguire i seguenti passaggi utilizzando un account membro del gruppo `rds_superuser` (ruolo).

1. Usa il [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) AWS CLI comando per aggiungere plrust al `shared_preload_libraries` parametro.

   ```
   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. Utilizzate il [reboot-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/reboot-db-instance) AWS CLI comando per riavviare l'istanza DB e inizializzare la libreria plrust. Il completamento del riavvio iniziale potrebbe richiedere più tempo.

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

1. Quando l'istanza è disponibile, è possibile verificare se plrust è stato inizializzato. Utilizzare `psql` per connettersi all'istanza database ed eseguire il comando riportato di seguito.

   ```
   SHOW shared_preload_libraries;
   ```

   L'aspetto dell'output sarà simile al seguente:

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

## Creazione di funzioni con PL/Rust
<a name="PL_Rust-create-function"></a>

PL/Rust compilerà la funzione come libreria dinamica, la caricherà e la eseguirà.

La seguente funzione Rust filtra i multipli da un array.

```
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;
```

## Utilizzo dei formati crate con PL/Rust
<a name="PL_Rust-crates"></a>

Nelle versioni 16.3-R2 e successive di RDS per PostgreSQL, 15.7-R2 e versioni successive 15, 14.12-R2 e 14 versioni successive e 13.15-R2 e 13 versioni successive, supporta casse aggiuntive: PL/Rust 
+ `url` 
+ `regex` 
+ `serde` 
+ `serde_json` 

Nelle versioni 15.5-R2 e successive di RDS per PostgreSQL, 14 versioni 14.10-R2 e successive e 13.13-R2 e versioni successive 13, supporta due casse aggiuntive: PL/Rust 
+ `croaring-rs` 
+ `num-bigint` 

A partire dalle versioni 15.4, 14.9 e 13.12 di Amazon RDS for PostgreSQL, supporta le seguenti casse: PL/Rust 
+ `aes` 
+ `ctr` 
+ `rand` 

Per questi formati sono supportate solo le funzionalità predefinite. Le nuove versioni di RDS per PostgreSQL potrebbero contenere versioni aggiornate di questi formati e le relative versioni precedenti potrebbero non essere più supportate.

Segui le best practice per eseguire un aggiornamento di una versione principale per verificare se le tue PL/Rust funzioni sono compatibili con la nuova versione principale. Per ulteriori informazioni, consulta il blog [Best practices for upgrading Amazon RDS to major and minor versions of PostgreSQL](https://aws.amazon.com/blogs/database/best-practices-for-upgrading-amazon-rds-to-major-and-minor-versions-of-postgresql/) (Best practice per l'aggiornamento di Amazon RDS alle versioni principali e secondarie di PostgreSQL) e [Aggiornamento del motore del database PostgreSQL per Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.PostgreSQL.html) nella Guida per l'utente Amazon RDS. 

Esempi di utilizzo delle dipendenze durante la creazione di una PL/Rust funzione sono disponibili in [Usa dipendenze](https://tcdi.github.io/plrust/use-plrust.html#use-dependencies).

## Limitazioni del linguaggio PL/Rust
<a name="PL_Rust-limitations"></a>

Per impostazione predefinita, gli utenti del database non possono utilizzarePL/Rust. To provide access to PL/Rust, connettersi come utente con il privilegio rds\$1superuser ed eseguire il comando seguente:

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