Postgre 可信任語言擴充功能的函數參考 SQL - Amazon Relational Database Service

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

Postgre 可信任語言擴充功能的函數參考 SQL

檢視下列有關 Postgre SQL 信任語言擴充功能中可用之函數的參考文件。使用這些功能來安裝、註冊、更新和管理您的TLE擴充功能,也就是您使用受信任語言SQL擴充功能開發套件開發的 Postgre 擴充功能。

pgtle.available_extensions

pgtle.available_extensions 函數是一個設定-傳回函數。它返回數據庫中的所有可用TLE擴展。每個傳回的資料列都包含單一TLE副檔名的相關資訊

函數原型

pgtle.available_extensions()

角色

無。

引數

無。

輸出

  • name— 副檔名的TLE名稱。

  • default_version— 在未指定版本的情況下呼CREATE EXTENSION叫時使用的TLE擴充功能版本。

  • description-有關TLE擴展的更詳細描述。

使用範例

SELECT * FROM pgtle.available_extensions();

pgtle.available_extension_versions

available_extension_versions 函數是一個設定-傳回函數。它返回所有可用TLE擴展及其版本的列表。每一列都包含指定TLE擴充功能之特定版本的相關資訊,包括是否需要特定角色。

函數原型

pgtle.available_extension_versions()

角色

無。

引數

無。

輸出

  • name— 副檔名的TLE名稱。

  • version— TLE 擴充功能的版本。

  • superuser— 此值始終適false用於您的TLE擴展。建立擴充功能或更新TLE擴充功能所需的權限與在指定資料庫中建立其他物件的權限相同。

  • trusted— 此值永遠適false用於TLE延伸模組。

  • relocatable— 此值永遠適false用於TLE延伸模組。

  • schema— 指定安裝TLE擴充功能的結構描述名稱。

  • requires-包含此擴展名所需的其他擴展名的TLE名稱的數組。

  • description— TLE 擴充功能的詳細說明。

如需有關輸出值的詳細資訊,請參閱 Postgre SQL 文件中的將相關物件封裝至延伸功能 > 延伸功能檔案。

使用範例

SELECT * FROM pgtle.available_extension_versions();

pgtle.extension_update_paths

extension_update_paths 函數是一個設定-傳回函數。它返回一個TLE擴展的所有可能的更新路徑的列表。每一列都包含該TLE擴充功能的可用升級或降級。

函數原型

pgtle.extension_update_paths(name)

角色

無。

引數

name— 要從中取得升級路徑的TLE擴充功能名稱。

輸出

  • source – 更新的來源版本。

  • target – 更新的目標版本。

  • path— 用於將TLE延伸功能從source版本更新到target版本的升級路徑,例如,0.1--0.2.

使用範例

SELECT * FROM pgtle.extension_update_paths('your-TLE');

pgtle.install_extension

install_extension功能允許您在數據庫中安裝構成TLE擴展程序的成品,然後可以使用CREATE EXTENSION命令創建它。

函數原型

pgtle.install_extension(name text, version text, description text, ext text, requires text[] DEFAULT NULL::text[])

角色

無。

引數

  • name— 副檔名的TLE名稱。呼叫 CREATE EXTENSION 時會使用此值。

  • version— TLE 擴充功能的版本。

  • description— 關於TLE擴充功能的詳細說明。此描述顯示在 pgtle.available_extensions()comment 欄位中。

  • ext— TLE 擴充功能的內容。此值包含函數之類的物件。

  • requires— 可選參數,指定此TLE擴充功能的相依性。pg_tle 延伸模組會自動新增為相依性。

這些引數中的許多引數與包含在 Postgre 實例的檔案系統上安裝 Postgre SQL 副檔名時所包含的引數相同。SQL如需詳細資訊,請參閱 Postgre SQL 文件中的將相關物件封裝至延伸模組中的延伸案。

輸出

此函數會在成功時傳回 OK,以及在發生錯誤時傳回 NULL

  • OK— TLE 擴充功能已成功安裝在資料庫中。

  • NULL— TLE 擴充功能尚未成功安裝在資料庫中。

使用範例

SELECT pgtle.install_extension( 'pg_tle_test', '0.1', 'My first pg_tle extension', $_pgtle_$ CREATE FUNCTION my_test() RETURNS INT AS $$ SELECT 42; $$ LANGUAGE SQL IMMUTABLE; $_pgtle_$ );

pgtle.install_update_path

install_update_path函數提供了TLE擴展的兩個不同版本之間的更新路徑。此功能允許TLE擴展程序的用戶通過使用ALTER EXTENSION ... UPDATE語法更新其版本。

函數原型

pgtle.install_update_path(name text, fromvers text, tovers text, ext text)

角色

pgtle_admin

引數

  • name— 副檔名的TLE名稱。呼叫 CREATE EXTENSION 時會使用此值。

  • fromvers— 升級的TLE延伸功能的來源版本。

  • tovers— 升級TLE擴充功能的目的地版本。

  • ext – 更新的內容。此值包含函數之類的物件。

