Thread

  1. [bug] relcache leaks in get_object_address

    Kohei KaiGai <kaigai@kaigai.gr.jp> — 2011-10-13T15:10:34Z

    I noticed a problem of get_object_address() with missing_ok = true.
    
    When we try to solve the name of nonexistent rule/trigger/constraint on
    a particular existing table, get_object_address_relobject() opens the
    relation, but address.objectId = InvalidOid shall be set.
    
    I think it should be closed if the queried object was missing, although
    existing code does not invoke get_object_address() with missing_ok = true.
    
    Thanks,
    -- 
    KaiGai Kohei <kaigai@kaigai.gr.jp>
    
    
  2. Re: [bug] relcache leaks in get_object_address

    Kohei KaiGai <kaigai@kaigai.gr.jp> — 2011-10-13T16:27:12Z

    The attached patch fixes this problem.
    Unfortunately, we have no code that invokes get_object_address()
    with missing_ok = true now, so please apply a couple of patches
    to rework DROP statement of mine.
    
    DROP TRIGGER no_such_trigger ON existing_table;
    
    shall cause a relcache reference leaks, without this patch.
    
    Thanks,
    
    2011/10/13 Kohei KaiGai <kaigai@kaigai.gr.jp>:
    > I noticed a problem of get_object_address() with missing_ok = true.
    >
    > When we try to solve the name of nonexistent rule/trigger/constraint on
    > a particular existing table, get_object_address_relobject() opens the
    > relation, but address.objectId = InvalidOid shall be set.
    >
    > I think it should be closed if the queried object was missing, although
    > existing code does not invoke get_object_address() with missing_ok = true.
    >
    > Thanks,
    > --
    > KaiGai Kohei <kaigai@kaigai.gr.jp>
    >
    
    
    
    -- 
    KaiGai Kohei <kaigai@kaigai.gr.jp>
    
  3. Re: [bug] relcache leaks in get_object_address

    Robert Haas <robertmhaas@gmail.com> — 2011-10-14T15:41:25Z

    On Thu, Oct 13, 2011 at 12:27 PM, Kohei KaiGai <kaigai@kaigai.gr.jp> wrote:
    > The attached patch fixes this problem.
    > Unfortunately, we have no code that invokes get_object_address()
    > with missing_ok = true now, so please apply a couple of patches
    > to rework DROP statement of mine.
    >
    > DROP TRIGGER no_such_trigger ON existing_table;
    >
    > shall cause a relcache reference leaks, without this patch.
    
    We could argue that that's a bug in your drop reworks rather than the
    existing code, but I'm willing to go along with this approach, so,
    committed.
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company