PostgreSQL在何處處理 sql查詢

2021-09-22 11:12:11 字數 387 閱讀 9859

如果我開乙個psql視窗,來輸入sql文,它在資料庫的何處被解析?在何處被"真正"處理?

postgres.c 的 int postgresmain(int argc, char *ar**, const char *username)函式中,

在 postgresmain 的 for 迴圈中,

呼叫  static void exec_******_query(const char *query_string),來構建語法樹,並完成sql 處理。

「純」語法樹由 pg_parse_query 來生成,生成後,由 exec_******_query的其它部分來利用執行訪問資料庫。

呼叫  void  readyforquery(commanddest dest) 來向終端顯示結果。

PostgreSQL在何處處理 sql查詢之二十九

接前面,繼續分析 chooseportalstrategy chooseportalstrategy select portal execution strategy given the intended statement list.the list elements can be querys,...

PostgreSQL在何處處理 sql查詢之三十

接前面,繼續分析 portalstrategy chooseportalstrategy list stmts else if isa stmt,plannedstmt else portal one returning has to allow auxiliary queries added by...

PostgreSQL在何處處理 sql查詢之三十一

回到上乙個層面,繼續看 portalstart的處理 void portalstart portal portal,paramlistinfo params int eflags,bool use active snapshot pg catch pg end try 由之前的分析可以知道,滿足 c...