On Wed, Mar 25, 2015 at 12:46 PM, Fabrízio de Royes Mello < fabriziome...@gmail.com> wrote: > > > On Wed, Mar 25, 2015 at 10:53 AM, Andres Freund <and...@2ndquadrant.com> wrote: > > > > > Did you check whether a similar bug was made in other places of > > 85b506bb? Could you additionally add a regression test to this end? > > Seems like something worth testing. > > > > I'm checking it and adding some regression tests. >
I didn't found any other similar bug introduced by 85b506bb. Attached the original patch provided by Michael with some regression tests. Regards, -- Fabrízio de Royes Mello Consultoria/Coaching PostgreSQL >> Timbira: http://www.timbira.com.br >> Blog: http://fabriziomello.github.io >> Linkedin: http://br.linkedin.com/in/fabriziomello >> Twitter: http://twitter.com/fabriziomello >> Github: http://github.com/fabriziomello
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index 1c1d0da..1520d32 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -1685,6 +1685,8 @@ ReindexIndex(RangeVar *indexRelation) { Oid indOid; Oid heapOid = InvalidOid; + Relation irel; + char relpersistence; /* lock level used here should match index lock reindex_index() */ indOid = RangeVarGetRelidExtended(indexRelation, AccessExclusiveLock, @@ -1692,7 +1694,11 @@ ReindexIndex(RangeVar *indexRelation) RangeVarCallbackForReindexIndex, (void *) &heapOid); - reindex_index(indOid, false, indexRelation->relpersistence); + irel = index_open(indOid, AccessExclusiveLock); + relpersistence = irel->rd_rel->relpersistence; + index_close(irel, NoLock); + + reindex_index(indOid, false, relpersistence); return indOid; } diff --git a/src/test/regress/expected/create_table.out b/src/test/regress/expected/create_table.out index 34b5fc1..3214c19 100644 --- a/src/test/regress/expected/create_table.out +++ b/src/test/regress/expected/create_table.out @@ -208,6 +208,21 @@ CREATE TABLE IF NOT EXISTS test_tsvector( ); NOTICE: relation "test_tsvector" already exists, skipping CREATE UNLOGGED TABLE unlogged1 (a int primary key); -- OK +SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged1' ORDER BY relname; + relname | relkind | relpersistence +----------------+---------+---------------- + unlogged1 | r | u + unlogged1_pkey | i | u +(2 rows) + +REINDEX INDEX unlogged1_pkey; +SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged1' ORDER BY relname; + relname | relkind | relpersistence +----------------+---------+---------------- + unlogged1 | r | u + unlogged1_pkey | i | u +(2 rows) + INSERT INTO unlogged1 VALUES (42); CREATE UNLOGGED TABLE public.unlogged2 (a int primary key); -- also OK CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int primary key); -- not OK diff --git a/src/test/regress/sql/create_table.sql b/src/test/regress/sql/create_table.sql index 08029a9..acb7eb8 100644 --- a/src/test/regress/sql/create_table.sql +++ b/src/test/regress/sql/create_table.sql @@ -246,6 +246,9 @@ CREATE TABLE IF NOT EXISTS test_tsvector( ); CREATE UNLOGGED TABLE unlogged1 (a int primary key); -- OK +SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged1' ORDER BY relname; +REINDEX INDEX unlogged1_pkey; +SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged1' ORDER BY relname; INSERT INTO unlogged1 VALUES (42); CREATE UNLOGGED TABLE public.unlogged2 (a int primary key); -- also OK CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int primary key); -- not OK
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers