Jor*_*dan 5 javascript postgresql stored-procedures postgresql-9.2 plv8
我遇到了从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调试器功能,但我没有成功实现这一点.如果有人有这方面的工作经验,你能不能帮助我让它工作?谢谢.
发生这种情况是因为 plv8 的日志输出仅限于一定数量的字节/位。如果您连接多个长字符串并将其发送到plv8.elog(),它会在达到最大字节/位数后切断字符串。为了解决这个问题,我这样做:
plv8.elog(INFO, myString.substring(0,800));
plv8.elog(INFO, myString.substring(801,1600));
plv8.elog(INFO, myString.substring(1601,2400));
Run Code Online (Sandbox Code Playgroud)
INFO:我认为限制是1024,但是其中一些被日志输出的部分占用了。
| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |