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

From: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
To: Alex Vinokur <alexvn(at)users(dot)sourceforge(dot)net>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: hashlittle(), hashbig(), hashword() and endianness
Date: 2007-11-15 11:23:44
Message-ID: 473C2C40.4070509@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches

Alex Vinokur wrote:
> On Nov 15, 10:40 am, Alex Vinokur <ale(dot)(dot)(dot)(at)users(dot)sourceforge(dot)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
> ?

Why?

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

In response to

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2007-11-15 20:38:41 Re: [HACKERS] Why copy_relation_data only use wal whenWALarchivingis enabled
Previous Message Alex Vinokur 2007-11-15 10:56:21 Re: hashlittle(), hashbig(), hashword() and endianness