Skip to content

Morton (Z-order) functions in the Lindel DuckDB extension

Function category

Morton (Z-order)

2 functions

morton_decode

Scalar function Morton (Z-order)
Signature
morton_decode( encoded_value: <numeric>, num_elements: UTINYINT, return_float: BOOLEAN, return_unsigned: BOOLEAN ) → ANY[ANY]
Arguments (Positional)
Argument encoded_value Type <numeric>
5 concrete types
UBIGINTUHUGEINTUINTEGERUSMALLINTUTINYINT
Mode Positional Description
Argument num_elements Type UTINYINT Mode Positional Description
Argument return_float Type BOOLEAN Mode Positional Description
Argument return_unsigned Type BOOLEAN Mode Positional Description
Description
1 Round-trip an encoded integer back to its components (num_elements, return_float, return_unsigned)
SELECT morton_decode(morton_encode([10, 20]::UINTEGER[2]), 2, false, true) AS roundtrip;
2 Round-trip signed integer coordinates with return_unsigned = false
SELECT morton_decode(morton_encode([-10, 20]::INTEGER[2]), 2, false, false) AS roundtrip;
3 Round-trip floating-point values with return_float = true
SELECT morton_decode(morton_encode([-1.5, 2.25]::DOUBLE[2]), 2, true, false) AS roundtrip;

morton_encode

Scalar function Morton (Z-order)
Signature
morton_encode(values: ANY[ANY]) → ANY
Arguments (Positional)
Argument values Type ANY[ANY] Mode Positional Description
Description
1 Order points by the Morton (Z-order) curve
SELECT x, y, morton_encode([x, y]::UINTEGER[2]) AS morton
FROM (VALUES (1, 1), (1, 2), (2, 1), (6, 7), (7, 6)) AS t(x, y)
ORDER BY morton;