国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

openGauss內(nèi)核分析(九):數(shù)據(jù)庫表的創(chuàng)建過程

2023-01-05 14:07 作者:Gauss松鼠會  | 我要投稿

除了DML之外的所有查詢都通過ProcessUtility模塊來執(zhí)行,包括了各類DDL語句、事務(wù)相關(guān)語句、游標相關(guān)語句等。上層調(diào)用函數(shù)為exec_simple_query函數(shù),其中PortalStart函數(shù)和PortalDrop函數(shù)部分較為簡單。核心函數(shù)是PortalRun函數(shù)下層調(diào)用的standard_ProcessUtility函數(shù),該函數(shù)通過switch case語句處理了各種類型的查詢語句,包括事務(wù)相關(guān)查詢、游標相關(guān)查詢、schema相關(guān)操作、表空間相關(guān)操作、表定義相關(guān)操作等。

standard_ProcessUtility函數(shù)會根據(jù)nodeTag(parsetree)的值來確定sql的操作類型,create table一般都是進入T_CreateStmt分支,調(diào)用CreateCommand函數(shù)。

CreateCommand函數(shù)先解析parse_tree獲取stmt,如果stmt為空則表明表已經(jīng)存在。如果stmt不為空對stmts進行遍歷,如果是?CreateStmt就調(diào)用DefineRelation。AlterTableCreateToastTable判斷是否需要創(chuàng)建toast表并創(chuàng)建,AlterCStoreCreateTables判斷是否需要創(chuàng)建列存表并創(chuàng)建。

?DefineRelation函數(shù)獲取到表名relname、名字空間relnamespace、表空間reltablespace、表類型relkind和relpersistence等信息后調(diào)用heap_create_with_catalog創(chuàng)建relation。

?heap_create_with_catalog主要完成表物理文件的創(chuàng)建和表元信息注冊到系統(tǒng)表中,涉及系統(tǒng)包包括pg_class,pg_attribute,pg_depend,pg_object,pg_type,pg_index和pg_partition。

其中heap_create內(nèi)部首先調(diào)用了RelationBuildLocalRelation創(chuàng)建RelationData,并加入到relCache,RelationData表示一個表的元信息,這些信息都可以由系統(tǒng)表元組中的信息構(gòu)造得到。然后根據(jù)這些信息通過調(diào)用RelalionCreateStorage函數(shù)創(chuàng)建物理文件。

:創(chuàng)建表create table的函數(shù)調(diào)用棧


openGauss內(nèi)核分析(九):數(shù)據(jù)庫表的創(chuàng)建過程的評論 (共 條)

分享到微博請遵守國家法律
即墨市| 芦溪县| 广宗县| 通城县| 榆社县| 郓城县| 奇台县| 冷水江市| 徐汇区| 修文县| 呼玛县| 天门市| 博罗县| 汉中市| 建阳市| 遂溪县| 同江市| 永城市| 湘阴县| 阿鲁科尔沁旗| 淳安县| 克东县| 建平县| 中阳县| 汾阳市| 甘肃省| 叙永县| 新余市| 商河县| 共和县| 大方县| 康保县| 丽江市| 三台县| 周至县| 湟源县| 富顺县| 浮梁县| 会同县| 田林县| 海丰县|