2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不受支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

42.1. 概述 #

PL/Tcl 提供了大部分 C 語言函式編寫者所擁有的功能,但有一些限制,並且增加了 Tcl 強大的字串處理庫。

一個令人信服的良好限制是,所有內容都在 Tcl 直譯器的安全上下文中執行。除了安全 Tcl 的有限命令集外,只有少數命令可用於透過 SPI 訪問資料庫並透過 elog() 提高訊息級別。PL/Tcl 不提供訪問資料庫伺服器內部或在 C 函式可以執行的 PostgreSQL 伺服器程序許可權下獲得作業系統級別訪問的方法。因此,可以信任未授權的資料庫使用者使用此語言;它不會賦予他們無限的許可權。

另一個值得注意的實現限制是,Tcl 函式不能用於為新資料型別建立輸入/輸出函式。

有時,希望編寫不限於安全 Tcl 的 Tcl 函式。例如,可能希望有一個傳送電子郵件的 Tcl 函式。為了處理這些情況,有一個稱為 PL/TclU(代表不受信任的 Tcl)的 PL/Tcl 變體。這與 PL/Tcl 完全相同,只是使用了完整的 Tcl 直譯器。如果使用 PL/TclU,則必須將其安裝為不受信任的過程語言,以便只有資料庫超級使用者才能在其上建立函式。PL/TclU 函式的編寫者必須注意,該函式不能用於執行任何不希望的操作,因為它將能夠執行由以資料庫管理員身份登入的使用者可以執行的任何操作。

PL/TclPL/TclU 呼叫處理程式的共享物件程式碼會在安裝過程的配置步驟中指定 Tcl 支援的情況下,自動構建並安裝在 PostgreSQL 庫目錄中。要在特定資料庫中安裝 PL/Tcl 和/或 PL/TclU,請使用 CREATE EXTENSION 命令,例如 CREATE EXTENSION pltclCREATE EXTENSION pltclu

提交更正

如果您在文件中看到任何不正確的內容、與您對特定功能的體驗不符的內容,或需要進一步澄清的內容,請使用 此表單 報告文件問題。