问题标签 [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 投票
3 回答
2984 浏览

windows - 有没有人让 plperl 在 Windows 上使用 Postgres 9.1?

我一直无法让 plperl 在 Windows 上使用 Postgres 9.1。

这里描述了同样的问题,但到目前为止还没有解决方案:http: //postgresql.1045698.n5.nabble.com/BUG-6204-Using-plperl-functions-generate-crash-td4802111.html

REPRO

从这里为 Windows 安装 Perl 5.14 32 位:http: //downloads.activestate.com/ActivePerl/releases/5.14.2.1402/ActivePerl-5.14.2.1402-MSWin32-x86-295342.msi

将 Perl 添加到系统路径变量 Install Postgres 9.1.2 32-bit for Windows from Enterprise DB www.enterprisedb.com/products/pgdownload.do#windows

现在创建一个测试数据库,向其中添加 perl,然后尝试创建一个函数:

请注意,这会导致 Postgres 服务器进程关闭。哎呀!

当我查看我的 Postgres 日志文件时,我发现这个......

0 投票
2 回答
11780 浏览

postgresql - PostgreSQL 错误:语言“plperlu”不存在

我是 PostgreSQL 的初学者。我得到了一个 PostgreSQL 的 SQL 补丁,并在执行 SQL 时对其进行了配置。我收到以下错误。我的背景是 MySQL。

询问

错误

错误:语言“plperlu”不存在 SQL 状态:42704 提示:使用 CREATE LANGUAGE 将语言加载到数据库中。

0 投票
1 回答
2175 浏览

perl - 在 Perl 中调用命令行函数并以字符串形式获取输出

在 Perl 中执行命令行函数的最佳/最简单方法是什么,以便我可以将输出作为字符串?

我实际上想要做的是从 PostgreSQL 的 PL/Perl 函数中调用一个 Java 程序,我想要输出字符串,但是目前它似乎只是返回 0。

这是一段简单的代码来解释我所追求的:

0 投票
1 回答
503 浏览

perl - 从 PL/Perl 代码访问数据库

有人可以协助纠正这段代码中的错误。

(这只是我的代码的简化版本,但它确定了问题)。

这会返回一个语法错误:

主要目的:是将输入参数制定为字符串,并用它来调用一些命令行程序,该程序返回一个字符串。然后输出这个字符串作为这个函数的返回值。

0 投票
1 回答
87 浏览

postgresql - PostgreSQL 的 plperlu 解释器的 @INC 和/或缓存库:为不同的数据库分开?

我正在开发一些库的不同版本,并且希望从我编写的各种 plperl 函数中加载基于current_database().

(IIRC 使用use而不是require首选,我认为是因为它可能会缓存库?)

但是,我担心同一台服务器上的不同数据库会出现问题,无论哪种方式我都在考虑这样做:

1)use lib然后use-- 如果不止一条路径卡在@INC 上,它可能不是正确的被使用的路径

2)require--即使这意味着在当前脚本中总是使用正确的,这是否意味着每次都重新加载库?无论哪种方式,如果库在使用后保持加载,是否有可能来自不同版本的命名空间污染可能导致错误?(例如,如果我有一些基于是否定义变量的分支,并且在一个版本中它是默认的,而在另一个版本中它不是 - 所有版本现在都会像它一样,除非我明确地取消定义它而不仅仅是没有定义它?)

0 投票
1 回答
373 浏览

sql-server - Accessing data on Microsoft SQL Server from a PostgreSQL function

I have an application that uses PostgreSQL but also interacts with a third-party-controlled database on MSSQL. The data are sometimes tied together closely enough that it becomes desirable to do things like:

Currently I implement thing_from_ms_crossover_function in plperl. Is there a way to do this in plpgsql or something, so that I don't need to start a plperl interpreter for such cases?

Another option is obviously to access both databases from my client app, but that becomes far less convenient than the view syntax above.

0 投票
1 回答
3474 浏览

postgresql - PostgreSQL:编码“UTF8”的字符在 plperl 存储过程中的“LATIN1”中没有等价物

我有这个用 Pl/Perl 编写的存储过程:

我的数据库中有一些字段(LATIN1 编码)可能有一些无效字符,因为我得到如下信息:

我尝试使用 PostgreSQL 的 convert() 和 convert_from() 来尝试更改编码,但没有任何运气。有任何想法吗?

提前致谢。

0 投票
1 回答
439 浏览

linux - 如何在 postgres-8.4 触发器中调试 plperl 脚本

我正在为触发器执行编写 plperl 脚本函数。当 INSERT / UPDATE 发生时,我的 plperl 脚本将运行,因为我正在根据收到的事件动态形成一些查询。当我插入/更新时,我想在终端中打印它。但它不会发生。告诉我我可以用哪种方式打印它。?

0 投票
2 回答
553 浏览

perl - 为什么这个 postgres 存储过程要使用 utf8?

我在使用 Perl 5.12.4 的 Postgres 9.2 上的 plperl 存储过程中遇到了一个特殊性。

可以使用这个“破碎”的 SP 来重现奇怪的行为:

执行时:

但是,如果我将qr//操作移到 eval 中,它会起作用:

结果:

  1. 为什么评估绕过自动use utf8

  2. 为什么use utf8甚至首先需要?我的代码不是 UTF8,据说这是唯一一次应该use utf8.

    如果有的话,如果脚本的输入包含非 ASCII 值,我可能希望eval版本在没有 的情况下中断。use utf8(进一步的测试表明,将非 ASCII 值传递给 bar() 确实会导致 eval 失败并出现相同的错误)


请注意,许多 Postgres 安装会在 perl 解释器启动时自动加载“utf8”。这至少在 Debian 中是默认设置,如下所示DO 'elog(WARNING, join ", ", sort keys %INC)' language plperl;

警告:Carp.pm、Carp/Heavy.pm、Exporter.pm、feature.pm、overload.pm、strict.pm、unicore/Heavy.pl、unicore/To/Fold.pl、unicore/lib/Perl/SpacePer。 pl、utf8.pm、utf8_heavy.pl、vars.pm、warnings.pm、warnings/register.pm
上下文:PL/Perl 匿名代码块
DO

但在展示奇怪行为的机器上却不是这样:

警告:Carp.pm、Carp/Heavy.pm、Exporter.pm、feature.pm、overload.pm、overloading.pm、strict.pm、vars.pm、warnings.pm、warnings/register.pm
上下文:PL/Perl匿名代码块
DO

这个问题不是关于如何让我的目标机器自动加载 utf8;我知道该怎么做。我很好奇为什么它似乎首先是必要的。

0 投票
0 回答
716 浏览

postgresql-8.4 - 无法在 Ubuntu Trusty 14.04 上安装 postgresql-plperl-8.4

我最近在新的 Ubuntu 14.04 发行版上安装 postgresql-plperl-8.4 时遇到问题。当我尝试安装它时,它给了我这个错误:

使用dpkg检查依赖关系还给出:

取决于:libc6 (>= 2.4)、libperl5.10 (>= 5.10.1)、postgresql-8.4 (= 8.4.21-1.pgdg10.4+1)、perl

好的,然后我使用dpkg检查了 14.04 上安装了哪个版本的 libperl,方法是运行:

dpkg --search libperl

然后我得到如下所示的结果:

这清楚地表明我安装了 libperl 的版本满足对 postgresql-plperl-8.4 的需求,但它给了我错误。任何人都可以帮忙吗?

https://askubuntu.com/questions/457726/failure-to-install-postgresql-plperl-8-4-on-ubuntu-14-04