Recent Posts

count nulls or not nulls in one record/row

less than 1 minute read

背景 PGXN里的一个插件,用来计算一条记录或一条记录或一行(必须是同一类型)中空值或非空值的个数。 http://api.pgxn.org/src/count_nulls/count_nulls-0.9.2/doc/count_nulls.md 使用PLPGSQL函数就可以实现同样的功能。 postgre...

从一个数据类型/record/row中解析它对应的列名

2 minute read

背景 从一个数据类型/record/row中解析它对应的列名,这个在触发器中封装SQL是非常有用的。 现在有这样的插件来帮助你完成这样的事情了。 http://api.pgxn.org/src/colnames/colnames-1.5.0/doc/colnames.mmd colnames 1.1.0 ...

PostgreSQL sort or not sort when group by?

8 minute read

背景 朋友的一个CASE,在一个查询中为什么group by用到了sort? 其实这也是优化器的选择问题,只要成本最低,就有可能选择sort。 当然如果hashagg的成本更低,那么就会选择hashagg。 CASE: postgres=# create table t1(c1 int,c2 int,c3...

PostgreSQL 轻量级数字对称加密

1 minute read

背景 之前有位同事向我咨询关于发红包的事情,领红包需要输入验证码。这个码在数据库中预先生成,必须是唯一值。 领红包时更新该记录。 CASE参考: 《fast random data query & delete use ctid in postgresql》 为什么要取随机数字呢?防止用户猜测,领...

Linux内核调试方法总结

less than 1 minute read

背景 Linux内核调试方法总结 原文 http://my.oschina.net/fgq611/blog/113249 digoal’s 大量PostgreSQL文章入口

Get stream replication state from standby

6 minute read

背景 本文的目的是在standby节点获得几个stream replication相关的信息,从而判断当前standby节点的状态: wal receiver进程启动时间, wal receiver进程状态, wal receiver进程的PID, wal receiver进程连接...

PostgreSQL extend function - C example

1 minute read

背景 用C写PostgreSQL扩展,有很多例子可以参考。 其中一些来自PostgreSQL的contrib, 还有一些来自PostgreSQL自身的adt函数。 当然你还可以去pgfoundry和pgxn还有github上找到很多例子。 以PostgreSQL自己提供的函数为例,看看如何找到自己需要的例子...

PostgreSQL can continue when postmaster killed

5 minute read

背景 数据库主进程挂了,原有的连接还能继续操作数据库,你信吗?PostgreSQL可以做到,并且原来的进程对数据库的操作是持久化的,不会丢数据哦。这得益于PostgreSQL的进程结构设计。而且postmaster进程只负责了简单的工作,例如监听端口。 (有人会问了,wal writer, backgroup ...

PostgreSQL How to get upstream node conninfo from standby node

7 minute read

背景 在PostgreSQL的upstream节点可以获得downstream节点的连接信息,当downstream节点主动连接upstream节点时,在upstream节点会有一个sender process负责发送XLOG信息,而这个sender进程其实就是backend process,在pg_stat_a...