From: | Kevin Grittner <kgrittn(at)ymail(dot)com> |
---|---|
To: | Kouhei Kaigai <kaigai(at)ak(dot)jp(dot)nec(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Bug? ExecChooseHashTableSize() got assertion failed with crazy number of rows |
Date: | 2015-08-18 20:54:03 |
Message-ID: | 1636574872.4282688.1439931243201.JavaMail.yahoo@mail.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Kouhei Kaigai <kaigai(at)ak(dot)jp(dot)nec(dot)com> wrote:
> long lbuckets;
> lbuckets = 1 << my_log2(hash_table_bytes / bucket_size);
> Assert(nbuckets > 0);
> In my case, the hash_table_bytes was 101017630802, and bucket_size was 48.
> So, my_log2(hash_table_bytes / bucket_size) = 31, then lbuckets will have
> negative number because both "1" and my_log2() is int32.
> So, Min(lbuckets, max_pointers) chooses 0x80000000, then it was set on
> the nbuckets and triggers the Assert().
> Attached patch fixes the problem.
So you changed the literal of 1 to 1U, but doesn't that just double
the threshold for failure? Wouldn't 1L (to match the definition of
lbuckets) be better?
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Marko Tiikkaja | 2015-08-18 21:36:17 | Re: Add support for RADIUS passwords longer than 16 octets |
Previous Message | Greg Stark | 2015-08-18 20:30:39 | Re: WIP: SCRAM authentication |