Re: [HACKERS] Index created in BEFORE trigger not updated duringINSERT - Mailing list pgsql-hackers

From Andres Freund
Subject Re: [HACKERS] Index created in BEFORE trigger not updated duringINSERT
Date
Msg-id 20170524135132.v4ol2ldsxhqu5val@alap3.anarazel.de
Whole thread Raw
In response to Re: [HACKERS] Index created in BEFORE trigger not updated during INSERT  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: [HACKERS] Index created in BEFORE trigger not updated during INSERT  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On 2017-05-24 08:26:24 -0400, Robert Haas wrote:
> On Mon, May 22, 2017 at 7:05 AM, Albe Laurenz <laurenz.albe@wien.gv.at> wrote:
> > Not that it is a useful use case, but I believe that this is
> > a bug that causes index corruption:
> >
> > CREATE TABLE mytable(
> >    id integer PRIMARY KEY,
> >    id2 integer NOT NULL
> > );
> >
> > CREATE FUNCTION makeindex() RETURNS trigger
> >    LANGUAGE plpgsql AS
> > $$BEGIN
> >    CREATE INDEX ON mytable(id2);
> >    RETURN NEW;
> > END;$$;
> 
> I'm willing to bet that nobody ever thought about that case very hard.
> It seems like we should either make it work or prohibit it, but I
> can't actually see quite how to do either off-hand.

Hm, strategically sprinkled CheckTableNotInUse() might do the trick?
I've neither tried nor thought this through fully, but I can't think of
a case where pre-existing relcache references to tables are ok...

- Andres



pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: retry shm attach for windows (WAS: Re: [HACKERS] OK, so culicidaeis *still* broken)
Next
From: Nick Dro
Date:
Subject: [HACKERS] Error log for psql (uploading backup) in PostgreSQL 9.3.17