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

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

2020/08/26 07:59
211
PostgreSQL利用错误上下文传递数据

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

2020/08/19 06:31
353
PostgreSQL函数返回OUT参数

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

2020/08/10 21:48
4.1K
PostgreSQL初始化时创建扩展

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

2020/08/05 10:40
793
PostgreSQL函数返回结果集另一种方法

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

PostgreSQL表的扫描

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

2020/07/16 21:50
597
PostgreSQL预写日志标志位的使用和影响

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

2019/10/07 09:50
299
PostgreSQL参数search_path影响及作用

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

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

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

2019/09/09 11:14
4.1K
实现PostgreSQL函数自定义例外处理

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

PostgreSQL在Windows系统下的信号处理

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

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

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

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

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

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

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

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

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

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

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

2019/08/02 16:35
962

没有更多内容

加载失败,请刷新页面

返回顶部
顶部