GUC (Grand Unified Configuration)模块主要功能是系统中的配置参数的实现和管理。模块实现多种类型的配置变量(当前为boolean、enum、int、real和string)。配置参数可以来自很多地方,如配置文件、SET命令、初始化选项等,GUC对于不同来源采用优先级原则来决定哪种参数的值在系统中生效。
check_hook函数用于对变量值(超出GUC可以执行的操作)执行有效性检查,在特殊情况下计算原始设置,并可选择“规范化”用户提供的值。
assign_hook函数用于更新设置GUC变量时需要更改的状态(state)。
show_hook函数用于修改变量SHOW时的默认显示方式。
如果提供了check_hook,它将指向签名的函数,
bool check_hook(datatype *newvalue, void **extra, GucSource source)
“newvalue”参数的类型是bool *、int *、double *或char ** 分别用于bool、int/enum、real或string变量。chek_hook函数将会验证给定的值是否满足需求,如果满足返回true。如果不满足,返回false。同时,它还可以做一些格外的事情,例如:
void GUC_check_errdetail(const char * format,...)
当拒接了一个错误的值时,有必要将一些额外的误信息添加到报错信息中。上面函数中额外的错误信息字符串会嵌入到guc.c的错误报告中,成为DETAIL的一部分,所以,它必须要遵从错误消息的格式。
void GUC_check_errhint(const char *format, ...)
同样,也可以利用上面这个函数以的方式添加一个HINT(提示)消息。
当然也可以修改相应的打印错误代码和错误消息
void GUC_check_errcode(int sqlerrcode)void GUC_check_errmsg(const char *format, ...)
如果提供了一个assign_hook变量,它将指向签名的函数
void assign_hook(datatype newvalue, void *extra)
const char *show_hook(void)
文章转载自Thornger,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




