国产在线99爱视频|亚洲AV成人久久无码|亚洲日韩成人片在线播放|精品日韩二区三区精品视频|国产精品成人麻豆视频网站|亚洲午夜AⅤ视频在线天堂|国产亚洲精品成人a·v久久|精品国产一区二区三区每日更新

鄭州華泰聯(lián)合工業(yè)物聯(lián)網(wǎng)云平臺

掃一掃關(guān)注

PG12/GP7操作符+的實(shí)現(xiàn)

   2022-04-02 OFweek電子工程網(wǎng)ofweek6140
導(dǎo)讀

介紹PostgreSQL12/GeenPlum7的操作符“+”的實(shí)現(xiàn)機(jī)制。首先以select id1+id2 from t;為例解釋其結(jié)構(gòu)體之間的關(guān)系。1、SeqScanState順序掃描狀態(tài)結(jié)構(gòu)Se

介紹PostgreSQL12/GeenPlum7的操作符“+”的實(shí)現(xiàn)機(jī)制。首先以select id1+id2 from t;為例解釋其結(jié)構(gòu)體之間的關(guān)系。

1、SeqScanState順序掃描狀態(tài)結(jié)構(gòu)

SeqScanState為順序掃描的節(jié)點(diǎn)狀態(tài)結(jié)構(gòu),內(nèi)有成員StateState ss:掃描狀態(tài)信息,該結(jié)構(gòu)有PlanState ps,有用的信息在這里。PlanState ps為計(jì)劃節(jié)點(diǎn)狀態(tài)結(jié)構(gòu),內(nèi)有重要的計(jì)算節(jié)點(diǎn)信息Plan *plan和條件過濾計(jì)算步驟ExprState qual、投影信息ProjectionInfo *ps_ProjInfo。

Plan結(jié)構(gòu)中有2個重要成員鏈表:targetlist投影信息列表和qual過濾條件列表。這里僅關(guān)注投影,因?yàn)閕d1+id2在投影中。targetlist實(shí)際上是2個TargetEntry,其中resno表示投影結(jié)果位于的結(jié)果列序號,resname為結(jié)果列名。Expr* expr指向Var結(jié)構(gòu),表示需要的是哪一列,varattno為用戶定義表列的列序號。

接著看投影結(jié)構(gòu),PlanState中的ps_ProjInfo,內(nèi)有重要成員ExprState pi_state,表示進(jìn)行投影計(jì)算的步驟描述。pi_state有成員ExprevalStep steps數(shù)組,對表達(dá)式計(jì)算的步驟描述。本例中有4步,分別為EEOP_SCAN_FETCHSOM、EEOP_SCAN_VAR、EEOP_SCAN_VAR、EEOP_FUNCEXPR_STRICT。由函數(shù)ExecInterpExpr執(zhí)行。

進(jìn)行+符號計(jì)算的步驟是最后一步,其代碼如下:


可以看到,計(jì)算前會對參數(shù)進(jìn)行NULL校驗(yàn),若由一個參數(shù)是NULL,則退出。

好,介紹到這里,下節(jié)解釋+符號對于的函數(shù)怎么獲取。

       微軟雅黑;font-size:14px;">原文標(biāo)題 : PG12/GP7操作符+的實(shí)現(xiàn)

 
(文/ofweek)
 
反對 0 舉報(bào) 0 收藏 0 打賞 0 評論 0
0相關(guān)評論
免責(zé)聲明
本文為ofweek原創(chuàng)作品,作者: ofweek。歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明原文出處:http://www.uwf831.com/news/show-1734.html 。本文僅代表作者個人觀點(diǎn),本站未對其內(nèi)容進(jìn)行核實(shí),請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,作者需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們3101218373@qq.com。
 

(c)2008-2020 HUATAILIANHE.CN SYSTEM All Rights Reserved

豫B2-20160018-3