輸出

無。

使用範例

SELECT pgtle.install_update_path('pg_tle_test', '0.1', '0.2', $_pgtle_$ CREATE OR REPLACE FUNCTION my_test() RETURNS INT AS $$ SELECT 21; $$ LANGUAGE SQL IMMUTABLE; $_pgtle_$ );

pgtle.register_feature

register_feature函數將指定的內部 Postgre SQL 功能添加到pgtle.feature_info表中。後SQL掛鉤是內部 Postgre 特徵的一個範例。SQL受信任的語言擴充功能開發套件支援 Postgre SQL 掛接的使用。目前,此函數支援下列功能。

  • passcheck— 使用自訂 Postgre SQL 密碼檢查行為的程序或函數註冊密碼檢查鉤子。

函數原型

pgtle.register_feature(proc regproc, feature pg_tle_feature)

角色

pgtle_admin

引數

  • proc – 要用於功能的預存程序或函數名稱。

  • feature – 要向函數註冊的 pg_tle 功能 (例如 passcheck) 名稱。

輸出

無。

使用範例

SELECT pgtle.register_feature('pw_hook', 'passcheck');

pgtle.register_feature_if_not_exists

pgtle.register_feature_if_not_exists函數會將指定的 Postgre SQL 特徵新增至pgtle.feature_info表格,並識別使用該功能的TLE副檔名或其他程序或函數。如需掛鉤和受信任語言延伸模組的詳細資訊,請參閱 使用後SQL掛鉤與您TLE的擴展

函數原型

pgtle.register_feature_if_not_exists(proc regproc, feature pg_tle_feature)

角色

pgtle_admin

引數

  • proc— 預存程序或函數的名稱,此預存程序或函數包含要用作TLE擴充功能的邏輯 (程式碼)。例如,pw_hook 程式碼。

  • feature— 要為TLE函數註冊的 Postgre SQL 功能的名稱。目前,唯一可用的功能為 passcheck 掛鉤。如需詳細資訊,請參閱密碼檢查掛鉤 (passcheck)

輸出

在針對指定的延伸模組註冊功能之後傳回 true。如果此功能已註冊,則會傳回 false

使用範例

SELECT pgtle.register_feature_if_not_exists('pw_hook', 'passcheck');

pgtle.set_default_version

set_default_version函數可讓您default_version為TLE擴充功能指定。您可以使用此函數來定義升級路徑,並將版本指定為TLE擴充功能的預設版本。當資料庫使用者在CREATE EXTENSIONALTER EXTENSION ... UPDATE命令中指定您的TLE擴充功能時,該版本的TLE擴充功能就會在該使用者的資料庫中建立。

成功時此函數會傳回 true。如果在name引數中指定的TLE擴展名不存在,該函數返回一個錯誤。同樣地,如果TLE擴充功能不存在,則會傳回錯誤。version

函數原型

pgtle.set_default_version(name text, version text)

角色

pgtle_admin

引數

  • name— 副檔名的TLE名稱。呼叫 CREATE EXTENSION 時會使用此值。

  • version— 要設定預設值的TLE擴充功能版本。

輸出

  • true – 設定預設版本成功時,函數會傳回 true

  • ERROR— 如果具有指定名稱或版本的TLE擴充功能不存在,則傳回錯誤訊息。

使用範例

SELECT * FROM pgtle.set_default_version('my-extension', '1.1');

pgtle.uninstall_extension(name)

uninstall_extension函數從數據庫中刪除TLE擴展的所有版本。此功能可防止 future 的CREATE EXTENSION呼叫安裝TLE擴充功能。如果TLE擴充功能不存在於資料庫中,就會引發錯誤。

uninstall_extension函數不會刪除當前在數據庫中活動的TLE擴展。要刪除當前活動的TLE擴展程序,您需要明確調用DROP EXTENSION以刪除它。

函數原型

pgtle.uninstall_extension(extname text)

角色

pgtle_admin

引數

  • extname— 要解除安裝的TLE擴充功能名稱。此名稱與用CREATE EXTENSION來載入TLE擴充功能以在指定資料庫中使用的名稱相同。

輸出

無。

使用範例

SELECT * FROM pgtle.uninstall_extension('pg_tle_test');

pgtle.uninstall_extension(name, version)

uninstall_extension(name, version)函數從數據庫中刪除TLE擴展的指定版本。此功能可防ALTER EXTENSIONCREATE EXTENSION並安裝或更新指定版本的TLE擴充功能。此函數也會移除指定TLE擴充功能版本的所有更新路徑。如果TLE擴充功能目前在資料庫中處於作用中狀態,則此功能不會解除安裝。您必須明確呼叫DROP EXTENSION以移除TLE擴充功能。若要解除安裝TLE擴充功能的所有版本,請參閱pgtle.uninstall_extension(name)

函數原型

pgtle.uninstall_extension(extname text, version text)

角色

pgtle_admin

