Обсуждение: Missing break in RelationFindReplTupleSeq

Поиск
Список
Период
Сортировка

Missing break in RelationFindReplTupleSeq

От
Konstantin Knizhnik
Дата:
Eventually we find out that logical replication in the current version 
of Postgres works significantly slower on table with replica identity 
full than old pglogical implementation.

The comment to RelationFindReplTupleSeq says:

     Note that this stops on the first matching tuple.

But actually this function continue traversal until end of the table 
even if tuple was found.
I wonder if break; should be added to the end of for loop.

-- 
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company




Re: Missing break in RelationFindReplTupleSeq

От
Alvaro Herrera
Дата:
On 2020-Jan-31, Konstantin Knizhnik wrote:

> Eventually we find out that logical replication in the current version of
> Postgres works significantly slower on table with replica identity full than
> old pglogical implementation.
> 
> The comment to RelationFindReplTupleSeq says:
> 
>     Note that this stops on the first matching tuple.
> 
> But actually this function continue traversal until end of the table even if
> tuple was found.
> I wonder if break; should be added to the end of for loop.

Wow, you're right, and the "break" is missing there.  I propose it like
this.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Вложения

Re: Missing break in RelationFindReplTupleSeq

От
Alvaro Herrera
Дата:
On 2020-Jan-31, Alvaro Herrera wrote:

> On 2020-Jan-31, Konstantin Knizhnik wrote:
> 
> > Eventually we find out that logical replication in the current version of
> > Postgres works significantly slower on table with replica identity full than
> > old pglogical implementation.
> > 
> > The comment to RelationFindReplTupleSeq says:
> > 
> >     Note that this stops on the first matching tuple.
> > 
> > But actually this function continue traversal until end of the table even if
> > tuple was found.
> > I wonder if break; should be added to the end of for loop.
> 
> Wow, you're right, and the "break" is missing there.  I propose it like
> this.

Pushed, thanks for reporting.

I had one very strange thing happen while testing this -- I put the
tests to run in all branches in parallel, and they took about 12 minutes
to finish instead of the normal 5.  I tried to repeat this result but
was unable to do so.  My only hypothesis is that my laptop entered some
kind of low-performance mode.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services