- 博客(47)
- 收藏
- 关注
原创 postgresql源码阅读 search_path
plancache用来缓存执行计划,当searchpath改变时,查询语句可能涉及对象变更,对应的执行计划也应不一致,plancache中保存了一份当时的SearchPath,用来验证当前执行计划是否还有效。对于ddl语句,分布在ddl的处理逻辑中,大多数场景同一事务内首次做了recompute,之后都是validate的状态,只需要做判断即可。临时表通过关联ns实现,每个会话有自己独立的tmp_ns,在事务提交时级联删除ns中的内容,或者会话结束时删除,实现临时表的删除。计算赋值searchpath。
2025-12-08 11:50:16
697
原创 ivorysql 源码分析-双port兼容
ivorysql采用双端口的方式实现oracle兼容,默认的5432端口为pg语法,1532用来支持oracle的语法与功能,从官方的流程图上看是支持oracle应用连接的,但是貌似没有支持oracle的协议,以下为支持oracle兼容模式的提交的commit。生成不同语法解析函数:%name-prefix=“base_yy” 代表生成的函数和变量名从yy改成base_yy,同flex,为了在一个产品里使用多个语法分析器,分析不同的数据类。 原文件基本复制的plpgsql,做了部分文件名等修改。
2025-12-04 14:46:20
865
原创 babelfish for postgresql 分析--babelfishpg_tds--doing
babelfishpg_tds插件 支持了TDS 协议扩展,实现 TDS 客户端-服务器协议。先看插件加载时的函数。
2025-09-30 15:52:34
642
原创 babelfish for postgresql 分析--todo
tds.c/tds_srv.c/tdsprotocol.c/tdsresponse.c/….c/.h(pl_comp、pl_exec、pl_funcs、pl_handler 等):PL/tsql 的编译、执行、内置函数与处理器;spatialtypes.c/.h + geo_parser.y/geo_scan.l:空间类型支持(geometry/geography)。catalog.c/.h、multidb.c/.h:逻辑数据库与模式映射、对象目录适配(db.schema.object)。
2025-09-28 17:10:00
905
原创 postgresql中的默认列
default的语法规则在ColConstraintElem下,解析时会解析为Constraint,contype为CONSTR_DEFAULT 存在ColumnDef->constraints下。语义分析对应constraint 并且把表达式结果序列化插入pg_attrdef表中。default语法表达式赋值给raw_default。在重写阶段将表达式赋给对应value。
2025-09-26 16:00:39
254
原创 postgresql flex bison
https://my.oschina.net/postgresqlchina/blog/5065475
2025-06-30 17:07:53
367
原创 postgresql 权限管理
记录的缓存将在 pg_auth_members (for roles_is_member_of()) pg_database (for roles_is_member_of())表更改时失效。默认缓存当前活跃用户(current user)的角色成员关系,但未来可能扩展为支持多角色缓存。遍历查找给定角色ID的所有直接和间接成员关系,并给cache赋值。以上为执行权限的种类以及适用对象合在系统表中显示的缩写。对象可赋予的访问权限。
2025-06-27 11:03:33
245
1
原创 postgresql sort算子
sort算子执行主要把outerplan取到的数据存到tuplesortstate中,在tuplesort中排序后返回。
2025-06-09 17:49:36
207
原创 cmu 15-445 2024fall lab1 buffer pool manager
因为我的脏页是evict时才会淘汰,evict时把page_table中的脏页映射删除,然后放bpm锁,然后刷脏,这是如果有操作访问旧页,因为页面映射已经被删除回去读磁盘,这时脏页不一定落盘,会导致数据还未写入磁盘读取到不一致的数据,于是新增了一个map用来保存脏页id,如果访问的是正在刷新脏页的话sleep一会,刷新完毕再更新map,优先淘汰访问次数小于k的,一个是访问次数小于k时淘汰第一次访问时间距离当前最远的,大于k时,淘汰最后一次访问时间距离当前最远的。又把frame的锁放在 bmp锁后解锁。
2025-06-01 21:57:17
354
原创 postgresql RecursiveUnion算子
RecursiveUnion算子需要结合inner plan中的worktablescan来处理递归。
2025-05-28 18:55:56
216
原创 postgresql 创建表
create table不需要语法分析,analyze_and_rewrite时直接生成对应的query,在processutility阶段做语法分析后执行。
2025-05-15 18:27:55
261
原创 postgresql unique算子
unique一般用于处理distinct关键字 unique与group一样处理已排好序的tuples,当获取到与上条不一样的tup时 返回投影。
2025-05-13 16:56:05
126
原创 postgresql 执行器junkfilter
junkfilter用于过滤在targetlist中不显示的列。执行 对ExecProcNode返回的slot过滤。
2025-05-07 18:42:15
341
原创 postgresql select查询解析
解析为selectstmt后 在pg_analyze_and_rewrite_fixedparams中进行transform。simple select 主要由targetlist,intoclause,fromclause等构成。主要看transformSelectStmt函数。
2025-05-07 17:09:40
230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