適用於 PostgreSQL 的受信任語言延伸模組的函數參考
檢視下列有關適用於 PostgreSQL 的受信任語言延伸模組中提供之函數的參考文件。使用這些函數來安裝、註冊、更新和管理您的 TLE 延伸模組,亦即您使用受信任語言延伸模組開發套件所開發的 PostgreSQL 延伸模組。
函數
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– 對於 TLE 延伸模組,此值一律為false。建立 TLE 延伸模組或更新它所需的許可,與在指定資料庫中建立其他物件所需的許可相同。trusted– 對於 TLE 延伸模組,此值一律為false。relocatable– 對於 TLE 延伸模組,此值一律為false。schema– 指定其中安裝 TLE 延伸模組的結構描述名稱。requires– 一種陣列,其中包含此 TLE 延伸模組所需之其他延伸模組的名稱。description– TLE 延伸模組的詳細描述。
如需輸出值的詳細資訊,請參閱 PostgreSQL 文件中的將相關物件封裝為延伸模組 > 延伸模組檔案
使用範例
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延伸模組會自動新增為相依性。
其中許多引數與延伸模組控制檔中包含的引數相同,用於在 PostgreSQL 執行個體的檔案系統上安裝 PostgreSQL 延伸模組。如需詳細資訊,請參閱 PostgreSQL 文件中將相關物件封裝為延伸模組
輸出
此函數會在成功時傳回 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 會將指定的內部 PostgreSQL 功能新增至 pgtle.feature_info 資料表。PostgreSQL 掛鉤是內部 PostgreSQL 功能的範例。受信任語言延伸模組開發套件支援使用 PostgreSQL 掛鉤。目前,此函數支援下列功能。
passcheck– 使用自訂 PostgreSQL 密碼檢查行為的程序或函數註冊密碼檢查掛鉤。
函數原型
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 函數會將指定的 PostgreSQL 功能新增至 pgtle.feature_info 資料表,並識別 TLE 延伸模組或其他使用該功能的程序或函數。如需掛鉤和受信任語言延伸模組的詳細資訊,請參閱 搭配您的延伸模組使用 PostgreSQL 掛鉤。
函數原型
pgtle.register_feature_if_not_exists(proc regproc, feature pg_tle_feature)
角色
pgtle_admin
引數
proc– 預存程序或函數的名稱,此預存程序或函數包含可用作 TLE 延伸功能之功能的邏輯 (程式碼)。例如,pw_hook程式碼。feature– 要針對 TLE 函數註冊的 PostgreSQL 功能名稱。目前,唯一可用的功能為passcheck掛鉤。如需詳細資訊,請參閱 密碼檢查掛鉤 (passcheck)。
輸出
在針對指定的延伸模組註冊功能之後傳回 true。如果此功能已註冊,則會傳回 false。
使用範例
SELECT pgtle.register_feature_if_not_exists('pw_hook', 'passcheck');
pgtle.set_default_version
set_default_version 函數可讓您針對 TLE 延伸模組指定 default_version。您可以使用此函數來定義升級路徑,並將該版本指定為 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 延伸模組的所有版本。此函數可防止未來呼叫 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 延伸模組的指定版本。此函數可防止 CREATE
EXTENSION 和 ALTER 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– 當 TLE 延伸模組不存在於資料庫中時傳回false。
使用範例
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 函數類似於 uninstall_update_path,在這裡其會從 TLE 延伸模組中移除指定的更新路徑。不過,如果更新路徑不存在,則此函數不會引發錯誤訊息。反之,此函數會傳回 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 功能 (例如掛鉤) 的函數。如需詳細資訊,請參閱 搭配您的延伸模組使用 PostgreSQL 掛鉤。在成功取消註冊功能之後傳回 true。如果功能未註冊,則會傳回 false。
如需為 TLE 延伸模組註冊 pg_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');