mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 02:23:49 +08:00
This function needs chunk ids as input. Since chunk ids are TimescaleDB internal metadata it feels more natural to make this function internal.
48 lines
2.3 KiB
SQL
48 lines
2.3 KiB
SQL
-- This file and its contents are licensed under the Apache License 2.0.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-APACHE for a copy of the license.
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.dimension_calculate_default_range_open(
|
|
dimension_value BIGINT,
|
|
interval_length BIGINT,
|
|
OUT range_start BIGINT,
|
|
OUT range_end BIGINT)
|
|
AS '@MODULE_PATHNAME@', 'ts_dimension_calculate_open_range_default' LANGUAGE C STABLE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.dimension_calculate_default_range_closed(
|
|
dimension_value BIGINT,
|
|
num_slices SMALLINT,
|
|
OUT range_start BIGINT,
|
|
OUT range_end BIGINT)
|
|
AS '@MODULE_PATHNAME@', 'ts_dimension_calculate_closed_range_default' LANGUAGE C STABLE;
|
|
|
|
-- Built-in function for calculating the next chunk interval when
|
|
-- using adaptive chunking. The function can be replaced by a
|
|
-- user-defined function with the same signature.
|
|
--
|
|
-- The parameters passed to the function are as follows:
|
|
--
|
|
-- dimension_id: the ID of the dimension to calculate the interval for
|
|
-- dimension_coord: the coordinate / point on the dimensional axis
|
|
-- where the tuple that triggered this chunk creation falls.
|
|
-- chunk_target_size: the target size in bytes that the chunk should have.
|
|
--
|
|
-- The function should return the new interval in dimension-specific
|
|
-- time (ususally microseconds).
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.calculate_chunk_interval(
|
|
dimension_id INTEGER,
|
|
dimension_coord BIGINT,
|
|
chunk_target_size BIGINT
|
|
) RETURNS BIGINT AS '@MODULE_PATHNAME@', 'ts_calculate_chunk_interval' LANGUAGE C;
|
|
|
|
-- Function for explicit chunk exclusion. Supply a record and an array
|
|
-- of chunk ids as input.
|
|
-- Intended to be used in WHERE clause.
|
|
-- An example: SELECT * FROM hypertable WHERE _timescaledb_internal.chunks_in(hypertable, ARRAY[1,2]);
|
|
--
|
|
-- Use it with care as this function directly affects what chunks are being scanned for data.
|
|
-- Although this function is immutable (always returns true), we declare it here as volatile
|
|
-- so that the PostgreSQL optimizer does not try to evaluate/reduce it in the planner phase
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.chunks_in(record RECORD, chunks INTEGER[]) RETURNS BOOL
|
|
AS '@MODULE_PATHNAME@', 'ts_chunks_in' LANGUAGE C VOLATILE STRICT;
|