Re: BUG #14932: SELECT DISTINCT val FROM table gets stuck in an infinite loop

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: "Todd A. Cook" <tcook@blackducksoftware.com>
Cc: Tomas Vondra <tomas.vondra@2ndquadrant.com>, Tom Lane <tgl@sss.pgh.pa.us>, Thomas Munro <thomas.munro@enterprisedb.com>, PostgreSQL Bugs <pgsql-bugs@postgresql.org>
Date: 2017-12-06T21:40:03Z
Lists: pgsql-bugs
On 2017-12-06 16:38:18 -0500, Todd A. Cook wrote:
> On 12/06/17 16:12, Andres Freund wrote:
> > 
> > > The datasets I shared are somewhat extreme in the sense that there are
> > > many contiguous sequences of hash values, but it only takes one such
> > > sequence with at least SH_GROW_MAX_MOVE values to trigger the issue. So
> > > the hash table may still be perfectly fine for most keys, and only
> > > slightly slower for the keys in the sequence.
> > 
> > Meh, we're talking about adversarial attacks here.
> 
> Hmmmmm...
> 
> I found this problem when I dropped 10.1 into a test environment to see
> what would happen.  There was no deliberate attempt to break anything.

Read Thomas' message at: http://archives.postgresql.org/message-id/263b03b1-3e1c-49ca-165a-8ac6751419c4%402ndquadrant.com

Greetings,

Andres Freund


Commits

  1. Improve bit perturbation in TupleHashTableHash.

  2. Prevent growth of simplehash tables when they're "too empty".

  3. Add stack-overflow guards in set-operation planning.