本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Postgre 可信任語言擴充功能的函數參考 SQL
檢視下列有關 Postgre SQL 信任語言擴充功能中可用之函數的參考文件。使用這些功能來安裝、註冊、更新和管理您的TLE擴充功能,也就是您使用受信任語言SQL擴充功能開發套件開發的 Postgre 擴充功能。
函數
- pgtle.available_extensions
- pgtle.available_extension_versions
- pgtle.extension_update_paths
- pgtle.install_extension
- pgtle.install_update_path
- pgtle.register_feature
- pgtle.register_feature_if_not_exists
- pgtle.set_default_version
- pgtle.uninstall_extension(name)
- pgtle.uninstall_extension(name, version)
- pgtle.uninstall_extension_if_exists
- pgtle.uninstall_update_path
- pgtle.uninstall_update_path_if_exists
- pgtle.unregister_feature
- pgtle.unregister_feature_if_exists
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 EXTENSION
和ALTER 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 EXTENSION
止CREATE
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
後傳回。false
—false
當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
功能名稱。
輸出
傳回 true
或 false
,如下所示。
true
– 函數已成功從延伸模組中取消註冊功能。false
— 該功能無法從TLE擴展名中取消註冊該功能。
使用範例
SELECT * FROM pgtle.unregister_feature_if_exists('pw_hook', 'passcheck');