BUG #17663:Connect to the database through jdbc, call the stored procedure containing the rollback statement,the database triggers an assertion, and the database is in recovery mode.

Started by 赵其桂over 3 years ago2 messageshackers
Jump to latest
#1赵其桂
zhaoqg45023@hundsun.com

Dear developer:
The patch submitted addresses #17663 in the pgsql-bugs@lists.postgresql.org list.
Problem: Add the parameters --enable-debug and --enable-cassert when the database is compiled. Driven by jdbc, the stored procedure containing rollbck is called, and an assertion occurs.
Cause of the problem: Driven by jdbc, in the function BuildCachedPlan, the CachedPlan memory context is generated to save the execution plan (plan) of the input SQL. If the stored procedure contains rollback, call the function ReleaseCachedPlan to release the CachedPlan memory context. Therefore, before the function pgss_store collects statistical information, it is necessary to retain the stmt_location and stmt_len data required in pstmt, which will not be released by the cCachedPlan memory context, resulting in random values for the parameters required by the function pgss_store.?

Attachments:

0001-fix-BUG-17663-Connect-to-the-database-through-jdbc-c.patchtext/plain; name=0001-fix-BUG-17663-Connect-to-the-database-through-jdbc-c.patchDownload+4-3
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: 赵其桂 (#1)
Re: BUG #17663:Connect to the database through jdbc, call the stored procedure containing the rollback statement,the database triggers an assertion, and the database is in recovery mode.

=?gb2312?B?1dTG5Lnw?= <zhaoqg45023@hundsun.com> writes:

The patch submitted addresses #17663 in the pgsql-bugs@lists.postgresql.org list.
Problem: Add the parameters --enable-debug and --enable-cassert when the database is compiled. Driven by jdbc, the stored procedure containing rollbck is called, and an assertion occurs.
Cause of the problem: Driven by jdbc, in the function BuildCachedPlan, the CachedPlan memory context is generated to save the execution plan (plan) of the input SQL. If the stored procedure contains rollback, call the function ReleaseCachedPlan to release the CachedPlan memory context. Therefore, before the function pgss_store collects statistical information, it is necessary to retain the stmt_location and stmt_len data required in pstmt, which will not be released by the cCachedPlan memory context, resulting in random values for the parameters required by the function pgss_store.?

Indeed ... thanks for the patch!

regards, tom lane