gpt4 book ai didi

postgresql - Postgresql中没有cubedata.h和contrib目录

转载 作者:行者123 更新时间:2023-11-29 13:11:37 24 4
gpt4 key购买 nike

我有128维的float向量(人脸识别问题)。为了存储这些向量,我在 Postgresql 中使用数据类型立方体。此类型默认有限制 - 100 暗淡。

在 psql (PostgreSQL) 10.5 (Ubuntu 10.6-0ubuntu0.18.04.1) 中这个限制不起作用:我可以毫无问题地存储我的向量。但是昨天我的一台机器更新到 PostgreSQL 10.6,现在我在尝试将新的立方体向量添加到我的数据库时收到错误消息。关于太长矢量的错误。

要解决此问题,我必须在 contrib 目录中的文件 cubedata.h 中更改此限制。但是我根本没有这个文件和这样的目录!

我试试安装

sudo apt-get install postgresql-contrib

但是,我收到有关已安装最新 postgresql-contrib 版本的消息。

我尝试手动下载 cubedata.h 文件到 Postgresql 目录 (/usr/share/postgresql/10/extension/),但没有帮助。

我遇到过这样的问题吗?

最佳答案

在 Ubuntu 18.04.1 中 cubedata.h 包含在来自 PostgreSQL 的 postgres-server-dev-10 包中 official repository .但是预构建的 cube.so 包含在 postgresql-10 包中,具有默认限制。

要增加限制,您应该从源代码重新编译 cube.so。下面是 Ubuntu 的代码示例。

添加存储库:

PG_VER=10.6
source /etc/os-release
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ ${VERSION_CODENAME}-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt-get update
sudo apt-get install -y postgresql-${PG_VER%.*}

从源代码编译cube扩展:

PG_VER=10.6
sudo apt-get install -y unzip gcc make zlib1g-dev libreadline-dev postgresql-server-dev-${PG_VER%.*} bison flex
wget https://ftp.postgresql.org/pub/source/v${PG_VER}/postgresql-${PG_VER}.tar.bz2 --quiet -O postgresql.tar.bz2
tar xvf postgresql.tar.bz2
cd postgresql-${PG_VER}
./configure
cd contrib/cube
sed -i 's/#define CUBE_MAX_DIM (100)/#define CUBE_MAX_DIM (128)/' cubedata.h
make USE_PGXS=1
sudo make USE_PGXS=1 install

重启服务器后查看结果:

sudo -u postgres psql dbname -c 'CREATE EXTENSION cube'
sudo -u postgres psql dbname -c 'SELECT cube_dim(cube(array(select generate_series(1, 128)))) as dim'

关于postgresql - Postgresql中没有cubedata.h和contrib目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53958843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com