Re: hashlittle(), hashbig(), hashword() and endianness

Поиск
Список
Период
Сортировка
От Alex Vinokur
Тема Re: hashlittle(), hashbig(), hashword() and endianness
Дата
Msg-id 4a96bb23-fb44-4285-9b46-093efc483be1@w28g2000hsf.googlegroups.com
обсуждение исходный текст
Ответ на updated hash functions for postgresql v1  (Kenneth Marshall <ktm@rice.edu>)
Ответы Re: hashlittle(), hashbig(), hashword() and endianness  (Heikki Linnakangas <heikki@enterprisedb.com>)
Список pgsql-patches
On Nov 15, 10:40 am, Alex Vinokur <ale...@users.sourceforge.net>
wrote:
[snip]
> I have some question concerning Bob Jenkins' functions
> hashword(uint32_t*, size_t), hashlittle(uint8_t*, size_t) and
> hashbig(uint8_t*, size_t) in lookup3.c.
>
> Let k1 by a key: uint8_t* k1; strlen(k1)%sizeof(uint32_t) == 0.
>
> 1. hashlittle(k1) produces the same value on Little-Endian and Big-
> Endian machines.
>    Let hashlittle(k1) be == L1.
>
> 2. hashbig(k1) produces the same value on Little-Endian and Big-Endian
> machines.
>    Let hashbig(k1) be == B1.
>
>   L1 != B1
>
> 3. hashword((uint32_t*)k1) produces
>     * L1 on LittleEndian machine and
>     * B1 on BigEndian machine.
>
===================================
> ---------------------
> The question is: is it possible to change hashword() to get
>     * L1 on Little-Endian machine and
>     * B1 on Big-Endian machine
>    ?

Sorry, it should be as follows:

Is it possible to create two new hash functions on basis of
hashword():
   i)  hashword_little () that produces L1 on Little-Endian and Big-
Endian machines;
   ii) hashword_big ()    that produces B1 on Little-Endian and Big-
Endian machines
   ?

====================================

Thanks.

Alex Vinokur
     email: alex DOT vinokur AT gmail DOT com
     http://mathforum.org/library/view/10978.html
     http://sourceforge.net/users/alexvn


В списке pgsql-patches по дате отправления:

Предыдущее
От: Alex Vinokur
Дата:
Сообщение: hashlittle(), hashbig(), hashword() and endianness
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: hashlittle(), hashbig(), hashword() and endianness