mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-22 13:40:56 +08:00
When new chunks are created, the calculated chunk hypercube might collide or not align with existing chunks when partitioning has changed in one or more dimensions. In such cases, the chunk should be cut to fit the alignment criteria and any collisions should be resolved. Unfortunately, alignment and collision detection wasn't properly handled. This refactoring adds proper axis-aligned bounding box collision detection generalized to N dimensions. It also correctly handles dimension alignment.
36 lines
1.9 KiB
SQL
36 lines
1.9 KiB
SQL
\unset ECHO
|
|
\o /dev/null
|
|
\ir include/create_single_db.sql
|
|
\ir include/test_utils.sql
|
|
\o
|
|
\set ECHO errors
|
|
\set VERBOSITY default
|
|
|
|
\o /dev/null
|
|
|
|
--open
|
|
SELECT assert_equal(0::bigint, actual_range_start), assert_equal(10::bigint, actual_range_end)
|
|
FROM _timescaledb_internal.dimension_calculate_default_range_open(0,10) AS res(actual_range_start, actual_range_end);
|
|
|
|
SELECT assert_equal(0::bigint, actual_range_start), assert_equal(10::bigint, actual_range_end)
|
|
FROM _timescaledb_internal.dimension_calculate_default_range_open(9,10) AS res(actual_range_start, actual_range_end);
|
|
|
|
SELECT assert_equal(10::bigint, actual_range_start), assert_equal(20::bigint, actual_range_end)
|
|
FROM _timescaledb_internal.dimension_calculate_default_range_open(10,10) AS res(actual_range_start, actual_range_end);
|
|
|
|
SELECT assert_equal(-10::bigint, actual_range_start), assert_equal(0::bigint, actual_range_end)
|
|
FROM _timescaledb_internal.dimension_calculate_default_range_open(-1,10) AS res(actual_range_start, actual_range_end);
|
|
|
|
SELECT assert_equal(-10::bigint, actual_range_start), assert_equal(0::bigint, actual_range_end)
|
|
FROM _timescaledb_internal.dimension_calculate_default_range_open(-10,10) AS res(actual_range_start, actual_range_end);
|
|
|
|
SELECT assert_equal(-20::bigint, actual_range_start), assert_equal(-10::bigint, actual_range_end)
|
|
FROM _timescaledb_internal.dimension_calculate_default_range_open(-11,10) AS res(actual_range_start, actual_range_end);
|
|
|
|
--closed
|
|
SELECT assert_equal(0::bigint, actual_range_start), assert_equal(1073741823::bigint, actual_range_end)
|
|
FROM _timescaledb_internal.dimension_calculate_default_range_closed(0,2::smallint) AS res(actual_range_start, actual_range_end);
|
|
|
|
SELECT assert_equal(1073741823::bigint, actual_range_start), assert_equal(2147483647::bigint, actual_range_end)
|
|
FROM _timescaledb_internal.dimension_calculate_default_range_closed(1073741823,2::smallint) AS res(actual_range_start, actual_range_end);
|