引數

  • extname— 副檔名的TLE名稱。呼叫 CREATE EXTENSION 時會使用此值。

  • version— 要從資料庫解除安裝的TLE延伸功能版本。

輸出

無。

使用範例

SELECT * FROM pgtle.uninstall_extension('pg_tle_test', '0.2');

pgtle.uninstall_extension_if_exists

uninstall_extension_if_exists函數從給定的數據庫中刪除TLE擴展的所有版本。如果TLE擴展不存在,該函數返回靜默(不引發錯誤消息)。如果指定的延伸模組目前在資料庫內作用中,則此函數不會捨棄它。在使用此函數DROP EXTENSION解除安裝其成品之前,您必須明確呼叫移除TLE擴充功能。

函數原型

pgtle.uninstall_extension_if_exists(extname text)

角色

pgtle_admin

引數

  • extname— 副檔名的TLE名稱。呼叫 CREATE EXTENSION 時會使用此值。

輸出

在解除安裝指定的延伸模組之後,uninstall_extension_if_exists 函數會傳回 true。如果指定的延伸模組不存在,函數會傳回 false

  • true— 解除安裝TLE擴充功能true後傳回。

  • falsefalse 當TLE擴充功能不存在於資料庫中時傳回。

使用範例

SELECT * FROM pgtle.uninstall_extension_if_exists('pg_tle_test');

pgtle.uninstall_update_path

uninstall_update_path函數從TLE擴展中刪除特定的更新路徑。這樣可以防止 ALTER EXTENSION ... UPDATE TO 將其用作更新路徑。

如果此更新路徑上的其中一個版本目前正在使用此TLE延伸功能,則該擴充功能會保留在資料庫中。

如果指定的更新路徑不存在,此函數會引發錯誤。

函數原型

pgtle.uninstall_update_path(extname text, fromvers text, tovers text)

角色

pgtle_admin

引數

  • extname— 副檔名的TLE名稱。呼叫 CREATE EXTENSION 時會使用此值。

  • fromvers— 更新路徑上使用的TLE延伸功能的來源版本。

  • tovers— 在更新路徑上使用的TLE擴充功能的目標版本。

輸出

無。

使用範例

SELECT * FROM pgtle.uninstall_update_path('pg_tle_test', '0.1', '0.2');

pgtle.uninstall_update_path_if_exists

uninstall_update_path_if_exists函數類似於它從TLE擴展uninstall_update_path中刪除指定的更新路徑。不過,如果更新路徑不存在,則此函數不會引發錯誤訊息。反之,此函數會傳回 false

函數原型

pgtle.uninstall_update_path_if_exists(extname text, fromvers text, tovers text)

角色

pgtle_admin

引數

  • extname— 副檔名的TLE名稱。呼叫 CREATE EXTENSION 時會使用此值。

  • fromvers— 更新路徑上使用的TLE延伸功能的來源版本。

  • tovers— 在更新路徑上使用的TLE擴充功能的目標版本。

輸出

  • true— 函數已成功更新TLE擴充功能的路徑。

  • false— 函數無法更新TLE擴充功能的路徑。

使用範例

SELECT * FROM pgtle.uninstall_update_path_if_exists('pg_tle_test', '0.1', '0.2');

pgtle.unregister_feature

unregister_feature 函數會提供一種方法,來刪除已註冊為使用 pg_tle 功能 (例如掛鉤) 的函數。如需註冊功能的相關資訊,請參閱 pgtle.register_feature

函數原型

pgtle.unregister_feature(proc regproc, feature pg_tle_features)

角色

pgtle_admin

引數

  • proc – 要向 pg_tle 功能註冊的預存函數名稱。

  • feature – 要向函數註冊的 pg_tle 功能名稱。例如,passcheck 是一種功能,可以將其註冊以供您開發的受信任語言延伸模組使用。如需詳細資訊,請參閱密碼檢查掛鉤 (passcheck)

輸出

無。

使用範例

SELECT * FROM pgtle.unregister_feature('pw_hook', 'passcheck');

pgtle.unregister_feature_if_exists

unregister_feature 函數會提供一種方法,來刪除已註冊為使用 pg_tle 功能 (例如掛鉤) 的函數。如需詳細資訊,請參閱使用後SQL掛鉤與您TLE的擴展。在成功取消註冊功能之後傳回 true。如果功能未註冊,則會傳回 false

如需為擴充pg_tle功能註冊功能的相關資TLE訊,請參閱pgtle.register_feature

函數原型

pgtle.unregister_feature_if_exists('proc regproc', 'feature pg_tle_features')

角色

pgtle_admin

引數

  • proc – 已註冊來包含 pg_tle 功能的預存函數名稱。

  • feature – 已向受信任語言延伸模組註冊的 pg_tle 功能名稱。

輸出

傳回 truefalse,如下所示。

  • true – 函數已成功從延伸模組中取消註冊功能。

  • false— 該功能無法從TLE擴展名中取消註冊該功能。

使用範例

SELECT * FROM pgtle.unregister_feature_if_exists('pw_hook', 'passcheck');