Windows系统下PostgreSQL修改cubedata.h提升CUBE类型上限的步骤问询
Windows系统下修改PostgreSQL CUBE数据类型维度上限操作流程
1. 准备编译所需依赖与PostgreSQL源码
- 首先确认你当前安装的PostgreSQL完整版本号,可通过psql执行
SELECT version();查询 - 下载对应版本的PostgreSQL官方源码包
- 安装Windows下的编译工具链:Visual Studio(需匹配你当前PostgreSQL版本的编译VS版本,比如PostgreSQL 14及以上推荐VS2019/2022),同时安装Windows SDK组件
- 确保你本地PostgreSQL安装目录下的
include、lib文件夹完整,没有被精简安装移除
2. 修改cubedata.h头文件参数
- 解压下载的PostgreSQL源码包,找到
contrib/cube/cubedata.h文件 - 打开文件找到宏定义
#define CUBE_MAX_DIM 100,将100修改为你需要的维度上限,比如人脸编码常用的128维就改成128,注意不要设置过大,避免不必要的性能损耗 - 保存修改后的文件
3. 编译修改后的cube扩展
- 打开Visual Studio对应的64位原生工具命令行(x64 Native Tools Command Prompt,绝大多数Windows环境下的PostgreSQL为64位版本)
- 切换到源码的
contrib/cube目录 - 执行以下命令配置编译环境,将
{你的PostgreSQL安装路径}替换为实际路径,比如C:\Program Files\PostgreSQL\15:
set PG_CONFIG={你的PostgreSQL安装路径}\bin\pg_config.exe nmake /f Makefile nmake /f Makefile install
- 编译无报错后,新的cube扩展文件会自动覆盖原有PostgreSQL安装目录下的扩展文件
4. 验证修改是否生效
- 重启PostgreSQL服务
- 打开psql,先卸载原有cube扩展(如果之前已经安装):
DROP EXTENSION IF EXISTS cube; - 重新安装cube扩展:
CREATE EXTENSION cube; - 执行测试语句验证维度上限,比如创建128维的cube:
SELECT cube(ARRAY(SELECT generate_series(1,128))); - 如果语句执行无报错,说明维度上限修改成功
注意:
- 如果数据库中已有使用cube类型的表,修改维度上限前请先备份相关数据,避免兼容性问题。
- 如果后续升级PostgreSQL版本,需要重新执行上述修改编译操作,新版本的默认cube扩展会覆盖你修改后的版本。
内容的提问来源于stack exchange,提问作者Dancun Gerald
相关产品推荐
相关产品推荐

