编译PostgreSQL扩展提示'work_mem'未声明,询问对应定义头文件
问题解决办法
你遇到的编译报错如下:
error: ‘work_mem’ undeclared (first use in this function) 17 | Tuplestorestate *tupstore = tuplestore_begin_heap(true, false, work_mem);
work_mem 是 PostgreSQL 内置的全局配置(GUC)变量,它的定义位于 utils/guc.h 头文件中。你只需要在你的扩展源码头部添加对应头文件引入即可解决该报错:
#include "utils/guc.h"
额外注意事项:
- PostgreSQL 12 及以上版本仅需要引入上述头文件即可正常使用
work_mem变量,低于 12 的版本需要额外引入utils/memutils.h避免关联依赖报错 - 编译扩展时需要确保 PGXS 配置正确,能够正常检索到安装的 PostgreSQL 服务端头文件目录,避免路径配置错误导致头文件引入不生效
内容的提问来源于stack exchange,提问作者Evan Carroll
相关产品推荐
相关产品推荐

