關於PostgreSQL的系統資訊函式的OID
一、自帶的OID的相關指令碼
在PostgreSQL的安裝包的src/include/catalog目錄下,有著兩個指令碼,unused_oids和 duplicate_oids。透過這兩個可執行指令碼,可以檢視當前原始碼包配置裡的符合要求的OID。unused_oids可以檢視若根據當前原始碼包初始化產生的資料庫,在系統表中未被使用的OID,duplicate_oids可以找到在系統表重複定義的OID。
當我們執行unused_oids指令碼的時候,就會出現類似如下的顯示, 可以獲取到這個PostgreSQL 尚未使用的 OID 列表。 假設當你想建立一個系統資訊函式 的時候,你需要生成不會產生任何衝突的 OID 。這個時候使用這個指令碼是很方便的,官方推薦的範圍是8000到9999,如果增加的補丁佔用的OID相互衝突了,那麼可能就會產生相關問題,此時另一個指令碼duplicate_oids的意義也就出現了。
對於每個具有任何手動建立的初始資料(有些沒有)的目錄都有一個相應的.dat檔案,其中包含其以可編輯格式的初始資料 。這些.dat檔案裡都包含 Perl 資料結構文字 。這些文字被求值以生成記憶體中的資料結構。當用上邊的方法獲取了可使用的OID後,就可以在此類.dat檔案裡定義函式初始資料的格式以及其OID了。
二、測試
如下我們做個測試
透過上邊指令碼我們已經能夠看到111這個OID是沒有被使用的。
而我們查詢原本資料庫裡的pg_backend_pid 函式,其對應的OID為2026 ,我們接下來對此係統內建函式的OID進行修改。
直接檢視src/include/catalog下的pg_proc.dat裡。資料庫裡的系統表裡關於pg_backend_pid 的OID和其是能對應上的。
此時我們修改此條記錄,將2026修改為111。並且儲存退出。
重新編譯,並且initdb到一個新的路徑。啟動資料庫
[xmaster@mogdb-kernel-0005 postgresql-14.1]$ ./configure --prefix=/home/xmaster/pg_oids [xmaster@mogdb-kernel-0005 postgresql-14.1]$ make -j 24 [xmaster@mogdb-kernel-0005 postgresql-14.1]$ make install -j 24 [xmaster@mogdb-kernel-0005 postgresql-14.1]$ cd /home/xmaster/pg_oids/bin [xmaster@mogdb-kernel-0005 bin]$ ./initdb -D /data/ysl_oids/data 修改完埠後,啟動資料庫 [xmaster@mogdb-kernel-0005 bin]$ pg_ctl start -D /data/ysl_oids/data/
此時,pg_backend_pid 這個函式的OID已經被改成了我定義的111。
然後再檢視我初始化使用的安裝包的裡的unused_oids指令碼,發現2026已經成為未被使用的狀態,而111已經從這個結果裡消失了。因為pg_proc.dat檔案裡我進行了修改。
此篇雖然是修改了已經內建的函式的OID,但是同樣的,想建立新內建函式的時候,宣告並定義新增函式後,也可以用這個方式給函式分配對應的OID。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2933374/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於在PostgreSQL中使用extract函式以及epochSQL函式
- 關於count函式的理解函式
- 關於lag函式的用法函式
- 關於分散式系統分散式
- 關於dbms_stats對系統統計資訊的管理
- 關於scanf函式的問題函式
- 關於函式索引的問題?函式索引
- Oracle中關於函式的使用Oracle函式
- 關於qt中的tr()函式QT函式
- 關於Oracle取整的函式Oracle函式
- 分散式系統–>(關於系統應用的基本概念)分散式
- 關於建構函式與解構函式的分享函式
- PostgreSQL>視窗函式的用法SQL函式
- PostgreSQL的 SPI_介面函式SQL函式
- 關於cuda中的函式問題函式
- 關於oracle內建函式的使用Oracle函式
- 關於字串的功能函式小結字串函式
- 基於句法結構與語義資訊核函式的搭配關係抽取函式
- 理解 PostgreSQL 的 count 函式的行為SQL函式
- 核心函式 系統呼叫 系統命令 庫函式函式
- 關於 js 中的回撥函式 callbackJS函式
- 關於執行緒的幾個函式執行緒函式
- 關於緩動動畫函式的封裝動畫函式封裝
- 關於scala中的主建構函式函式
- C語言中關於時間的函式函式
- 關於建構函式的一點理解函式
- 關於字串的幾個有用函式 (轉)字串函式
- 關於C++當中的“模板函式”C++函式
- 關於函式指標函式指標
- MySQL全面瓦解13:系統函式相關MySql函式
- 為基於函式index所產生的虛擬列蒐集統計資訊!函式Index
- 關於類的建構函式不能為虛擬函式的幾點理由!函式
- 關於Swift中的泛函式find的問題Swift函式
- UNIX系統備份關鍵的資訊
- 關於列的直方圖統計資訊直方圖
- PostgreSQL核心自帶的Oracle相容函式SQLOracle函式
- PostgreSQL的generate_series函式應用SQL函式
- 關於javascript中變數及函式的提升JavaScript變數函式