> Kouhei Kaigai <kai...@ak.jp.nec.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?
>
Ah, yes, it is my careless mistake.

Thanks,
--
NEC Business Creation Division / PG-Strom Project
KaiGai Kohei <kai...@ak.jp.nec.com>


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to