Thread
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add API of sorts for transition table handling in trigger.c
- 3a46a45f6f00 15.0 cited
-
[PATCH 2/2] Fix MakeTransitionCaptureState to return a consistent result
Kyotaro Horiguchi <horikyota.ntt@gmail.com> — 2025-02-07T04:55:52Z
When both an UPDATE trigger referencing NEW TABLE and a DELETE trigger referencing OLD TABLE are present, the function returns an inconsistent result for UPDATE command between reference flags and tuplestores. This caused a crash in version 14 and earlier during cross-partition UPDATEs on a partitioned table, but commit 3a46a45f6f0 accidentally fixed the issue. Still, it is better to fix this inconsistency, and since similar fixes have been made in older versions, we should apply the same fix in this version to keep the code consistent across major versions. --- src/backend/commands/trigger.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 7a5ffe32f60..05b31bcb30a 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -4991,10 +4991,10 @@ MakeTransitionCaptureState(TriggerDesc *trigdesc, Oid relid, CmdType cmdType) /* Now build the TransitionCaptureState struct, in caller's context */ state = (TransitionCaptureState *) palloc0(sizeof(TransitionCaptureState)); - state->tcs_delete_old_table = trigdesc->trig_delete_old_table; - state->tcs_update_old_table = trigdesc->trig_update_old_table; - state->tcs_update_new_table = trigdesc->trig_update_new_table; - state->tcs_insert_new_table = trigdesc->trig_insert_new_table; + state->tcs_delete_old_table = need_old_del; + state->tcs_update_old_table = need_old_upd; + state->tcs_update_new_table = need_new_upd; + state->tcs_insert_new_table = need_new_ins; state->tcs_private = table; return state; -- 2.43.5 ----Next_Part(Fri_Feb__7_15_02_38_2025_090)----