Postgresql中PLPGSQL支持动态拼接SQL并执行: https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN 例如:
整理plpgsql_Datums(解析后的变量)("无"表示该类型没有这个配置项)
入口:portal子模块(下图蓝色) 处理DML的Executor子模块(下图绿色) 处理DDL的ProcessUtility子模块(下图橙色)
PG14中截取部分SQL语法:https://www.postgresql.org/docs/14/sql-commands.html
用户命令触发状态机函数导致事务状态流转,流转时按对应状态调用底层事务处理函数干活。
入口:portal子模块(下图蓝色) 处理DML的Executor子模块(下图绿色) 处理DDL的ProcessUtility子模块(下图橙色)
用户命令触发状态机函数导致事务状态流转,流转时按对应状态调用底层事务处理函数干活。
1、raw_parser作为高层入口 2、raw_parser初始化后,通过base_yyparse进入yacc框架 3、yacc框架中调用base_yylex进入lex拿一个token(正常用框架是每次拿一个,PG通过对lex函数的封装可以拿后面多个,有些语法需要看到后面多...
这篇写的细节比较多有点乱,大体流程和总结可以看第三、四篇 《Postgresql源码(49)plpgsql函数编译执行流程分析总结》和《Postgresql源码(53)plpgsql语法解析关键流程、函数分析》...
接上一篇:Postgresql源码(39)备库startup启动和redo流程分析