自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 【ffmpeg】ffplay.c 代码解析

设计点说明三队列解耦PacketQueue / FrameQueue 把读、解码、渲染三个速度不同的环节解耦serial 淘汰seek/重启serial++,旧序列包帧自动失效,避免错乱主从时钟同步默认音频主;视频丢帧/重复贴音频;音频 swr 微调速(±10%)字幕被动随视频帧 pts 时间窗显示,搭视频便车对齐音频流控闭环队列满阻塞读线程,消费后cond唤醒;pktq反向回收 packet滤镜接入解码后、入帧队列前过滤镜链,含自动旋转硬件加速-hwaccel。

2026-08-26 14:14:38 205

原创 postgresql-pg_tde插件分析

pg_tde是一个 PostgreSQL 扩展,提供文件级静态数据加密(encryption at rest),对用户完全透明。提供tde_heap表访问方法,加密表数据(元组)、索引、TOAST、WAL(暂不加密临时文件与统计信息);通过Global Key Provider 接口支持多种密钥管理系统:本地 keyring 文件、HashiCorp Vault(KV v2)、KMIP 协议服务器;依赖提供的扩展 Storage Manager API 与 WAL API;

2026-08-19 17:17:44 237

原创 postgresql-分区表

PostgreSQL 分区表与继承表设计摘要 PostgreSQL 的分区表和继承表共享基础继承机制,但分区表在此基础上增加了专用元数据和优化路径: 共享基础:两者都使用 pg_inherits 记录父子关系,共用继承树遍历基础设施 分区增强: 通过 pg_partitioned_table 存储分区策略和键定义 使用 pg_class.relpartbound 记录分区边界 规划器和执行器实现专用裁剪和路由逻辑 强约束分区结构(不重叠、完整性) 关键区别: 继承表侧重模式复用和查询扩展 分区表强调自动路由

2026-05-16 18:13:14 442

原创 postgresql plancache

本文档详细介绍了PostgreSQL中plancache模块的设计与实现。plancache主要用于优化SQL语句的重复执行,通过缓存执行计划避免重复解析和生成。核心内容包括: 模块职责:缓存查询源信息、执行计划,跟踪依赖关系,处理失效机制,并在通用计划和定制计划间动态选择。 关键数据结构: CachedPlanSource:保存SQL文本、语法树、Query树等查询源信息 CachedPlan:存储可执行计划对象 CachedExpression:表达式级别的小型缓存 主要功能: 支持PREPARE/EX

2026-05-09 16:46:52 463

原创 cmu 15-445 2024fall lab2 b+tree

做了在Crab持锁时的优化:

2026-04-14 18:19:13 63

原创 postgresql--文章参考

优化器浅析。

2026-04-08 11:51:05 32

原创 postgresql acl权限检查

PostgreSQL权限管理摘要 PostgreSQL使用ACL(访问控制列表)系统管理对象权限。新创建对象默认仅所有者可操作,需显式授权其他角色。权限类型包括SELECT、INSERT、UPDATE等,具体取决于对象类型。通过GRANT/REVOKE命令管理权限,PUBLIC角色可授予所有用户。 核心实现是在系统表中存储AclItem数组,记录授权者、被授权者和权限位(ai_privs)。执行操作时检查所需权限是否在AclItem中存在。权限检查通常在查询初始化阶段完成,通过位运算验证用户权限。 不同对象

2026-03-23 15:10:11 491

原创 postgresql resourceowner

资源所有者机制是PostgreSQL用于跟踪和管理查询资源(如缓冲区引用、表锁等)的核心模块。其主要特点包括: 层次结构设计:采用类似内存上下文的树形结构,支持父子资源所有者的自动资源传递和释放。 生命周期管理:为事务、子事务和Portal创建独立资源所有者,确保资源在查询结束(包括异常情况)时可靠释放。 资源分类: 事务可见资源(如缓冲区) 本地可见资源(如临时文件) 锁资源(特殊处理,事务提交时传递而非释放) 实现方式: 使用ResourceArray动态数组跟踪各类资源 提供标准API进行资源关联/取

2026-02-27 18:08:30 657

原创 postgresql 执行器中readme的翻译

如果获取的元组中的行标识列为 NULL,则源关系包含一个不被目标表中的任何元组匹配的元组,因此给定计划返回的元组评估每个 WHEN NOT MATCHED 子句的限定表达式。为了实现这种检查,实际上我们从头开始为每个修改的元组(或元组集,对于 SELECT FOR UPDATE)重新运行查询,其中关系扫描节点被调整为仅返回当前元组——要么是原始元组,要么是修改的元组的更新(现在已锁定)版本。如果是这样,我们从修改的元组重新生成更新的元组(如果我们正在执行 UPDATE),最后更新/删除修改的元组。

