PostgreSQL DDL操作解析

本文介紹PG DDL操作上層接口。

1、DDL操作的入口函數是ExecModifyTable,insert、delete、update都會進入這個函數,如果爲insert,執行ExecProcNode的時候不會調用掃描函數execSeqScan,會走向其他分支。

2、DELETE或者UPDATE會先進行掃描,全表掃描的話最終會調用heapam handler的函數heap_getnextslot函數獲取一個記錄,然後和條件比對,如果符合條件則返回上層,否則查詢下一個記錄。

3、需要將上面步驟得到的記錄的TID提取出來,然後後續刪除或更新的時候,通過TID直接定位到記錄。(如果是insert,則不進入這一步)

4、根據操作類型分別進入各自DDL分支

5、循環退出條件爲planSlot = ExecProcNode,得到的plantSlot爲NULL

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章