问题标签 [plperl]

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 投票
1 回答
400 浏览

perl - 如何告诉 PostgreSQL 使用其他 Perl 版本?

我在 Ubuntu 14.04 64 位机器上工作。我需要使用 Perl 5.14 来处理某些无法使用最新版本的 perl (5.18) 安装的模块。我的 postgresql-9.3 服务器在安装 postgres-plperl 时需要安装 perl 5.18。因此我想告诉 Postgres 使用 5.14 版本,但我还没有找到一种方法来做到这一点。有没有办法做到这一点?

0 投票
1 回答
1219 浏览

sql - Perl/Postgresql:plperl.so 未定义符号:Perl_sv_2bool_flags

这是我在这里的第一篇文章,如果我没有提供第一次所需的所有信息,非常抱歉!

我的老板和我一直在尝试在我们的一台服务器(Centos 6.5、Postgres 9.2.1、Perl 5.10.1)上安装我们的 postgres 安装 plperl,但我们一直遇到同样的问题,如下所示:

当我们尝试通过 SQL 或使用 PgAdmin III GUI 安装语言(创建语言 plperl;)时,会返回此错误。

我已经检查了我们是否有一个lperl.so文件,/opt/PostgreSQL/9.2/lib/postgresql/并且正在寻找libperl.so与此问题有关的大多数帖子。我尝试过放置libperl.so在许多不同的地方,因为每个人和他的狗对应该放置的位置都有不同的建议。

运行ldd /opt/PostgreSQL/9.2/lib/postgresql/plperl.so返回以下内容:

我认为 Postgres 和 Perl 的版本不是问题,因为我们有另一台服务器运行 Centos 6.5、Postgres 9.3 和 Perl 5.10.1,pl/perl 运行良好(我也尝试查看那里发生了什么要修复这但无法解决)。

据我所知,Postgres 期望 libperl.so 位于 /lib64 中,但是当安装 Perl 时,它安装在其他地方。目前 Postgres 是唯一将使用 libperl.so 的东西

不幸的是,我不知道这台服务器上的所有东西是如何安装的,因为我的老板在我加入公司之前就已经设置好了所有东西,他才刚刚决定我们实际上需要让它工作。

通过查看我们的两台服务器,我看不出安装和配置有任何差异,这会导致一台工作而另一台不工作。

我对此几乎束手无策(这是我们需要通过 Postgres 安装解决的最后一个问题),所以任何建议都将不胜感激。

干杯

0 投票
2 回答
614 浏览

perl - 如何在 PostgreSQL PLPerl 函数中进行日期/时间操作

在 plperl 中编写 Postgres 函数(存储过程)时,我了解到无法加载诸如“use Time::Piece;”之类的 perl 模块。鉴于此,在 plperl 中处理日期/时间操作和比较的最佳方法是什么?使用 plperlu 和加载模块对我来说不是一个选项。

我不得不求助于以下查询:

我还使用 SQL 将时间戳转换为纪元时间,以便在 perl 中进行比较。我希望这是一个愚蠢的问题,并且有一种更直接和简单的方法来处理日期/时间功能。谢谢。

0 投票
1 回答
79 浏览

postgresql - Postgres plperl - 创建聚合函数以平均分位数

我正在尝试获取日期的所有 dBm 值并将它们平均,但要平均 dBm,它们需要转换为瓦特,平均,然后转换回 dBm。

这是我用 plperl 尝试过的。

运行此功能时出现的错误是:

我想我接近拥有这个权利,但似乎无法弄清楚。该查询只需要按日期聚合并将该日期的所有 dbm 值平均为一个值。

有什么想法或解决方案吗?

编辑:更新 plsql 代码以获得正确的 perl 变量名称

更新:

我将 SQL 更改为:

并得到这个错误:

有问题的部分在 plperl 的这行代码中

特别是 $dbm 不想除以 10...

我尝试将函数更改为使用非数组双精度数据类型,但这似乎不起作用。我还尝试在 MySQL 中添加 0,希望进行自动转换,但失败了。

在除法中使用它们之前需要对数组数据类型进行一些处理吗?

0 投票
1 回答
254 浏览

postgresql - 使用 postgresql plperl 读取文件并打印

我想从 OS 文件系统读取文件并将其内容打印为表格。最可取的方法是使用 plperl(因为不需要使用临时表,并且在大多数 postgres 安装中默认内置 plperl)。但不幸的是,我不熟悉 perl,我的功能不起作用。它是读取文件但不打印任何内容。

你能检查一下函数体,并说出错误在哪里吗?

谢谢!

0 投票
2 回答
163 浏览

postgresql - 如何处理中断(即 SIGTERM 或 SIGINT)

我有一个功能可以进行相当多的密集处理。有时我需要能够停止它(即用于数据库维护),即使它处于运行中期。我想给它发送一个 SIGINT,这样它就可以优雅地结束它正在做的事情。我发现,只要我引入一个普通的 perl 中断处理程序,该函数就会停止正确响应中断。

在职的

如果我select run_for_awhile()在 psql 中执行,我可以输入Ctrl+C并取消。在我正在做的实际应用程序中,select pg_cancel_backend(PID)但我的测试通过该方法得到了相同的结果。

如果我修改函数以捕获 SIGINT 和/或 SIGTERM,则会发送信号,但该函数直到 30 秒后才注意到它(当 pg_sleep 完成时)。所以处理程序最终会运行,但不会“立即”运行。

IE

0 投票
1 回答
217 浏览

postgresql - PL/Perl 触发器不能使用 .bashrc 中定义的 ENV 变量

我正在尝试在 postgresql 的 PL/perl 触发器中使用环境变量(例如 HOME),它似乎是空的。

在终端中运行printenv | grep HOME会返回所需的路径。

我将触发器定义为

当查询激活触发器时,我得到输出

我检查了脚本中 %ENV 包含的内容(使用use Data::Dumper; elog(NOTICE, Dumper(%ENV));

您知道如何设置终端会话中定义的环境变量,以便在 PL/perl 触发器中使用吗?

0 投票
1 回答
203 浏览

dbi - POSTGRESQL 中的 PL/PERL 中的 PERL DBI

我可以在 Postgresql 中创建的 pl/perl 函数中使用 DBI 来选择任何外部数据库吗?

我收到错误:无法将 DBI.pm 加载到 plperl

(我知道有 oracle 外部数据包装器,但我只需要存储针对 Oracle、MSSQL 或 PG 触发的 select 语句的结果集并将其存储在 Postgres 中。)

这是我的函数(目前只有连接字符串):

0 投票
1 回答
181 浏览

postgresql - PostgreSQL PL/PerlU 触发器问题

我正在尝试在 Linux 上创建一个用 Perl 编写的 PostgreSQL 触发器,它应该执行基于外部库的代码。包含触发器的 SQL 脚本如下所示:

这样做的问题是,每当我尝试使用此脚本时,psql我都会在 Perl 代码中收到权限被拒绝错误,以便访问MyModule. 完全访问我的主目录postgres并没有帮助。

先感谢您!

0 投票
0 回答
107 浏览

plperl - plperl; 找不到指定的模块 Postgres 10 - Windows 10 - Strawberry Perl 5.24

运行命令时:

我收到一个错误:

指定的模块无法找到。

运行 Windows 10 - Postgres 10 - Strawberry Perl 5.24