Thread

Commits

  1. Fix overly large values/nulls arrays

  1. BUG #18755: Using Natts_pg_trigger rather than Natts_pg_event_trigger for event trigger

    The Post Office <noreply@postgresql.org> — 2024-12-29T08:52:31Z

    The following bug has been logged on the website:
    
    Bug reference:      18755
    Logged by:          Xin Zhang
    Email address:      zhanghien@qq.com
    PostgreSQL version: 17.2
    Operating system:   Any
    Description:        
    
    In function insert_event_trigger_tuple, the datum array is declared with
    length Natts_pg_trigger:
    ```c
    	Datum		values[Natts_pg_trigger];
    	bool		nulls[Natts_pg_trigger];
    ```
    
    Natts_pg_trigger should only be used in pg_trigger tuple and
    Natts_pg_event_trigger is for pg_event_trigger?
    I think this could be a typo. Maybe the author of function
    insert_event_trigger_tuple copied the variables from CreateTriggerFiringOn
    but forgot to change the array length to Natts_pg_event_trigger.
    
    The current code works because Natts_pg_trigger is 19 and
    Natts_pg_event_trigger is 7, the pg_event_trigger values array is allocated
    with some extra items which is never accessed with index >= 7.
    
    
  2. Re: BUG #18755: Using Natts_pg_trigger rather than Natts_pg_event_trigger for event trigger

    张鑫 <zhanghien@qq.com> — 2024-12-29T09:37:18Z

    Hi&nbsp;everyone!
    
    
    Here is the fix for BUG #18755. I fail to upload the patch with my mailbox and I just paste the text here because it's simple enough.
    
    
    From 94009c0ae26443d03bd81ec10a1b666a4c10def4 Mon Sep 17 00:00:00 2001
    From: "Xin Zhang" <zhanghien@qq.com&gt;
    Date: Sun, 29 Dec 2024 17:08:53 +0800
    Subject: [PATCH] Replace Natts_pg_trigger with Natts_pg_event_trigger for
    &nbsp;event trigger
    
    
    ---
    &nbsp;src/backend/commands/event_trigger.c | 4 ++--
    &nbsp;1 file changed, 2 insertions(+), 2 deletions(-)
    
    
    diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
    index dcfc1dbaffd..1f5872554d4 100644
    --- a/src/backend/commands/event_trigger.c
    +++ b/src/backend/commands/event_trigger.c
    @@ -276,8 +276,8 @@ insert_event_trigger_tuple(const char *trigname, const char *eventname, Oid evtO
    &nbsp;	Relation	tgrel;
    &nbsp;	Oid			trigoid;
    &nbsp;	HeapTuple	tuple;
    -	Datum		values[Natts_pg_trigger];
    -	bool		nulls[Natts_pg_trigger];
    +	Datum		values[Natts_pg_event_trigger];
    +	bool		nulls[Natts_pg_event_trigger];
    &nbsp;	NameData	evtnamedata,
    &nbsp;				evteventdata;
    &nbsp;	ObjectAddress myself,
    --&nbsp;
    2.39.3
  3. Re: BUG #18755: Using Natts_pg_trigger rather than Natts_pg_event_trigger for event trigger

    David Rowley <dgrowleyml@gmail.com> — 2024-12-29T10:36:40Z

    On Sun, 29 Dec 2024 at 22:37, 张鑫 <zhanghien@qq.com> wrote:
    > Here is the fix for BUG #18755. I fail to upload the patch with my mailbox and I just paste the text here because it's simple enough.
    
    I've not seen this bug report. Perhaps it's caught up in moderation?
    
    > --- a/src/backend/commands/event_trigger.c
    > +++ b/src/backend/commands/event_trigger.c
    > @@ -276,8 +276,8 @@ insert_event_trigger_tuple(const char *trigname, const char *eventname, Oid evtO
    >   Relation tgrel;
    >   Oid trigoid;
    >   HeapTuple tuple;
    > - Datum values[Natts_pg_trigger];
    > - bool nulls[Natts_pg_trigger];
    > + Datum values[Natts_pg_event_trigger];
    > + bool nulls[Natts_pg_event_trigger];
    >   NameData evtnamedata,
    >   evteventdata;
    >   ObjectAddress myself,
    
    Yes, that's better. However, no particular harm done since pg_trigger
    has more columns than pg_event_trigger.  For that reason, it's
    probably fine to fix in master only. The number of columns in those
    tables in the back branches isn't going to change.
    
    I scanned around to see if there's been any similar copy/paste errors,
    but couldn't see any.
    
    I'll take care of pushing this. Thanks for the patch.
    
    David