问题标签 [postgresql-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1849 浏览

postgresql - 无法在 Postgresql 上安装扩展

我尝试在我的 Postgresql 12 上安装 semver。我成功安装了 postgis 并使用以下命令在我的 Centos 7 服务器上安装 pg-semver( semver扩展):

然后我跑了

我收到以下错误:

无法打开扩展控制文件/usr/pgsql-12/share/extension/semver.control:没有这样的文件或目录

我将所有文件从“/usr/share/pgsql/extension/”复制到“/usr/pgsql-12/share/extension”。现在我收到以下错误:

错误:错误:无法访问文件“semver”:没有这样的文件或目录

更新(2020 年 2 月 28 日):

我删除了 pg-semver,因为它为 PSQL 9.2 提供。我现在尝试使用开发人员提供的文档来构建自己。

我从https://github.com/theory/pg-semver/archive/master.zip下载了 semver 扩展,然后解压缩。之后我运行以下命令:

并得到:

make:对于“all”目标没有什么可做的。然后:

并得到:

/bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./semver.control '/usr/share/pgsql/extension/' / bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./sql/semver--0.20.0.sql ./sql/semver- -unpackaged--0.2.1.sql ./sql/semver--0.20.0--0.21.0.sql ./sql/semver--0.12.0--0.13.0.sql ./sql/semver-- 0.3.0--0.4.0.sql ./sql/semver--0.16.0--0.17.0.sql ./sql/semver--0.13.0--0.15.0.sql ./sql/semver- -0.11.0--0.12.0.sql ./sql/semver--0.2.4--0.3.0.sql ./sql/semver--0.2.1--0.2.4.sql ./sql/semver --0.5.0--0.10.0.sql ./sql/semver--0.10.0--0.11.0.sql ./sql/semver.sql ./sql/semver--0.17.0--0.20。 0.sql ./sql/semver--0.15.0--0.16.0.sql '/usr/share/pgsql/extension/' /bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/.. /../config/install-sh -c -m 755 src/semver.so '/usr/lib64/pgsql/'/bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./doc/semver.mmd '/usr/share/doc/pgsql/扩大/'

然后:

并得到:

==============删除数据库“contrib_regression”==============删除数据库==============创建数据库“contrib_regression” ============== CREATE DATABASE ALTER DATABASE ============== 安装 plpgsql ============ == CREATE LANGUAGE ============== 运行回归测试查询 ============== 测试库 ... FAILED(测试过程以退出代码 3 退出)

--------------- 1 个测试中的 1 个失败。

可以在文件“/tmp/ttt/pg-semver-master/regression.diffs”中查看导致某些测试失败的差异。您在上面看到的测试摘要的副本保存在文件“/tmp/ttt/pg-semver-master/regression.out”中。

make: *** [installcheck] 错误 1

regression.out的内容:

……!好的 278 - 次要版本检查!好的 279 - 函数 get_semver_patch() 应该存在!好的280-semver!好的 281 - 函数 get_semver_patch() 应该返回整数!好的 282 - 补丁版本检查!好的 283 - 函数 get_semver_prerelease() 应该存在!好的 284 - semver !好的 285 - 函数 get_semver_prerelease() 应该返回文本!好的 286 - 预发布标签检查!好的 287 - 1.0.0 应该在 [1.0.0, 2.0.0] 范围内!好的 288 - 1.0.0 不应该在 [1.0.1, 2.0.0] 范围内!好的 289 - 2.0.0 不应该在 [1.0.1, 2.0.0) 范围内!好的 290 - 1.9999.9999 应该在 [1.0.1, 2.0.0) 范围内!好的 291 - 1000.0.0 应该在 [1.0.0,) 范围内!好的 292 - 应该能够使用 semverranges 数组 --- 1,2 ---- \set ECHO none !psql:sql/semver.sql:30:错误:无法访问文件“semver”:没有这样的文件或目录

/usr/pgsql-12/lib/ 中没有 semver.so,/usr/lib64/pgsql/ 中有 semver.so 但它也适用于 9.2 版?

0 投票
1 回答
399 浏览

postgresql - 错误:在 Postgresql 中创建扩展时库不兼容

我使用 Centos 7 和 Postgresql 12。我已经安装了 PostGIS 并成功创建了它的扩展。我现在正在尝试使用create extension semver安装 semver 扩展并收到以下错误:

错误:库不兼容 »/usr/pgsql-12/lib/semver.so«:版本不匹配

根据开发人员的说法,这个版本应该适用于我的 Postgresql 12。为什么我会收到这个错误?

谢谢!

0 投票
2 回答
146 浏览

c - 如何让 Postgres 后台工作人员在收到信号时睡觉和醒来?

PostgreSQL 利用后台工作者来允许进程以并发方式工作,并且它们有一个 API 供后端/扩展开发人员控制它们。到目前为止,我已经成功地在一个演示扩展中使用了这个功能,成功地产生了一些工人。

我的情况是,我的一名工人必须等待另一名工人完成。到目前为止,我正在做的是一个空闲工作人员的无限循环,直到正在等待的工作人员完成,这可能非常低效。所以我想知道如何让空闲进程休眠,直到发送一些信号?我会寻找什么?是否有一个扩展可以做类似的事情,以便我可以用来指导?

0 投票
1 回答
723 浏览

postgresql - 如何使用正确的 PostgreSQL 版本安装 pgxn?

On sudo -H pgxn install semver, 关于错误 PostgreSQL 版本的错误 (它是 v10 而不是 v12),

我也尝试修复“postgresql headers”,通过这条线索使用sudo apt install postgresql-server-dev-10,但没有效果。

我使用的是pgxn.org扩展,它的主页上没有明显的“安装指南”。似乎该指南是pgxn.github.io/pgxnclient,但它没有说明更改 PostgreSQL 配置(但关于 extend-pgxs 的 Pg 指南可能会说些什么)。


有关json_fdw/issuesthis other question的更多详细信息。


环境细节

  • 开启psql "postgres://postgres:passwd@localhost/myBase" -c "select version()"= PostgreSQL 10.12

  • 旧服务器 UBUNTU 16 LTS

  • psql --version= 12.2(但 SQL 是 10.12!)

  • pgxn由 安装sudo easy_install pgxnclient
    重做sudo -H pip install --upgrade pgxnclient
    pgxn --version= pgxnclient 1.3

  • 对于在pgxn installjson_fdw之前准备好的包,使用sucess 。sudo apt install zlib1g-dev libyajl-dev

似乎真正的问题是 PostgreSQL 版本混淆:两者存在,ls /usr/share/postgresql/10/extension并且ls /usr/share/postgresql/12/extension

0 投票
1 回答
104 浏览

postgresql - 如何使扩展不可重定位?

我有一个扩展:https ://github.com/CraigTyle/Mathexp

我的任务是使扩展不可重定位:应该可以在任何模式中安装扩展,但应该不可能更改该模式。

有人告诉我这是怎么做的:不要使用运算符,而是@extschema@为本地定义的类型和对象使用前缀。好吧,不要声明可重定位扩展。

我到底该怎么做?

0 投票
1 回答
289 浏览

postgresql - 如何在 GCP 的 PostgreSQL 中安装外部扩展

在这里看到只能在 Google Cloud Platform 的 PostgreSQL 上安装允许的扩展。是否有可能添加未在支持的扩展中列出的扩展?我需要的扩展是 pg_semver。

0 投票
2 回答
59 浏览

postgresql - libpqxx C 聚合扩展返回错误数据?

我正在学习如何创建 C 聚合扩展并在客户端使用 libpqxx 和 C++ 来处理数据。

我的玩具聚合扩展有一个类型参数,bytea状态也是类型bytea。以下是我的问题的最简单示例:

服务器端:

客户端:

客户端的结果打印:

模式30重复直到字符串结尾,十六进制打印字符串为 512 字节。

我希望收到一个长度为 128 字节的数组,其中每个字节都设置为零。我究竟做错了什么?

libpqxx 版本是 7.2 和 Ubuntu 20.04 上的 PostgreSQL 12。

附录

安装扩展sql语句;

0 投票
0 回答
41 浏览

c - C中的Postgres自定义并行聚合扩展,共享状态?

我正在创建一个 Postgres C 扩展,它是一个并行聚合函数。有什么方法可以在所有工作人员中共享状态或我选择的任何状态/内存块?我不希望每个工作进程都有自己的副本,我希望每个人都有一个全局副本。

任何帮助将不胜感激。

0 投票
0 回答
90 浏览

c - Postgres C扩展并行聚合,如何获取worker id和行号?

我正在为并行聚合函数编写 Postgres C 扩展。通常,在 C 或 C++ 中,我得到我的线程 ID 和要完成的工作的索引,然后我可以确保可以在没有依赖关系的情况下完成工作,并且最终结果总是正确的。

在我正在操作的行上没有获得索引(表上的行号,而不是 postgres 索引)以及工作人员 ID,我无法使用我的聚合函数处理任何内容并保证正确性。

  1. 有没有办法在 postgres 上获取 worker_id 以进行并行 C 聚合扩展?
  2. 有没有办法从 C 聚合函数中获取行索引/id/编号,而不必在 SQL 中计算它并将其作为列传递给我的函数?

至少我知道工人ID存在,只是不知道如何获得它。

0 投票
0 回答
505 浏览

database - pg_cron 扩展连接失败

需要 pg_cron 扩展的帮助:我是第一次使用它:它因“连接失败”错误而失败。我已遵循所有https://github.com/citusdata/pg_cron提到的说明。任何人都可以帮我解决这个问题:就我而言,它因连接失败错误而失败。但是,在实际的数据库日志中,我看不到任何错误。为什么会这样?

在此处输入图像描述