我在从 plv8.elog() 获取正确输出时遇到问题。刚开始,我在 Ubuntu 12.10 上使用 pgxn 安装的 PostgreSQL 9.2、plv8 1.4.1。我正在构建一个包含嵌套游标循环并使用许多准备好的语句的函数。我正确地关闭了游标并释放了准备好的语句。所有这些功能都会生成一个对象数组,这些对象是将插入许多不同表中的记录。
它发生故障的地方是我使用对象中的数据循环遍历该数组以生成查询字符串。我正处于这部分代码的构建阶段,所以在我通常会执行查询字符串的地方,我尝试将其输出到控制台。这就是腐败发生的地方。
当输出它在我的测试中生成的 9 个查询字符串时,只显示其中的 7 个。当我进入 postgres 日志时,我发现在 2 个缺失的查询字符串的末尾,有一个看起来像带有问号的菱形的字符。基本上是一些在当前字符集中无法显示的字符。我已经测试了查询生成器代码的所有部分,但找不到任何原因。我相信 plv8.elog() 函数或 plv8 引擎的字符串连接功能由于某种原因正在损坏。
我遇到的问题是,如果它是字符串连接功能,我不能相信查询字符串能够正确执行。我已经通过从函数中删除代码并使用数组中的静态信息来测试代码。在这种情况下,它工作正常,所以我知道这部分代码没有问题。
首先,有没有其他人见过这个?plv8.elog() 的损坏或怪异行为?当您的函数达到一定的大小或复杂性时,是否有任何数据损坏?如果是这样,您是否能够找到一种至少解决它的方法?
另外,如果它是 plv8.elog() 函数,还有另一种获取变量值的方法吗?我知道应该有 v8 调试器功能,但我没有成功让它工作。如果有人有让它工作的经验,你能帮我让它工作吗?谢谢。