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à.
Aggiornamento e utilizzo dell'estensione PLV8
PLV8 è un'estensione affidabile del linguaggio Javascript per PostgreSQL. Puoi utilizzarlo per le procedure archiviate, i trigger e altri codici procedurali richiamabili da SQL. Questa estensione della lingua è supportata da tutte le versioni correnti di PostgreSQL.
Se usi PLV8
Il processo di aggiornamento elimina tutte le funzioni esistenti PLV8 . Pertanto, consigliamo di creare uno snapshot dell’istanza database di RDS for PostgreSQL prima dell'aggiornamento. Per ulteriori informazioni, consulta Creazione di uno snapshot DB per un'istanza DB Single-AZ per Amazon RDS.
Importante
A partire dalla versione 18 di PostgreSQL, Amazon RDS for PostgreSQL renderà obsolete le estensioni e PostgreSQL. plcoffee
plls
Ti consigliamo di smettere di usare CoffeeScript e LiveScript nelle tue applicazioni per assicurarti di disporre di un percorso di aggiornamento per i futuri aggiornamenti delle versioni del motore.
Per sincronizzare i metadati del catalogo con una nuova versione di PLV8
-
Verificare la necessità dell'aggiornamento. Per procedere, eseguire il comando seguente durante la connessione alla propria istanza.
SELECT * FROM pg_available_extensions WHERE name IN ('plv8','plls','plcoffee');
Se i risultati contengono valori per una versione installata inferiore rispetto alla versione predefinita, continuare con la procedura per aggiornare le estensioni. Ad esempio, il seguente set di risultati indica che è necessario eseguire l'aggiornamento:
name | default_version | installed_version | comment --------+-----------------+-------------------+-------------------------------------------------- plls | 2.1.0 | 1.5.3 | PL/LiveScript (v8) trusted procedural language plcoffee| 2.1.0 | 1.5.3 | PL/CoffeeScript (v8) trusted procedural language plv8 | 2.1.0 | 1.5.3 | PL/JavaScript (v8) trusted procedural language (3 rows)
-
Crea uno snapshot della tua istanza database RDS for PostgreSQL se non lo hai ancora fatto. Puoi continuare con la seguente procedura una volta creata la snapshot.
-
Ottieni un conteggio del numero di PLV8 funzioni nella tua istanza DB in modo da poter verificare che siano tutte disponibili dopo l'aggiornamento. Ad esempio, la seguente query SQL restituisce il numero di funzioni scritte in plv8, plcoffee e plls.
SELECT proname, nspname, lanname FROM pg_proc p, pg_language l, pg_namespace n WHERE p.prolang = l.oid AND n.oid = p.pronamespace AND lanname IN ('plv8','plcoffee','plls');
-
Utilizzare pg_dump per creare un file dump solo schema. Ad esempio, crea un file nel computer client nella directory
/tmp
../pg_dump -Fc --schema-only -U master postgres >/tmp/test.dmp
In questo esempio vengono utilizzate le seguenti opzioni:
-
-Fc
– Formato personalizzato -
--schema-only – Esecuzione del dump solo dei comandi necessari per creare lo schema (funzioni in questo caso)
-
-U
– Nome utente principale di RDS -
database
– Nome del database nell'istanza database
Per ulteriori informazioni su pg_dump, consulta pg_dump
nella documentazione di PostgreSQL. -
-
Estrarre l'istruzione DDL "CREATE FUNCTION" presente nel file dump. Gli esempi seguenti utilizzano il comando
grep
per estrarre l'istruzione DDL che crea le funzioni e salvarle in un file. Verrà utilizzata nelle fasi successive per ricreare le funzioni../pg_restore -l /tmp/test.dmp | grep FUNCTION > /tmp/function_list
Per ulteriori informazioni su pg_restore, consulta pg_dump
nella documentazione di PostgreSQL. -
Eliminare le funzioni e le estensioni. L'esempio seguente elimina tutti gli oggetti PLV8 basati. L'opzione a cascata assicura l'eliminazione di ogni elemento dipendente.
DROP EXTENSION plv8 CASCADE;
Se l'istanza PostgreSQL contiene degli oggetti basati su plcoffee o plls, ripetere la procedura per quelle estensioni.
-
Creare le estensioni. Il seguente esempio crea le estensioni plv8, plcoffee e plls.
CREATE EXTENSION plv8; CREATE EXTENSION plcoffee; CREATE EXTENSION plls;
-
Creare le funzioni utilizzando il file dump e il file "driver".
Il seguente esempio ricrea le funzioni estratte in precedenza.
./pg_restore -U master -d postgres -Fc -L /tmp/function_list /tmp/test.dmp
-
Verifica che tutte le funzioni siano state ricreate utilizzando la seguente query.
SELECT * FROM pg_available_extensions WHERE name IN ('plv8','plls','plcoffee');
La PLV8 versione 2 aggiunge la seguente riga aggiuntiva al set di risultati:
proname | nspname | lanname ---------------+------------+---------- plv8_version | pg_catalog | plv8