Thread: Missing break in RelationFindReplTupleSeq

Missing break in RelationFindReplTupleSeq

From
Konstantin Knizhnik
Date:
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

From
Alvaro Herrera
Date:
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

Attachment

Re: Missing break in RelationFindReplTupleSeq

From
Alvaro Herrera
Date:
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