日期:2014-05-16  浏览次数:20863 次

postgresql是怎么重载配置文件的
当我通过alter database set方式修改一个guc参数后,我重新连接psql,修改就生效了。想请教下各位大神,客户端通过psql重新连接后,它是怎么知道让alter修改生效的。希望能给出具体的函数,或者流程。例如我psql连接时,会先验证连接信息,然后读取某个文件,发现用户执行过alter database,然后发送一个信号,让postgres(postmaster?)重载配置文件。我现在的想做的事情是:每次psql连接后,我如果发现用户通过alter修改过某个guc参数(而且值与当前参数值不一样),我就会做一些其他的事情。但是我不知道怎么判断用户修改过了。

------解决方案--------------------
发一个信号过去的,可以看看postgresMain函数,postmast在检测到客户端退出后会收到一个SIGHLD信号,然后调用reaper函数处理,你可以在这个地方修改看看,生效是调用的process_setting来实现的