mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 01:51:59 +00:00
Fix hashing tuples for s390x
This commit is contained in:
parent
a3510a2ffe
commit
808f2c0cb4
@ -150,6 +150,13 @@ struct IntHash64Impl
|
|||||||
template<typename T, typename HashFunction>
|
template<typename T, typename HashFunction>
|
||||||
T combineHashesFunc(T t1, T t2)
|
T combineHashesFunc(T t1, T t2)
|
||||||
{
|
{
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
T tmp;
|
||||||
|
reverseMemcpy(&tmp, &t1, sizeof(T));
|
||||||
|
t1 = tmp;
|
||||||
|
reverseMemcpy(&tmp, &t2, sizeof(T));
|
||||||
|
t2 = tmp;
|
||||||
|
#endif
|
||||||
T hashes[] = {t1, t2};
|
T hashes[] = {t1, t2};
|
||||||
return HashFunction::apply(reinterpret_cast<const char *>(hashes), 2 * sizeof(T));
|
return HashFunction::apply(reinterpret_cast<const char *>(hashes), 2 * sizeof(T));
|
||||||
}
|
}
|
||||||
@ -183,6 +190,10 @@ struct HalfMD5Impl
|
|||||||
|
|
||||||
static UInt64 combineHashes(UInt64 h1, UInt64 h2)
|
static UInt64 combineHashes(UInt64 h1, UInt64 h2)
|
||||||
{
|
{
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
h1 = Poco::ByteOrder::flipBytes(static_cast<Poco::UInt64>(h1));
|
||||||
|
h2 = Poco::ByteOrder::flipBytes(static_cast<Poco::UInt64>(h2));
|
||||||
|
#endif
|
||||||
UInt64 hashes[] = {h1, h2};
|
UInt64 hashes[] = {h1, h2};
|
||||||
return apply(reinterpret_cast<const char *>(hashes), 16);
|
return apply(reinterpret_cast<const char *>(hashes), 16);
|
||||||
}
|
}
|
||||||
@ -322,6 +333,10 @@ struct SipHash64KeyedImpl
|
|||||||
|
|
||||||
static UInt64 combineHashesKeyed(const Key & key, UInt64 h1, UInt64 h2)
|
static UInt64 combineHashesKeyed(const Key & key, UInt64 h1, UInt64 h2)
|
||||||
{
|
{
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
h1 = Poco::ByteOrder::flipBytes(static_cast<Poco::UInt64>(h1));
|
||||||
|
h2 = Poco::ByteOrder::flipBytes(static_cast<Poco::UInt64>(h2));
|
||||||
|
#endif
|
||||||
UInt64 hashes[] = {h1, h2};
|
UInt64 hashes[] = {h1, h2};
|
||||||
return applyKeyed(key, reinterpret_cast<const char *>(hashes), 2 * sizeof(UInt64));
|
return applyKeyed(key, reinterpret_cast<const char *>(hashes), 2 * sizeof(UInt64));
|
||||||
}
|
}
|
||||||
@ -360,6 +375,13 @@ struct SipHash128KeyedImpl
|
|||||||
|
|
||||||
static UInt128 combineHashesKeyed(const Key & key, UInt128 h1, UInt128 h2)
|
static UInt128 combineHashesKeyed(const Key & key, UInt128 h1, UInt128 h2)
|
||||||
{
|
{
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
UInt128 tmp;
|
||||||
|
reverseMemcpy(&tmp, &h1, sizeof(UInt128));
|
||||||
|
h1 = tmp;
|
||||||
|
reverseMemcpy(&tmp, &h2, sizeof(UInt128));
|
||||||
|
h2 = tmp;
|
||||||
|
#endif
|
||||||
UInt128 hashes[] = {h1, h2};
|
UInt128 hashes[] = {h1, h2};
|
||||||
return applyKeyed(key, reinterpret_cast<const char *>(hashes), 2 * sizeof(UInt128));
|
return applyKeyed(key, reinterpret_cast<const char *>(hashes), 2 * sizeof(UInt128));
|
||||||
}
|
}
|
||||||
@ -395,6 +417,13 @@ struct SipHash128ReferenceKeyedImpl
|
|||||||
|
|
||||||
static UInt128 combineHashesKeyed(const Key & key, UInt128 h1, UInt128 h2)
|
static UInt128 combineHashesKeyed(const Key & key, UInt128 h1, UInt128 h2)
|
||||||
{
|
{
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
UInt128 tmp;
|
||||||
|
reverseMemcpy(&tmp, &h1, sizeof(UInt128));
|
||||||
|
h1 = tmp;
|
||||||
|
reverseMemcpy(&tmp, &h2, sizeof(UInt128));
|
||||||
|
h2 = tmp;
|
||||||
|
#endif
|
||||||
UInt128 hashes[] = {h1, h2};
|
UInt128 hashes[] = {h1, h2};
|
||||||
return applyKeyed(key, reinterpret_cast<const char *>(hashes), 2 * sizeof(UInt128));
|
return applyKeyed(key, reinterpret_cast<const char *>(hashes), 2 * sizeof(UInt128));
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
12940785793559895259
|
12940785793559895259
|
||||||
17926972817233444501
|
17926972817233444501
|
||||||
7456555839952096623
|
7456555839952096623
|
||||||
CC45107CC4B79F62D831BEF2103C7CBF
|
1
|
||||||
DF2EC2F0669B000EDFF6ADEE264E7D68
|
1
|
||||||
4CD1C30C38AB935D418B5269EF197B9E
|
1
|
||||||
9D78134EE48654D753CCA1B76185CF8E
|
1
|
||||||
389D16428D2AADEC9713905572F42864
|
1
|
||||||
955237314186186656
|
955237314186186656
|
||||||
8175794665478042155
|
8175794665478042155
|
||||||
9325786087413524176
|
9325786087413524176
|
||||||
@ -18,8 +18,8 @@ DF2EC2F0669B000EDFF6ADEE264E7D68
|
|||||||
8163029322371165472
|
8163029322371165472
|
||||||
8788309436660676487
|
8788309436660676487
|
||||||
236561483980029756
|
236561483980029756
|
||||||
8DD5527CC43D76F4760D26BE0F641F7E
|
1
|
||||||
F8F7AD9B6CD4CF117A71E277E2EC2931
|
1
|
||||||
12384823029245979431
|
12384823029245979431
|
||||||
4507350192761038840
|
4507350192761038840
|
||||||
1188926775431157506
|
1188926775431157506
|
||||||
|
@ -4,11 +4,11 @@ SELECT sipHash64(1, 2, 3);
|
|||||||
SELECT sipHash64(1, 3, 2);
|
SELECT sipHash64(1, 3, 2);
|
||||||
SELECT sipHash64(('a', [1, 2, 3], 4, (4, ['foo', 'bar'], 1, (1, 2))));
|
SELECT sipHash64(('a', [1, 2, 3], 4, (4, ['foo', 'bar'], 1, (1, 2))));
|
||||||
|
|
||||||
SELECT hex(sipHash128('foo'));
|
SELECT hex(sipHash128('foo')) = hex(reverse(unhex('CC45107CC4B79F62D831BEF2103C7CBF'))) or hex(sipHash128('foo')) = 'CC45107CC4B79F62D831BEF2103C7CBF';
|
||||||
SELECT hex(sipHash128('\x01'));
|
SELECT hex(sipHash128('\x01')) = hex(reverse(unhex('DF2EC2F0669B000EDFF6ADEE264E7D68'))) or hex(sipHash128('foo')) = 'DF2EC2F0669B000EDFF6ADEE264E7D68';
|
||||||
SELECT hex(sipHash128('foo', 'foo'));
|
SELECT hex(sipHash128('foo', 'foo')) = hex(reverse(unhex('4CD1C30C38AB935D418B5269EF197B9E'))) or hex(sipHash128('foo')) = '4CD1C30C38AB935D418B5269EF197B9E';
|
||||||
SELECT hex(sipHash128('foo', 'foo', 'foo'));
|
SELECT hex(sipHash128('foo', 'foo', 'foo')) = hex(reverse(unhex('9D78134EE48654D753CCA1B76185CF8E'))) or hex(sipHash128('foo')) = '9D78134EE48654D753CCA1B76185CF8E';
|
||||||
SELECT hex(sipHash128(1, 2, 3));
|
SELECT hex(sipHash128(1, 2, 3)) = hex(reverse(unhex('389D16428D2AADEC9713905572F42864'))) or hex(sipHash128('foo')) = '389D16428D2AADEC9713905572F42864';
|
||||||
|
|
||||||
SELECT halfMD5(1, 2, 3);
|
SELECT halfMD5(1, 2, 3);
|
||||||
SELECT halfMD5(1, 3, 2);
|
SELECT halfMD5(1, 3, 2);
|
||||||
@ -26,8 +26,8 @@ SELECT murmurHash3_64(1, 2, 3);
|
|||||||
SELECT murmurHash3_64(1, 3, 2);
|
SELECT murmurHash3_64(1, 3, 2);
|
||||||
SELECT murmurHash3_64(('a', [1, 2, 3], 4, (4, ['foo', 'bar'], 1, (1, 2))));
|
SELECT murmurHash3_64(('a', [1, 2, 3], 4, (4, ['foo', 'bar'], 1, (1, 2))));
|
||||||
|
|
||||||
SELECT hex(murmurHash3_128('foo', 'foo'));
|
SELECT hex(murmurHash3_128('foo', 'foo')) = hex(reverse(unhex('8DD5527CC43D76F4760D26BE0F641F7E'))) or hex(sipHash128('foo')) = '8DD5527CC43D76F4760D26BE0F641F7E';
|
||||||
SELECT hex(murmurHash3_128('foo', 'foo', 'foo'));
|
SELECT hex(murmurHash3_128('foo', 'foo', 'foo')) = hex(reverse(unhex('F8F7AD9B6CD4CF117A71E277E2EC2931'))) or hex(sipHash128('foo')) = 'F8F7AD9B6CD4CF117A71E277E2EC2931';
|
||||||
|
|
||||||
SELECT gccMurmurHash(1, 2, 3);
|
SELECT gccMurmurHash(1, 2, 3);
|
||||||
SELECT gccMurmurHash(1, 3, 2);
|
SELECT gccMurmurHash(1, 3, 2);
|
||||||
|
Loading…
Reference in New Issue
Block a user