2

jboss5.1-java-jpa-hibernate-postgresqlアプリケーションでselectクエリを実行しています。このクエリは、約10個のクエリのUNIONクエリであり、通常、現時点では約25.000個のBigInteger数値を返す必要があります(後で詳しく説明します)。昨日、この関数は正常に機能しました。今日、次のエラーが発生しました。誰かアドバイスしてもらえますか?このエラーについてはあまりわかりません。

ERROR: stack depth limit exceeded Hint: Increase the configuration parameter "max_stack_depth", after ensuring the platform's stack depth limit is adequate.

10個のクエリを次々に単独で実行し、その結果を1つのArrayListに追加すると、役に立ちますか?


編集:

使用したPostgresqlのバージョン:postgresql-9.0-801.jdbc4.jar

セキュリティ上の理由から、正確なクエリを表示できません。しかし、それは次のようなものです。

SELECT * FROM (
    SELECT fileId FROM table1
    UNION
    SELECT fileId FROM table2
    ...
    ...
    SELECT fileId FROM table_n
);

このクエリは、現在約25.000のBigIntegerエントリを返します(将来的には120.000に到達しようとしています)。助言がありますか?

4

1 に答える 1

1

問題が解決しました。これは、postgresql に送信された非常に大きなクエリによって発生しました。

クエリを動的に作成するコードにバグがあり、1 つのユニオン クエリで 10 個のクエリを作成する代わりに、それらをレプリケートし、1 つのユニオン クエリで何百もの同じクエリ シリーズを作成しました。これらすべてにより、データベースで巨大なクエリが発生し、その結果、データベースでトランザクション タイムアウトが発生しました。

各クエリを単独で実行し、コードを使用して結果をマージするようにコードを変更しました。もちろん、バグを修正したところ、正しいクエリが 10 個しか生成されませんでした。

助けてくれてありがとう。

于 2013-03-26T13:51:42.807 に答える