Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memutakhirkan dan menggunakan ekstensi PLV8
PLV8 adalah ekstensi bahasa Javascript tepercaya untuk PostgreSQL. Anda dapat menggunakannya untuk prosedur tersimpan, pemicu, dan kode prosedural lainnya yang dapat dipanggil dari SQL. Ekstensi bahasa ini didukung oleh semua rilis PostgreSQL saat ini.
Jika Anda menggunakan PLV8
Proses pemutakhiran menjatuhkan semua PLV8 fungsi Anda yang ada. Oleh karena itu, kami menyarankan Anda membuat snapshot dari instans DB RDS for PostgreSQL Anda sebelum meningkatkan. Untuk informasi selengkapnya, lihat Membuat snapshot DB untuk instans DB AZ tunggal untuk Amazon RDS.
penting
Dimulai dengan PostgreSQL versi 18, Amazon RDS for PostgreSQL akan menghentikan ekstensi dan PostgreSQL. plcoffee
plls
Kami menyarankan Anda berhenti menggunakan CoffeeScript dan LiveScript dalam aplikasi Anda untuk memastikan Anda memiliki jalur peningkatan untuk upgrade versi engine masa depan.
Untuk menyinkronkan metadata katalog Anda dengan versi baru PLV8
-
Verifikasi bahwa Anda perlu memperbarui. Untuk melakukannya, jalankan perintah berikut saat terhubung dengan instans Anda.
SELECT * FROM pg_available_extensions WHERE name IN ('plv8','plls','plcoffee');
Jika hasil Anda berisi nilai untuk versi terinstal yang lebih rendah dari versi default, lanjutkan dengan prosedur ini untuk memperbarui ekstensi Anda. Misalnya, kumpulan hasil berikut menunjukkan bahwa Anda harus memperbarui.
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)
-
Buat snapshot instans DB RDS for PostgreSQL Anda jika Anda belum melakukannya. Anda dapat melanjutkan dengan langkah-langkah berikut saat snapshot sedang dibuat.
-
Dapatkan hitungan jumlah PLV8 fungsi dalam instans DB Anda sehingga Anda dapat memvalidasi bahwa semuanya ada setelah peningkatan. Misalnya, kueri SQL berikut mengembalikan jumlah fungsi yang ditulis dalam plv8, plcoffee, and 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');
-
Gunakan pg_dump untuk membuat file dump hanya untuk skema. Misalnya, buat file di mesin klien Anda di direktori
/tmp
../pg_dump -Fc --schema-only -U master postgres >/tmp/test.dmp
Contoh ini menggunakan hal berikut:
-
-Fc
– Format kustom -
--schema-only – Buang perintah yang diperlukan untuk membuat skema (fungsi dalam kasus ini)
-
-U
– Nama pengguna utama RDS -
database
– Nama untuk basis data di instans DB Anda
Untuk informasi selengkapnya, lihat pg_dump
dalam dokumentasi PostgreSQL. -
-
Ekstrak pernyataan DDL "CREATE FUNCTION" yang ada di berkas dump. Contoh berikut menggunakan perintah
grep
untuk mengekstrak pernyataan DDL yang menciptakan fungsi dan menyimpannya ke file. Anda menggunakan ini dalam langkah-langkah berikutnya untuk membuat ulang fungsi../pg_restore -l /tmp/test.dmp | grep FUNCTION > /tmp/function_list
Untuk informasi selengkapnya pada pg_restore, lihat pg_restore
dalam dokumentasi PostgreSQL. -
Hapus sementara fungsi dan ekstensi. Contoh berikut menjatuhkan objek PLV8 berbasis apa pun. Opsi kaskade memastikan bahwa ketergantungan apa pun dapat dihapus sementara.
DROP EXTENSION plv8 CASCADE;
Jika instans PostgreSQL Anda berisi objek berdasarkan plcoffee atau plls, ulangi langkah ini untuk ekstensi tersebut.
-
Buat ekstensi. Contoh berikut untuk membuat ekstensi plv8, plcoffee, dan plls.
CREATE EXTENSION plv8; CREATE EXTENSION plcoffee; CREATE EXTENSION plls;
-
Buat fungsi menggunakan file dump dan file "driver".
Contoh berikut membuat ulang fungsi yang Anda ekstrak sebelumnya.
./pg_restore -U master -d postgres -Fc -L /tmp/function_list /tmp/test.dmp
-
Verifikasi bahwa semua fungsi Anda telah dibuat ulang dengan menggunakan kueri berikut.
SELECT * FROM pg_available_extensions WHERE name IN ('plv8','plls','plcoffee');
PLV8 Versi 2 menambahkan baris tambahan berikut ke set hasil Anda:
proname | nspname | lanname ---------------+------------+---------- plv8_version | pg_catalog | plv8