Recent Posts

variable number of arguments function

1 minute read

背景 有些时候可能需要函数能够接收任意个参数, 比方说fprintf()函数, int fprintf(FILE *stream, const char *format, ...); ... 表示的是任意个数的参数. 类似的还有execl和execlp : int execl(con...

PostgreSQL plpgsql_check_function 插件 - plpgsql函数体内容CHECK

2 minute read

背景 PostgreSQL的plpgsql存储过程语言是解释性语言,支持语法型的CHECK但是无法发现一些运行时才可能触发的报错,比如表不存在等报错。当然这种报错实际上也不应该PLPGSQL来做,不过我们现在有plpgsql check extension来帮助发现这些问题了。 ``` postgres=# c...

USE GDB debug postgres

42 minute read

背景 前几天在使用pgsql_fdw时发现它的外部表用在函数中会报错, 排错首先要获得详细的错误信息, 能跟踪就更好了. 《pgsql_fdw “cache lookup failed for type 0” error when used in function》 错误信息的获取途径有几种 : 1. 最简...

USE hstore store table’s trace record

4 minute read

背景 在数据库应用中,某些数据表的记录更改可能会需要跟踪,例如删除,新增,更新。 跟踪的信息包括:老的记录值,新的记录值,记录变更时间,哪个用户操作的等等。 在数据库中,跟踪可以通过触发器来做。 因为每个表的结构都不一样,要设计一个比较通用的存储跟踪记录的表的话,需要使用通用的存储类型,例如 text 类型...