当前位置:首页 > 报告详情

4-宋少华-PostgreSQL Extension解析V1.0.pdf

上传人: 张** 编号:155539 2024-02-15 30页 1MB

1、PostgreSQL Extension 解析演讲人 宋少华北京晟数科技&讲师Extension 运行框架Extension 运行的框架Extension 构成解析Extension 构成文件内容解析Extension 创建示例使用 CREATE EXTENSTION 创建扩展Extension 调用 hook 函数在 Extension 中使用 hook 函数CONTENTPART 01Extension 运行框架Extension 运行框架Extension 分布在 PostgreSQL 源码目录下的 contrib 目录。PART 02Extension 模块解析Makefile文件这里

2、仅解释在一个扩展文件中的基本需求变量名称描述#表示一个注释MODULE_big用于从OJBS中的多个源文件构建的共享库名称OBJS编译源码的目标名称EXTENSION用于$EXTENSIONO.control 中的扩展名称DATA安装到$prefix/share/$MODULEDIR目录下的文件PGFILEDESC用于扩展描述PG_CONFIG用于指定pg_config命令PGXS用于得到扩展Makefile文件的位置include编译时使用的的额外的Makefile文件subdir用于定义扩展模块目录的路径top_builddir用于定义扩展模块所在目录的上级上目录C源码文件C源码文件中的必

3、要定义解析名称描述PG_MODULE_MAGICPG的魔法值宏定义(在 fmgr.h 中声明)Datum表示一个无符号的整数变量(在 postgres.h 中定义 typedef uintptr_t Datum)PG_FUNCTION_INFO_V1动态加载宏定义(在 fmgr.h 中声明)PG_FUNCTION_ARGS用来在函数内部使用fcinfo来访问函数参数和元数据信息(在fmgr.h中声明)extern void _PG_init(void);声明一个函数原型,该函数主要是针对PostgreSQL提供的hook函数进行调用control文件control 文件的必要定义解析控制文件在

4、扩展中属于可选部分名称描述comment对当前扩展注释default_version指定当前扩展版本module_pathname当前扩展安装路径relocatable=true是否启用可重定位sql 文件sql 文件在 PostgreSQL 扩展中属于可选部分,只有当源码文件.c 中定义了相关函数,可在该部分编写 sql 语句,以调用创建PostgreSQL 支持的 C 语言函数。PART 03使用 CREATE EXTENSTION 创建扩展编写源码 C 文件#include postgres.h#include fmgr.h/定义魔法值PG_MODULE_MAGIC;/动态加载宏定义声明

5、函数PG_FUNCTION_INFO_V1(n_sum);/使用Datum 结构返回一个整数Datum n_sumn_sum(PG_FUNCTION_ARGS)uint32 first_val=PG_GETARG_UINT32(0 0);uint32 end_val=PG_GETARG_UINT32(1 1);uint32 sum =0 0;sum=(first_val+end_val)*end_val)/2 2;PG_RETURN_UINT32(sum);编写 Makefile 文件#求前 n 项和MODULE_big=n_sumOBJS=$(WIN32RES)n_sum.oEXTENSIO

6、N=n_sumDATA=n_sum-1.01.0.sqlPGFILEDESC=return first value add end valueifdef USE_PGXSPG_CONFIG=pg_configPGXSPGXS:=$(shell$(PG_CONFIG)-pgxs)include$(PGXS)elseelsesubdir=contrib/n_sumtop_builddir=./.include$(top_builddir)/src/Makefile.globalinclude$(top_srcdir)/contrib/contrib-global.mkendif编写控制文件root

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了PostgreSQL扩展的解析、构成及创建方法,以及如何在扩展中使用hook函数进行功能扩展和事件处理。 关键点如下: 1. PostgreSQL扩展运行框架:扩展分布在PostgreSQL源码目录下的contrib目录,通过C源码文件构建共享库名称,并在数据目录下安装文件。 2. Extension构成文件内容解析:包括Makefile文件、控制文件和SQL文件。Makefile文件用于定义编译目标和包含路径,控制文件包含扩展的注释、版本和安装路径等信息,SQL文件用于定义和调用扩展中的C语言函数。 3. 使用CREATE EXTENSION创建扩展:通过编写C源码文件和相应的Makefile文件,编译并安装扩展。 4. 在Extension中使用hook函数:hook函数用于功能扩展和事件处理,可以进行客户端认证、执行器检查权限、解释SQL语句等操作。 5. PostgreSQL中hook函数类型:包括客户端认证、执行器相关、解释器、安全性策略等类型的hook函数。 6. hook函数调用示例:通过客户端认证hook函数记录用户登录信息,并在日志中显示主机IP地址、登录用户、数据库名称和命令行选项。 综上所述,本文提供了PostgreSQL扩展的详细开发指南,并展示了如何通过hook函数进行功能扩展和事件处理,以实现对PostgreSQL的定制化开发。
"PostgreSQL扩展如何解析运行框架?" "如何使用客户端认证hook函数记录用户登录信息?" "如何在PostgreSQL扩展中使用hook函数进行功能扩展?"
客服
商务合作
小程序
服务号
折叠