升級和使用PLV8延伸模組 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

升級和使用PLV8延伸模組

PLV8 是 Postgre 的受信任 Javascript 語言延伸模組SQL。您可以將其用於可從 呼叫的預存程序、觸發程序和其他程序程式碼SQL。Postgre 的所有目前版本都支援此語言延伸SQL。

如果您使用 PostgreSQL PLV8並升級至新PLV8版本,您便可立即利用新的延伸模組。採取下列步驟,將目錄中繼資料與新版本的 同步PLV8。這些步驟為選用,但強烈建議您完成步驟以避免中繼資料不符的警告。

升級程序會捨棄所有現有的PLV8函數。因此,我們建議您在升級之前建立 RDS for PostgreSQL 資料庫執行個體的快照。如需詳細資訊,請參閱為 Amazon 的單一可用區域資料庫執行個體建立資料庫快照 RDS

將您的目錄中繼資料與新版本的 同步 PLV8
  1. 確認您需要更新。若要執行此動作,請在已連接至執行個體的情況下,執行下列命令。

    SELECT * FROM pg_available_extensions WHERE name IN ('plv8','plls','plcoffee');

    如果結果包含一個已安裝之版本的值,而此版本的編號小於預設版本,則請繼續此程序來更新擴充功能套件。例如,下列結果集表示您應該更新。

    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)
  2. 如果您尚未建立RDS適用於 PostgreSQL 資料庫執行個體的快照。建立快照時,您可以繼續執行下列步驟。

  3. 取得資料庫執行個體中PLV8函數的計數,以便您可以在升級後驗證這些函數都已就位。例如,下列SQL查詢會傳回以 plv8、plcoffee 和 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');
  4. 使用 pg_dump 建立只含結構描述的傾印檔案。例如,在 /tmp 目錄中建立用戶端機器上的檔案。

    ./pg_dump -Fc --schema-only -U master postgres >/tmp/test.dmp

    此範例使用下列選項:

    • -Fc – 自訂格式

    • --schema-only – 僅傾印建立結構描述所需的命令 (我們案例中的函數)

    • -U – RDS主要使用者名稱

    • database – 資料庫執行個體上的資料庫名稱

    如需 pg_dump 的詳細資訊,請參閱 PostgreSQL 文件中的 pg_dump

  5. 擷取傾印檔案中存在的 "CREATE FUNCTION" DDL陳述式。下列範例使用 grep命令來擷取建立函數的DDL陳述式,並將其儲存至 檔案。您將於後續步驟中使用此 ddl 來重新建立函數。

    ./pg_restore -l /tmp/test.dmp | grep FUNCTION > /tmp/function_list/

    如需 pg_restore 的詳細資訊,請參閱 PostgreSQL 文件中的 pg_restore

  6. 捨棄函數和擴充功能。下列範例會捨棄任何PLV8基礎物件。cascade 選項可確保捨棄任何相依物件。

    DROP EXTENSION plv8 CASCADE;

    如果您的 PostgreSQL 執行個體包含以 plcoffee 或 pll 為基礎的物件,請對這些延伸模組重複此步驟。

  7. 建立擴充功能。下列範例會建立 plv8、plcoffee 和 plls 擴充功能。

    CREATE EXTENSION plv8; CREATE EXTENSION plcoffee; CREATE EXTENSION plls;
  8. 使用傾印檔案和「驅動程式」檔案建立函數。

    下列範例會重新建立您先前擷取的函數。

    ./pg_restore -U master -d postgres -Fc -L /tmp/function_list /tmp/test.dmp
  9. 使用以下查詢驗證是否已重新建立所有函數。

    SELECT * FROM pg_available_extensions WHERE name IN ('plv8','plls','plcoffee');

    第 2 PLV8版會將下列額外資料列新增至您的結果集:

    proname | nspname | lanname ---------------+------------+---------- plv8_version | pg_catalog | plv8