2022-09-25 17:58:00 +00:00
|
|
|
SELECT '----- START -----';
|
|
|
|
drop table if exists morton_numbers_02457;
|
|
|
|
create table morton_numbers_02457(
|
|
|
|
n1 UInt32,
|
|
|
|
n2 UInt32,
|
|
|
|
n3 UInt16,
|
|
|
|
n4 UInt16,
|
|
|
|
n5 UInt8,
|
|
|
|
n6 UInt8,
|
|
|
|
n7 UInt8,
|
|
|
|
n8 UInt8
|
|
|
|
)
|
2023-08-12 21:42:39 +00:00
|
|
|
Engine=MergeTree()
|
|
|
|
ORDER BY n1 SETTINGS index_granularity = 8192, index_granularity_bytes = '10Mi';
|
2022-09-25 17:58:00 +00:00
|
|
|
|
|
|
|
SELECT '----- CONST -----';
|
|
|
|
select mortonEncode(1,2,3,4);
|
|
|
|
select mortonDecode(4, 2149);
|
|
|
|
select mortonEncode(65534, 65533);
|
|
|
|
select mortonDecode(2, 4294967286);
|
|
|
|
select mortonEncode(4294967286);
|
|
|
|
select mortonDecode(1, 4294967286);
|
|
|
|
|
|
|
|
SELECT '----- 256, 8 -----';
|
|
|
|
insert into morton_numbers_02457
|
|
|
|
select n1.number, n2.number, n3.number, n4.number, n5.number, n6.number, n7.number, n8.number
|
|
|
|
from numbers(256-4, 4) n1
|
|
|
|
cross join numbers(256-4, 4) n2
|
|
|
|
cross join numbers(256-4, 4) n3
|
|
|
|
cross join numbers(256-4, 4) n4
|
|
|
|
cross join numbers(256-4, 4) n5
|
|
|
|
cross join numbers(256-4, 4) n6
|
|
|
|
cross join numbers(256-4, 4) n7
|
|
|
|
cross join numbers(256-4, 4) n8
|
|
|
|
;
|
|
|
|
drop table if exists morton_numbers_1_02457;
|
|
|
|
create table morton_numbers_1_02457(
|
|
|
|
n1 UInt64,
|
|
|
|
n2 UInt64,
|
|
|
|
n3 UInt64,
|
|
|
|
n4 UInt64,
|
|
|
|
n5 UInt64,
|
|
|
|
n6 UInt64,
|
|
|
|
n7 UInt64,
|
|
|
|
n8 UInt64
|
|
|
|
)
|
2023-08-12 21:42:39 +00:00
|
|
|
Engine=MergeTree()
|
|
|
|
ORDER BY n1 SETTINGS index_granularity = 8192, index_granularity_bytes = '10Mi';
|
2022-09-25 17:58:00 +00:00
|
|
|
|
|
|
|
insert into morton_numbers_1_02457
|
|
|
|
select untuple(mortonDecode(8, mortonEncode(n1, n2, n3, n4, n5, n6, n7, n8)))
|
|
|
|
from morton_numbers_02457;
|
|
|
|
|
|
|
|
(
|
|
|
|
select * from morton_numbers_02457
|
|
|
|
union distinct
|
|
|
|
select * from morton_numbers_1_02457
|
|
|
|
)
|
|
|
|
except
|
|
|
|
(
|
|
|
|
select * from morton_numbers_02457
|
|
|
|
intersect
|
|
|
|
select * from morton_numbers_1_02457
|
|
|
|
);
|
|
|
|
drop table if exists morton_numbers_1_02457;
|
|
|
|
|
|
|
|
SELECT '----- 65536, 4 -----';
|
|
|
|
insert into morton_numbers_02457
|
|
|
|
select n1.number, n2.number, n3.number, n4.number, 0, 0, 0, 0
|
|
|
|
from numbers(pow(2, 16)-8,8) n1
|
|
|
|
cross join numbers(pow(2, 16)-8, 8) n2
|
|
|
|
cross join numbers(pow(2, 16)-8, 8) n3
|
|
|
|
cross join numbers(pow(2, 16)-8, 8) n4
|
|
|
|
;
|
|
|
|
|
|
|
|
create table morton_numbers_2_02457(
|
|
|
|
n1 UInt64,
|
|
|
|
n2 UInt64,
|
|
|
|
n3 UInt64,
|
|
|
|
n4 UInt64
|
|
|
|
)
|
2023-08-12 21:42:39 +00:00
|
|
|
Engine=MergeTree()
|
|
|
|
ORDER BY n1 SETTINGS index_granularity = 8192, index_granularity_bytes = '10Mi';
|
2022-09-25 17:58:00 +00:00
|
|
|
|
|
|
|
insert into morton_numbers_2_02457
|
|
|
|
select untuple(mortonDecode(4, mortonEncode(n1, n2, n3, n4)))
|
|
|
|
from morton_numbers_02457;
|
|
|
|
|
|
|
|
(
|
|
|
|
select n1, n2, n3, n4 from morton_numbers_02457
|
|
|
|
union distinct
|
|
|
|
select n1, n2, n3, n4 from morton_numbers_2_02457
|
|
|
|
)
|
|
|
|
except
|
|
|
|
(
|
|
|
|
select n1, n2, n3, n4 from morton_numbers_02457
|
|
|
|
intersect
|
|
|
|
select n1, n2, n3, n4 from morton_numbers_2_02457
|
|
|
|
);
|
|
|
|
drop table if exists morton_numbers_2_02457;
|
|
|
|
|
|
|
|
SELECT '----- 4294967296, 2 -----';
|
|
|
|
insert into morton_numbers_02457
|
|
|
|
select n1.number, n2.number, 0, 0, 0, 0, 0, 0
|
|
|
|
from numbers(pow(2, 32)-8,8) n1
|
|
|
|
cross join numbers(pow(2, 32)-8, 8) n2
|
|
|
|
cross join numbers(pow(2, 32)-8, 8) n3
|
|
|
|
cross join numbers(pow(2, 32)-8, 8) n4
|
|
|
|
;
|
|
|
|
|
|
|
|
drop table if exists morton_numbers_3_02457;
|
|
|
|
create table morton_numbers_3_02457(
|
|
|
|
n1 UInt64,
|
|
|
|
n2 UInt64
|
|
|
|
)
|
2023-08-12 21:42:39 +00:00
|
|
|
Engine=MergeTree()
|
|
|
|
ORDER BY n1 SETTINGS index_granularity = 8192, index_granularity_bytes = '10Mi';
|
2022-09-25 17:58:00 +00:00
|
|
|
|
|
|
|
insert into morton_numbers_3_02457
|
|
|
|
select untuple(mortonDecode(2, mortonEncode(n1, n2)))
|
|
|
|
from morton_numbers_02457;
|
|
|
|
|
|
|
|
(
|
|
|
|
select n1, n2 from morton_numbers_3_02457
|
|
|
|
union distinct
|
|
|
|
select n1, n2 from morton_numbers_3_02457
|
|
|
|
)
|
|
|
|
except
|
|
|
|
(
|
|
|
|
select n1, n2 from morton_numbers_3_02457
|
|
|
|
intersect
|
|
|
|
select n1, n2 from morton_numbers_3_02457
|
|
|
|
);
|
|
|
|
drop table if exists morton_numbers_3_02457;
|
|
|
|
|
|
|
|
SELECT '----- END -----';
|
|
|
|
drop table if exists morton_numbers_02457;
|