加载中
PostgreSQL插件间如何传递数据

本篇讲解如何在PostgreSQL的两个插件之间传递数据。 1、插件的插件 PL/pgSQL中: PLpgSQL_plugin **plpgsql_plugin_ptr = NULL; ...// 中略 plpgsql_plugin_ptr = (PLpgSQL_plugin **) find_...

PostgreSQL利用错误上下文传递数据

当我们需要在不同模块间传递数据时,怎样尽量不修改原有代码而达到目的,本文介绍一种方法。 1、错误上下文堆栈 先来看定义(src/include/utils/elog.h): typedef struct ErrorContextCal...

PostgreSQL关键代码段与内存上下文

内存上下文是PG的精髓之一,没有它,内存泄漏会失控,关于这一点在为什么引入它的说明中有介绍。 本文简单说一下内存上下文与临界区(CRIT_SECTION)之间的关系。 1、内存上下文定义 代码在 ...

PostgreSQL函数返回OUT参数

本篇学习一下如何用C函数返回出(OUT/INOUT)参。前边讲过在函数中返回结果集,如果只返回一个或多个OUT/INOUT参数该如何编码? 1、系统表 pg_proc 的字段含义 prorettype :返回值类型 pror...

PostgreSQL初始化时创建扩展

本篇讲如何在初始化时创建扩展,大体步骤与创建表相同,主要问题是如何处理需要预加载的扩展。 1、扩展的加载 扩展的库加载发生在第一次访问扩展时,如果我们一直没有使用它,那么在数据库运...

PostgreSQL初始化时创建表

如果我们想在初始化时创建一个解决某种特殊需要的表,演示一下该怎样处理。 本文很简单,几句话而已。 1、initdb.c 直接看代码,函数 initialize_data_directory 中: ... /* Bootstrap tem...

PostgreSQL函数返回结果集另一种方法

本文演示如何使用另一种形式编码,实现函数返回结果集。 以下代码来自 pgrowlocks 插件。 1、元组结构的获取 上一个例子中,结果集结构是我们自己定义的,还有一种动态获取的方法: TupleDes...

PostgreSQL函数返回结果集

有时我们需要定义返回结果集的函数,本文演示如何编码。 遂古之初,谁传道之?上下未形,何由考之?《天问》 1、函数定义 C语言定义部分 PG_FUNCTION_INFO_V1(quanzl_dummy_setof); Datum q...

PostgreSQL表的扫描

本文演示如何在代码中访问表的数据,使用REL_13_STABLE分支。很多细节没有完全搞清楚,只是个demo,仅供参考。 1、假设存在如下表: CREATE TABLE t1( c1 int PRIMARY KEY, c2 text, ); 2、打...

PostgreSQL预写日志标志位的使用和影响

本篇继续演示和讲解如何从代码中翻出自己需要的功能,以逻辑复制插件为例。过程中不可避免的会读很多无关的代码,这部分不需要啰嗦,随着代码熟悉程度的提高,这些开发过程中的开销会减少。 ...

2019/10/07 09:50
206
为Windows版PostgreSQL编译mongo_fdw准备篇

有朋友问如何编译 mondb_fdw 的Windows版,本文是准备依赖包的过程。 1、下载Windows版CMake 网址:https://cmake.org/download/ 下载zip包即可,我们可以手动在命令行设置path,没必要用安装...

PostgreSQL参数search_path影响及作用

search_path稍微熟悉PG就会用到,用法这里就不必讲,本篇主要讲它在程序里怎样处理。 1、GUC参数定义 这是个 config_string 参数 { {"search_path", PGC_USERSET, CLIENT_CONN_STATEMENT, ge...

2019/09/19 07:00
196
PostgreSQL函数VARIADIC参数处理

PG函数支持可变参数,就是参数模式关键字 VARIADIC,但有很多的限制,看起来很美,用起来一点都不方便。 1、示例 CREATE OR REPLACE FUNCTION test_v(p1 int, VARIADIC p2 any[]) RETURNS v...

实现PostgreSQL函数自定义例外处理

代码搬运也需要发挥想象力,让不可能变为可能,这里讲一个例子。 1、 有人问PostgreSQL有没有自定义例外,Oracle是有的: --定义 myex Exception; --抛出 RAISE myex; --捕获 WHEN myex THEN...

PostgreSQL在Windows系统下的信号处理

本篇大致捋一下PostgreSQL在Windows下的信号处理,其实只能说是模拟或者代码封装,调用的时候看起来也是 pgsignal 函数,实现了代码的跨平台,但在实现上完全跟信号无关,毕竟Windows也没有这...

2019/08/22 10:37
61
Windows下的PostgreSQL进程fork

原稿用Markdown编写,拷贝进微信平台时段落有时发生反转,段落1、2、3变成段落3、2、1,发布前可能没有检查出来,遇到别扭的地方试试反过来读。 Windows系统API我并不熟悉,所以本篇大致点出...

2019/08/19 10:49
164
PostgreSQL控制文件在初始化时的生成

控制文件是在初始化时生成,记录PG运行过程中的关键信息,大致分为以下几类。 初始化时自动生成,运行过程中不允许修改,例如系统标识符; 允许用户在初始化时一次性定制,不再允许修改,例如...

2019/08/13 16:49
118
PostgreSQL存储过程BEGIN块的事务处理

有朋友问怎么实现存储过程中的SAVEPOINT,直接调用是不可以的,因为PG不允许事务控制语句出现在存储过程中,但我们还是有办法做到一定程度的模拟。 1、用BEGIN块模拟 随便建个表: CREATE T...

2019/08/07 08:32
1.4K
PostgreSQL参数重载信号SIGHUP的处理

前边讲过,配置文件重载可以使用SIGHUP信号,也可以使用 pg_ctl reload,后者实际上也是发送SIGHUP给postmaster。 1、postmaster 的SIGHUP处理 下边的代码位于 src/backend/postmaster/postm...

2019/08/05 11:41
1K
PostgreSQL配置参数处理系统(三)参数值的变更

配置参数(或者叫GUC变量,grand unified configuration)常见的就是出现在 postgresql.conf 中的设置项,更多信息可查看文档 19. Server Configuration ,我主要讲他们在代码中是如何设置和...

2019/08/02 16:35
537

没有更多内容

加载失败,请刷新页面

返回顶部
顶部