上一篇我們介紹了查詢規(guī)劃模塊的總體流程和預處理部分的源碼。查詢規(guī)劃模塊再執(zhí)行完預處理之后,可以進入正式的查詢規(guī)劃處理流程了。
查詢規(guī)劃的主要工作由grouping_planner函數(shù)完成。在具體實現(xiàn)的時候,針對postgresql中獨有的繼承表,程序使用inheritance_planner函數(shù)來解決,該函數(shù)主要是先將繼承表的繼承關系變換為非繼承表來處理,然后仍然調用的是grouping_planner函數(shù)來完成查詢規(guī)劃的工作。
因此,我們說查詢規(guī)劃的主要工作在于grouping_planner函數(shù)。本篇的重點也是來解析該函數(shù)內部的調用關系和處理流程。
3.查詢規(guī)劃處理
這里大家真的要做好準備,因為grouping_planner函數(shù)本身就有將近1000行~
那什么,我們還是先上圖吧。有圖更清楚,文字太多大家也會暈的。以下是grouping_planner函數(shù)的流程圖。
grouping_planner函數(shù)是生成查詢計劃樹的主要函數(shù)。該函數(shù)首先要考慮查詢計劃中是否有集合操作(可通過查詢樹的setOperation變量來判斷)。如果有則需要進行集合操作:遍歷setOperation,為其中的每一個子查詢生成計劃。而對于非集合操作,計劃的生成過程如下:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26