From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Greg Stark <stark(at)mit(dot)edu> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, "Todd A(dot) Cook" <tcook(at)blackducksoftware(dot)com>, Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>, PostgreSQL Bugs <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: BUG #14932: SELECT DISTINCT val FROM table gets stuck in an infinite loop |
Date: | 2018-01-29 22:54:42 |
Message-ID: | 14238.1517266482@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Greg Stark <stark(at)mit(dot)edu> writes:
> On 29 January 2018 at 19:11, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> One other point here is that it's not really clear to me what a randomly
>> varying IV is supposed to accomplish. Surely we're not intending that
>> it prevents somebody from crafting a data set that causes bad hash
>> performance.
> I actually think that is a real live issue that we will be forced to
> deal with one day. And I think that day is coming soon.
> It's not hard to imagine a user of a web site intentionally naming
> their objects such that they all hash to the same value. Probably most
> systems the worst case is a query that takes a few seconds or even
> tens of seconds but if you get lucky you could run a server out of
> memory.
By their very nature, hash algorithms have weak spots. Pretending that
they do not, or that you can 100% remove them, is a fool's errand.
You could always "set enable_hashjoin = off", and deal with mergejoin's
weak spots instead; but that just requires a different data set to
expose its performance shortcomings ...
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2018-01-29 23:12:58 | Re: BUG #14932: SELECT DISTINCT val FROM table gets stuck in an infinite loop |
Previous Message | Greg Stark | 2018-01-29 22:16:24 | Re: BUG #14932: SELECT DISTINCT val FROM table gets stuck in an infinite loop |