网站首页 > 知识剖析 正文
“+”号操作符对应函数是如何获取的呢?首先需要知道这个函数的oid是哪个。上节中我们知道操作符对应的表达式步骤初始化函数是ExecInitExprRec,其操作符初始化分支是T_OpExpr:
操作符初始化函数是ExecInitFunc,从上图可以看到操作符函数的oid为op->opfuncid,那么gdb跟踪下这个oid的值是多少:
从堆栈里看到,oid是177,我们是以select id1+id2 from t;为例跟踪的,所以该操作符在投影初始化中,所以看到是在ExecBuildProjectionInfo函数中实现。
下面看下oid为177的是哪个函数:
函数为int4pl。再想下操作符的oid从何而来?
...
可以从pg_operator系统表中看到所有+操作符对应的操作函数,int4pl也在其中。通过函数make_op函数在生成最佳路径的时候从系统表根据操作符名和参数类型查询得到函数oid:
make_op
tup = oper(pstate, opname, ltypeId, rtypeId, false, location);
opform = (Form_pg_operator) GETSTRUCT(tup);
result = makeNode(OpExpr);
result->opno = oprid(tup);
result->opfuncid = opform->oprcode;
...
至此,操作符函数就这么获取了。
猜你喜欢
- 2025-09-06 postgresql自定义函数实现,通过contrib模块进行扩展
- 2025-09-06 VBA中SQLOpen函数_vba调用sql获取数据
- 2025-09-06 VBA中SQLExecQuery函数_vba操作sql数据库
- 2025-09-06 第 10 章:聚合函数与分组 - PostgreSQL入门
- 2025-09-06 SQL面试经典问题-开窗函数_sql开窗函数详解
- 2025-09-06 技术栈:我们把SQL窗口函数分为5大类12小类,这样好记吗?
- 2025-09-06 第 15 章:窗口函数 (Window Functions) - PostgreSQL入门
- 2025-09-06 SQL常用经典函数大全_sql函数有哪些
- 2025-09-06 SQL窗口函数知多少?_sql窗口函数有哪些
- 2025-09-06 SQL 聚合函数有哪些_sql语句的聚合函数
- 最近发表
-
- postgresql自定义函数实现,通过contrib模块进行扩展
- PostgreSQL "+"操作符函数的获取机制
- VBA中SQLOpen函数_vba调用sql获取数据
- VBA中SQLExecQuery函数_vba操作sql数据库
- 第 10 章:聚合函数与分组 - PostgreSQL入门
- SQL面试经典问题-开窗函数_sql开窗函数详解
- 技术栈:我们把SQL窗口函数分为5大类12小类,这样好记吗?
- 第 15 章:窗口函数 (Window Functions) - PostgreSQL入门
- SQL常用经典函数大全_sql函数有哪些
- SQL窗口函数知多少?_sql窗口函数有哪些
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)