2026-01-12 18:42:50 682

原创 postgresql源码阅读 search_path

plancache用来缓存执行计划,当searchpath改变时,查询语句可能涉及对象变更,对应的执行计划也应不一致,plancache中保存了一份当时的SearchPath,用来验证当前执行计划是否还有效。对于ddl语句,分布在ddl的处理逻辑中,大多数场景同一事务内首次做了recompute,之后都是validate的状态,只需要做判断即可。临时表通过关联ns实现,每个会话有自己独立的tmp_ns,在事务提交时级联删除ns中的内容,或者会话结束时删除,实现临时表的删除。计算赋值searchpath。

2025-12-08 11:50:16 780

原创 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 960

原创 postgresql 执行器--todo

【代码】postgresql 执行器--todo。

2025-11-12 10:41:42 151

原创 Redis 7.0 Multi Part AOF的设计和实现

参考。

2025-11-11 14:51:37 269

原创 postgresql pg_dump源码阅读--doing

【代码】postgresql pg_dump源码阅读--doing。

2025-11-07 11:54:38 153

原创 postgresql pg_upgrade源码阅读--doing

pg_upgrade升级时支持如下参数。

2025-11-06 19:18:27 238

原创 postgresql中的relcache和syscache --todo

todo。

2025-10-23 17:18:36 275

原创 postgresql plpgsql实现原理 --todo

2025-10-13 19:16:23 141

原创 postgresql 优化器代码走读 -- doing

入口函数standard_planner。

2025-09-30 19:00:42 280

原创 babelfish for postgresql 分析--babelfishpg_tsql--todo

todo。

2025-09-30 15:54:24 162

原创 babelfish for postgresql 分析--babelfishpg_tds--doing

babelfishpg_tds插件 支持了TDS 协议扩展,实现 TDS 客户端-服务器协议。先看插件加载时的函数。

2025-09-30 15:52:34 727

原创 ivorysql 源码分析--doing

todo。

2025-09-29 18:02:42 118

原创 postgresql 插件创建原理

【代码】postgresql 插件创建原理

2025-09-29 17:39:53 271

原创 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 1003

原创 postgresql中的默认列

default的语法规则在ColConstraintElem下,解析时会解析为Constraint,contype为CONSTR_DEFAULT 存在ColumnDef->constraints下。语义分析对应constraint 并且把表达式结果序列化插入pg_attrdef表中。default语法表达式赋值给raw_default。在重写阶段将表达式赋给对应value。

2025-09-26 16:00:39 280

原创 opengauss tableof实现方式--todo

todo。

2025-08-28 18:04:31 132

原创 postgresql flex bison

https://my.oschina.net/postgresqlchina/blog/5065475

2025-06-30 17:07:53 392

原创 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 307 1

原创 postgresql sort算子

sort算子执行主要把outerplan取到的数据存到tuplesortstate中,在tuplesort中排序后返回。

2025-06-09 17:49:36 237

原创 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 405

原创 postgresql 语法调试

添加debug的变量后可以在日志中看到bison的debug信息。

2025-05-29 16:45:57 226

原创 postgresql RecursiveUnion算子

RecursiveUnion算子需要结合inner plan中的worktablescan来处理递归。

2025-05-28 18:55:56 256

原创 postgresql 8级锁

【代码】postgresql 8级锁。

2025-05-20 10:04:45 227

原创 postgresql 创建表

create table不需要语法分析,analyze_and_rewrite时直接生成对应的query,在processutility阶段做语法分析后执行。

2025-05-15 18:27:55 299

原创 postgresql unique算子

unique一般用于处理distinct关键字 unique与group一样处理已排好序的tuples,当获取到与上条不一样的tup时 返回投影。

2025-05-13 16:56:05 156

原创 postgresql group算子

group算子的下层为已排好序的outernode,对于group算子的执行实际类似unique。

2025-05-13 16:41:55 254

原创 postgresql 新增一个简单算子demo

1 解析2 生成计划3 执行。

2025-05-09 11:06:23 163

原创 postgresql 生成路径 todo

【代码】postgresql 生成路径 todo。

2025-05-08 17:18:08 139

原创 postgresql sublink

1、sublink解析。

2025-05-08 15:00:49 115

原创 postgresql inner join解析执行

inner join执行计划。inner join解析。inner join执行。

2025-05-07 18:45:22 164

原创 postgresql 执行器junkfilter

junkfilter用于过滤在targetlist中不显示的列。执行 对ExecProcNode返回的slot过滤。

2025-05-07 18:42:15 388

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除