<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[XL_up的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/XL_up</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; XL_up]]></copyright><item><title><![CDATA[openGauss学习——优化 UNION ALL 语句]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820361</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820361</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 01:05:45 +0800</pubDate><description><![CDATA[在本篇博客中，我对查询规划的预处理过程中对UNION ALL语句的优化过程进行了简单介绍。]]></description><category></category></item><item><title><![CDATA[openGauss学习——消除外连接]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820325</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820325</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 01:01:08 +0800</pubDate><description><![CDATA[在本篇中我详细介绍了SQL查询规划的预处理过程中，对查询树消除外连接两种优化策略。]]></description><category></category></item><item><title><![CDATA[openGauss学习——减少order by语句]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820316</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820316</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:55:44 +0800</pubDate><description><![CDATA[在本篇博客中我进行了对查询规划预处理过程中减少order by语句优化过程的学习与介绍。]]></description><category></category></item><item><title><![CDATA[openGauss学习——解析树结构补充]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820277</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820277</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:51:12 +0800</pubDate><description><![CDATA[rtindex：RTE结点也拥有这个字段，其表示range table中对应的某个实体RTE结点的索引值，上面所述的T_RangeTblRef类型的RTE结点也是通过这个字段来实现与range table中某个实体RTE的一对一绑定。在openGauss中，查询语句通常由多个目标属性组成，每个目标属性都包含了属性名、表达式以及其他相关信息，而TargetEntry用于表示查询中的目标属性，帮助标识和处理目标属性在查询结果中的位置、名称以及其他相关信息。字段 quals 是用于存储连接的条件表达式树的。]]></description><category></category></item><item><title><![CDATA[openGauss学习——替换空FROM]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820266</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820266</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:47:05 +0800</pubDate><description><![CDATA[之后调用函数list_make1()，通过一个新建的初始RTE结点创建一个空的List* 类型结构，并让当前结点的jointree->fromlist字段指向这个空表（原先其值为NULL，是一个空指针），并且这个空表与刚刚添加的RTE结点是对应的。因为其并不与任何的实体关系表绑定，也不包含任何可以被引用的元组条目，是一张空表。函数的作用是，如果当前的查询结点（输入的查询结点）的jointree是空树，即结点的fromlist字段是一个空指针，那么替换其为将其指向一个RTE_RESULT类型的“假”关系表。]]></description><category></category></item><item><title><![CDATA[openGauss学习——子链接提升]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820206</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820206</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:43:12 +0800</pubDate><description><![CDATA[在本篇博客中，我对openGauss SQL查询优化的子链接提升部分进行了学习和介绍。个人能力有限，如有错误烦请指出。]]></description><category></category></item><item><title><![CDATA[openGauss学习——查询规划主处理流程架构]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820152</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820152</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:36:02 +0800</pubDate><description><![CDATA[在本篇博客中我对 subquery_planner() 函数的主要步骤流程以及查询优化的主处理逻辑和代码架构进行了学习和解读。个人能力有限，如有错误烦请不吝指出。]]></description><category></category></item><item><title><![CDATA[openGauss学习——optimizer主调函数]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820118</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820118</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:30:01 +0800</pubDate><description><![CDATA[在本篇博客中我对optimizer的主调函数进行了简单介绍。下一篇博客中我会对函数 subquery_planner() 进行学习和解读工作。]]></description><category></category></item><item><title><![CDATA[openGauss学习——optimizer 查询优化概述]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820097</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820097</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:26:21 +0800</pubDate><description><![CDATA[在本篇博客中我对openGauss查询优化optimizer模块进行了简要概述。在之后的博客中我会开展对这一部分相关源文件的学习和解读工作。]]></description><category></category></item><item><title><![CDATA[openGauss学习——rewriteSupport.cpp的简要解析]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820084</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820084</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:23:47 +0800</pubDate><description><![CDATA[在本篇博客中，我对查询重写辅助函数文件rewriteSupport.cpp中的函数进行了注释和解读工作。]]></description><category></category></item><item><title><![CDATA[openGauss学习——pg锁机制及rewriteRemove.cpp解读]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820075</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820075</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:21:36 +0800</pubDate><description><![CDATA[在本篇博客中我对查询重写中的规则移除函数 RemoveRewriteRuleById() 进行了解读，并简单介绍了 PostgreSQL 中的几种锁机制。]]></description><category></category></item><item><title><![CDATA[openGauss学习——rewriteHandler.cpp解读（4）]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133820047</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133820047</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:19:21 +0800</pubDate><description><![CDATA[在本篇博客中，我对rewriteHandler.cpp文件中的函数fireRIRrules进行了详细的学习和解读，并对行级安全策略R.L.S进行了简要介绍。]]></description><category></category></item><item><title><![CDATA[openGauss学习——rewriteHandler.cpp解读（3）]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133819780</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133819780</guid><author>XL_up</author><pubDate>Sat, 14 Oct 2023 00:14:16 +0800</pubDate><description><![CDATA[在本篇博客中，我对查询重写涉及的几个数据结构和概念RTE、range table、RTEkind、Relation进行了简单的补充说明。在下一篇博客中，我会继续对rewriteHandler.cpp的文件内容进行学习和解读。]]></description><category></category></item><item><title><![CDATA[openGauss学习——rewriteHandler.cpp解读（2）]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133819751</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133819751</guid><author>XL_up</author><pubDate>Fri, 13 Oct 2023 23:40:01 +0800</pubDate><description><![CDATA[在本篇博客中我对文件rewriteHandler.cpp中函数AcquireRewriteLocks的进行了学习解读以及相应的知识介绍。在下一篇博客中，我会继续对rewriteHandler.cpp的文件内容进行学习和解读。]]></description><category></category></item><item><title><![CDATA[openGauss学习——rewriteHandler.cpp解读（1）]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133819648</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133819648</guid><author>XL_up</author><pubDate>Fri, 13 Oct 2023 23:32:10 +0800</pubDate><description><![CDATA[在本篇博客中我对查询重写主模块rewriteHandler.cpp中的主入口点函数QueryRewrite的逻辑进行了详细的解读和相应的知识介绍。在下一篇博客中，我会继续对rewriteHandler.cpp的文件内容进行学习和解读。]]></description><category></category></item><item><title><![CDATA[openGauss学习——rewriter查询重写概述]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133819473</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133819473</guid><author>XL_up</author><pubDate>Fri, 13 Oct 2023 23:10:10 +0800</pubDate><description><![CDATA[在本篇博客中，我对SQL查询重写模块rewriter进行了简单概述。在接下来的几篇博客中，我会对目录下的文件进行学习和解读。]]></description><category></category></item><item><title><![CDATA[openGauss学习——SQL查询解析总结]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133819432</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133819432</guid><author>XL_up</author><pubDate>Fri, 13 Oct 2023 23:01:32 +0800</pubDate><description><![CDATA[通过这么多天的学习，我对openGauss SQL引擎中的查询解析parser部分形成了比较清晰的认识和知识架构，对相关源代码的文件内容、函数细节和各模块的调用关系也进行了比较详实的学习和解读。回到最初的起点，我将openGauss SQL parser的模块划分和几个主要函数、文件之间的调用关系总结如下图，同时也标志着我完成了对parser模块的学习和解读工作。]]></description><category></category></item><item><title><![CDATA[openGauss学习—— analyze.cpp 解析]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133819379</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133819379</guid><author>XL_up</author><pubDate>Fri, 13 Oct 2023 22:56:38 +0800</pubDate><description><![CDATA[先来关注函数功能和入口出口参数；从前面的分析我们已经总结出，语义解析的入口函数（也是主流程函数）parse_analyze / parse_analyze_varparams会调用transformTopLevelStmt函数，而transformTopLevelStmt会调用transformStmt函数，将语法树转化为不同的Stmt结构体，调用对应的语义分析函数进行处理。而transformStmt函数会根据NodeTag的值，将语法树转化为不同的Stmt结构体，调用对应的语义分析函数进行处理。]]></description><category></category></item><item><title><![CDATA[openGauss学习—— parse_param.cpp 解析]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133819334</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133819334</guid><author>XL_up</author><pubDate>Fri, 13 Oct 2023 22:49:54 +0800</pubDate><description><![CDATA[对于固定参数FixedParamState类型，其只有两个成员变量，分别是存储参数类型OID的OID指针paramTypes和参数的条目数量numParams。另外值得注意的是，FixedParamState中的paramTypes成员是Oid类型的一级指针，而在VarParamState类型中这一成员为Oid的二级指针。函数功能是将包含查询的引用references转化为可变参数结构VarParamState，即输入查询引用的参数，为其构造VarParamState结构。]]></description><category></category></item><item><title><![CDATA[openGauss学习—— parse_oper.cpp 解析]]></title><link>https://blog.youkuaiyun.com/XL_up/article/details/133819269</link><guid>https://blog.youkuaiyun.com/XL_up/article/details/133819269</guid><author>XL_up</author><pubDate>Fri, 13 Oct 2023 22:42:21 +0800</pubDate><description><![CDATA[在本篇博客中，我进行了对SQL语法分析中操作符处理相关内容的探索，并对 parse_oper.cpp 文件中的部分函数进行了学习和注解工作。]]></description><category></category></item></channel></rss>