ClickHouse/tests/queries/0_stateless/02457_morton_coding.sql
2022-10-19 15:59:25 +02:00

138 lines
3.3 KiB
SQL

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
)
Engine=MergeTree()
ORDER BY n1;
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
)
Engine=MergeTree()
ORDER BY n1;
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
)
Engine=MergeTree()
ORDER BY n1;
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
)
Engine=MergeTree()
ORDER BY n1;
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;