连击 天
fork: star:
本篇讲解如何在PostgreSQL的两个插件之间传递数据。 1、插件的插件 PL/pgSQL中: PLpgSQL_plugin **plpgsql_plugin_ptr = NULL; ...// 中略 plpgsql_plugin_ptr = (PLpgSQL_plugin **) find_...
当我们需要在不同模块间传递数据时,怎样尽量不修改原有代码而达到目的,本文介绍一种方法。 1、错误上下文堆栈 先来看定义(src/include/utils/elog.h): typedef struct ErrorContextCal...
本篇学习一下如何用C函数返回出(OUT/INOUT)参。前边讲过在函数中返回结果集,如果只返回一个或多个OUT/INOUT参数该如何编码? 1、系统表 pg_proc 的字段含义 prorettype :返回值类型 pror...
本篇讲如何在初始化时创建扩展,大体步骤与创建表相同,主要问题是如何处理需要预加载的扩展。 1、扩展的加载 扩展的库加载发生在第一次访问扩展时,如果我们一直没有使用它,那么在数据库运...
本文演示如何使用另一种形式编码,实现函数返回结果集。 以下代码来自 pgrowlocks 插件。 1、元组结构的获取 上一个例子中,结果集结构是我们自己定义的,还有一种动态获取的方法: TupleDes...
本文演示如何在代码中访问表的数据,使用REL_13_STABLE分支。很多细节没有完全搞清楚,只是个demo,仅供参考。 1、假设存在如下表: CREATE TABLE t1( c1 int PRIMARY KEY, c2 text, ); 2、打...
本篇继续演示和讲解如何从代码中翻出自己需要的功能,以逻辑复制插件为例。过程中不可避免的会读很多无关的代码,这部分不需要啰嗦,随着代码熟悉程度的提高,这些开发过程中的开销会减少。 ...
search_path稍微熟悉PG就会用到,用法这里就不必讲,本篇主要讲它在程序里怎样处理。 1、GUC参数定义 这是个 config_string 参数 { {"search_path", PGC_USERSET, CLIENT_CONN_STATEMENT, ge...
PG函数支持可变参数,就是参数模式关键字 VARIADIC,但有很多的限制,看起来很美,用起来一点都不方便。 1、示例 CREATE OR REPLACE FUNCTION test_v(p1 int, VARIADIC p2 any[]) RETURNS v...
代码搬运也需要发挥想象力,让不可能变为可能,这里讲一个例子。 1、 有人问PostgreSQL有没有自定义例外,Oracle是有的: --定义 myex Exception; --抛出 RAISE myex; --捕获 WHEN myex THEN...
本篇大致捋一下PostgreSQL在Windows下的信号处理,其实只能说是模拟或者代码封装,调用的时候看起来也是 pgsignal 函数,实现了代码的跨平台,但在实现上完全跟信号无关,毕竟Windows也没有这...
原稿用Markdown编写,拷贝进微信平台时段落有时发生反转,段落1、2、3变成段落3、2、1,发布前可能没有检查出来,遇到别扭的地方试试反过来读。 Windows系统API我并不熟悉,所以本篇大致点出...
控制文件是在初始化时生成,记录PG运行过程中的关键信息,大致分为以下几类。 初始化时自动生成,运行过程中不允许修改,例如系统标识符; 允许用户在初始化时一次性定制,不再允许修改,例如...
有朋友问怎么实现存储过程中的SAVEPOINT,直接调用是不可以的,因为PG不允许事务控制语句出现在存储过程中,但我们还是有办法做到一定程度的模拟。 1、用BEGIN块模拟 随便建个表: CREATE T...
前边讲过,配置文件重载可以使用SIGHUP信号,也可以使用 pg_ctl reload,后者实际上也是发送SIGHUP给postmaster。 1、postmaster 的SIGHUP处理 下边的代码位于 src/backend/postmaster/postm...
配置参数(或者叫GUC变量,grand unified configuration)常见的就是出现在 postgresql.conf 中的设置项,更多信息可查看文档 19. Server Configuration ,我主要讲他们在代码中是如何设置和...
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定删除此文章吗?
动弹删除后,数据将无法恢复
评论删除后,数据将无法恢复