Skip to content

Commit e784dd4

Browse files
committed
fix(postgresql): trying to fix relcache/plancache/snapshot leaks that occurs when an exception is thrown and catched inside cloudsync_changes_insert_trigger (WIP)
1 parent 3fff6b1 commit e784dd4

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

src/postgresql/cloudsync_postgresql.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1712,8 +1712,10 @@ Datum cloudsync_col_value(PG_FUNCTION_ARGS) {
17121712
}
17131713

17141714
if (rc != DBRES_OK) {
1715+
databasevm_reset(vm);
17151716
ereport(ERROR, (errmsg("cloudsync_col_value error: %s", cloudsync_errmsg(data))));
17161717
}
1718+
databasevm_reset(vm);
17171719
PG_RETURN_DATUM(d);
17181720
}
17191721

src/postgresql/database_postgresql.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,6 +1479,10 @@ void databasevm_finalize (dbvm_t *vm) {
14791479

14801480
void databasevm_reset (dbvm_t *vm) {
14811481
if (!vm) return;
1482+
pg_stmt_t *stmt = (pg_stmt_t*)vm;
1483+
clear_fetch_batch(stmt);
1484+
close_portal(stmt);
1485+
stmt->executed_nonselect = false;
14821486
databasevm_clear_bindings(vm);
14831487
}
14841488

0 commit comments

Comments
 (0)