mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-25 11:10:49 +00:00
Fix generateUUIDv4
This commit is contained in:
parent
617a58b857
commit
a9a885bc43
@ -32,21 +32,22 @@ public:
|
||||
|
||||
ColumnPtr executeImpl(const ColumnsWithTypeAndName &, const DataTypePtr &, size_t input_rows_count) const override
|
||||
{
|
||||
auto col_res = ColumnVector<UInt128>::create();
|
||||
typename ColumnVector<UInt128>::Container & vec_to = col_res->getData();
|
||||
auto col_res = ColumnVector<UUID>::create();
|
||||
typename ColumnVector<UUID>::Container & vec_to = col_res->getData();
|
||||
|
||||
size_t size = input_rows_count;
|
||||
vec_to.resize(size);
|
||||
|
||||
/// RandImpl is target-dependent and is not the same in different TargetSpecific namespaces.
|
||||
RandImpl::execute(reinterpret_cast<char *>(vec_to.data()), vec_to.size() * sizeof(UInt128));
|
||||
RandImpl::execute(reinterpret_cast<char *>(vec_to.data()), vec_to.size() * sizeof(UUID));
|
||||
|
||||
for (UInt128 & uuid: vec_to)
|
||||
for (UUID & uuid : vec_to)
|
||||
{
|
||||
/** https://tools.ietf.org/html/rfc4122#section-4.4
|
||||
*/
|
||||
uuid.items[0] = (uuid.items[0] & 0xffffffffffff0fffull) | 0x0000000000004000ull;
|
||||
uuid.items[1] = (uuid.items[1] & 0x3fffffffffffffffull) | 0x8000000000000000ull;
|
||||
/// https://tools.ietf.org/html/rfc4122#section-4.4
|
||||
|
||||
UInt128 & impl = uuid.toUnderType();
|
||||
impl.items[0] = (impl.items[0] & 0xffffffffffff0fffull) | 0x0000000000004000ull;
|
||||
impl.items[1] = (impl.items[1] & 0x3fffffffffffffffull) | 0x8000000000000000ull;
|
||||
}
|
||||
|
||||
return col_res;
|
||||
|
Loading…
Reference in New Issue
Block a user