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 デバッガー機能があることはわかっていますが、それを機能させることに成功していません。誰かがそれを機能させた経験がある場合は、それも機能させるのを手伝ってもらえますか? ありがとう。