BUG #6307: intarray extention gin index does not work with Hot standby

Lists: pgsql-bugs
From: "Maksym Boguk" <maxim(dot)boguk(at)gmail(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #6307: intarray extention gin index does not work with Hot standby
Date: 2011-11-24 23:12:24
Message-ID: 201111242312.pAONCO9p013564@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 6307
Logged by: Maksym Boguk
Email address: maxim(dot)boguk(at)gmail(dot)com
PostgreSQL version: 9.1.1
Operating system: Linux
Description: intarray extention gin index does not work with Hot
standby
Details:

Intarray gin index:
(created as documented in:
http://www.postgresql.org/docs/9.1/interactive/intarray.html
"There is also a non-default GIN operator class gin__int_ops supporting the
same operators."
)
work incorrect on hot standby slaves.

Test case:
setup postgresql 9.1.1 hot standby replication.

Then on master DB:
postgres=# CREATE EXTENSION intarray;
CREATE EXTENSION
postgres=# create table test (id integer primary key, sections integer[]);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_pkey"
for table "test"
CREATE TABLE
postgres=# insert into test select i,array[(random()*20)::integer] as
sections from (select * from generate_series(1,10000) as t(i)) as t;
INSERT 0 10000
postgres=# analyze test;
ANALYZE
postgres=# create index test_gin_intarray on test using gin(sections
gin__int_ops);
CREATE INDEX
postgres=# UPDATE test set sections='{10,1000}'::integer[] where id=1;
UPDATE 1
postgres=# SELECT * from test where sections && '{1000}';
id | sections
----+-----------
1 | {10,1000}
(1 row)

On replica db:
postgres=# SELECT * from test where sections && '{1000}';
id | sections
----+-----------
1 | {10,1000}
(1 row)

Still ok.
Now:
On master db:

postgres=# UPDATE test set sections='{10,2000}'::integer[] where id=3;
UPDATE 1

On master db:
postgres=# SELECT * from test where sections && '{2000}';
id | sections
----+-----------
3 | {10,2000}
(1 row)

On replica (replication not lagged):
postgres=# SELECT * from test where sections && '{2000}';
id | sections
----+----------
(0 rows)

Ooops.


From: Simon Riggs <simon(at)2ndQuadrant(dot)com>
To: Maksym Boguk <maxim(dot)boguk(at)gmail(dot)com>
Cc: pgsql-bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #6307: intarray extention gin index does not work with Hot standby
Date: 2011-11-25 12:17:09
Message-ID: CA+U5nMJ9QYwEbUctrNWpFHqw1FKKSFqJr9GhbLyKudEjbuXF-A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

On Thu, Nov 24, 2011 at 11:12 PM, Maksym Boguk <maxim(dot)boguk(at)gmail(dot)com> wrote:

> postgres=# SELECT * from test where sections && '{2000}';
>  id | sections
> ----+----------
> (0 rows)
>
> Ooops.

Can you see if this is just intarray or if there are other failing cases?

It would be good to get more info on this before I start investigating. Thanks

--
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


From: Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com>
To: Simon Riggs <simon(at)2ndquadrant(dot)com>
Cc: pgsql-bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #6307: intarray extention gin index does not work with Hot standby
Date: 2011-11-25 12:46:47
Message-ID: CAK-MWwRhuTDKyxHJU0Vk1w9M+WmUQ2iDY4rdMxvZr46NBtFW9Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

On Fri, Nov 25, 2011 at 11:17 PM, Simon Riggs <simon(at)2ndquadrant(dot)com> wrote:

> On Thu, Nov 24, 2011 at 11:12 PM, Maksym Boguk <maxim(dot)boguk(at)gmail(dot)com>
> wrote:
>
> > postgres=# SELECT * from test where sections && '{2000}';
> > id | sections
> > ----+----------
> > (0 rows)
> >
> > Ooops.
>
> Can you see if this is just intarray or if there are other failing cases?
>
> It would be good to get more info on this before I start investigating.
> Thanks
>

I know GIST on intarray[] do not have that problem.
Very likely the problem is limited to intarray[] GIN indexes only
(but I going to test some other not-well known GIN indexes tomorrow).

Broken FTS indexes on Hot Standby should be known years before.
And I never heard such reports.


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com>
Cc: Simon Riggs <simon(at)2ndquadrant(dot)com>, pgsql-bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #6307: intarray extention gin index does not work with Hot standby
Date: 2011-11-25 18:33:42
Message-ID: 22029.1322246022@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com> writes:
> I know GIST on intarray[] do not have that problem.
> Very likely the problem is limited to intarray[] GIN indexes only
> (but I going to test some other not-well known GIN indexes tomorrow).

> Broken FTS indexes on Hot Standby should be known years before.

You might think that, but you'd be wrong :-(. ginRedoUpdateMetapage
is failing to restore the contents of the pending-list correctly,
which means this is broken for all types of GIN indexes. Will fix.

regards, tom lane


From: Simon Riggs <simon(at)2ndQuadrant(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com>, pgsql-bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #6307: intarray extention gin index does not work with Hot standby
Date: 2011-11-28 07:02:37
Message-ID: CA+U5nM+stFo=f_iguAKC=H0+oaTOkK1v4wGJHPop4WtFw6cUFg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

On Fri, Nov 25, 2011 at 6:33 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com> writes:
>> I know GIST on intarray[] do not have that problem.
>> Very likely the problem is limited to intarray[] GIN indexes only
>> (but I going to test some other not-well known GIN indexes tomorrow).
>
>> Broken FTS indexes on Hot Standby should be known years before.
>
> You might think that, but you'd be wrong :-(.

Yes, that did sound ominous.

> ginRedoUpdateMetapage
> is failing to restore the contents of the pending-list correctly,
> which means this is broken for all types of GIN indexes.  Will fix.

Great detective work Tom as ever, much appreciated.

--
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


From: Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com>
To: Simon Riggs <simon(at)2ndquadrant(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #6307: intarray extention gin index does not work with Hot standby
Date: 2011-11-28 21:54:30
Message-ID: CAK-MWwSiiBbmJ=+TPbJSB1X-5pR0vw49VGrJMGVBY=+8Dbf0KQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

On Mon, Nov 28, 2011 at 6:02 PM, Simon Riggs <simon(at)2ndquadrant(dot)com> wrote:

> On Fri, Nov 25, 2011 at 6:33 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> > Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com> writes:
> >> I know GIST on intarray[] do not have that problem.
> >> Very likely the problem is limited to intarray[] GIN indexes only
> >> (but I going to test some other not-well known GIN indexes tomorrow).
> >
> >> Broken FTS indexes on Hot Standby should be known years before.
> >
> > You might think that, but you'd be wrong :-(.
>
> Yes, that did sound ominous.
>
> > ginRedoUpdateMetapage
> > is failing to restore the contents of the pending-list correctly,
> > which means this is broken for all types of GIN indexes. Will fix.
>
> Great detective work Tom as ever, much appreciated.
>
>
Thank you very much.
Is that fix will be included to the next minor versions releases?
(especially into 9.1.2)?

--
Maxim Boguk
Senior Postgresql DBA.


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com>
Cc: Simon Riggs <simon(at)2ndquadrant(dot)com>, pgsql-bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #6307: intarray extention gin index does not work with Hot standby
Date: 2011-11-29 01:33:29
Message-ID: 1448.1322530409@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

Maxim Boguk <maxim(dot)boguk(at)gmail(dot)com> writes:
> Is that fix will be included to the next minor versions releases?

Yes, it's in already:
http://git.postgresql.org/gitweb/?p=postgresql.git

regards, tom lane