mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-17 02:53:51 +08:00
Small fixup after rebase on the master branch. Fixes test output and function naming (even test functions should have the ts_ not the tsl_ prefix for exported C functions).
225 lines
7.2 KiB
Plaintext
225 lines
7.2 KiB
Plaintext
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\c :TEST_DBNAME :ROLE_SUPERUSER
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.ts_segment_meta_min_max_append(internal, ANYELEMENT)
|
|
RETURNS internal
|
|
AS :TSL_MODULE_PATHNAME, 'ts_segment_meta_min_max_append'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.ts_segment_meta_min_max_finish_max(internal, ANYELEMENT)
|
|
RETURNS anyelement
|
|
AS :TSL_MODULE_PATHNAME, 'ts_segment_meta_min_max_finish_max'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.ts_segment_meta_min_max_finish_min(internal, ANYELEMENT)
|
|
RETURNS anyelement
|
|
AS :TSL_MODULE_PATHNAME, 'ts_segment_meta_min_max_finish_min'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
CREATE AGGREGATE _timescaledb_internal.segment_meta_min_max_agg_min(ANYELEMENT) (
|
|
STYPE = internal,
|
|
SFUNC = _timescaledb_internal.ts_segment_meta_min_max_append,
|
|
FINALFUNC = _timescaledb_internal.ts_segment_meta_min_max_finish_min,
|
|
FINALFUNC_EXTRA
|
|
);
|
|
CREATE AGGREGATE _timescaledb_internal.segment_meta_min_max_agg_max(ANYELEMENT) (
|
|
STYPE = internal,
|
|
SFUNC = _timescaledb_internal.ts_segment_meta_min_max_append,
|
|
FINALFUNC = _timescaledb_internal.ts_segment_meta_min_max_finish_max,
|
|
FINALFUNC_EXTRA
|
|
);
|
|
\ir include/rand_generator.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
--------------------------
|
|
-- cheap rand generator --
|
|
--------------------------
|
|
create table rand_minstd_state(i bigint);
|
|
create function rand_minstd_advance(bigint) returns bigint
|
|
language sql immutable as
|
|
$$
|
|
select (16807 * $1) % 2147483647
|
|
$$;
|
|
create function gen_rand_minstd() returns bigint
|
|
language sql security definer as
|
|
$$
|
|
update rand_minstd_state set i = rand_minstd_advance(i) returning i
|
|
$$;
|
|
-- seed the random num generator
|
|
insert into rand_minstd_state values (321);
|
|
\c :TEST_DBNAME :ROLE_DEFAULT_PERM_USER
|
|
CREATE TABLE metric (i int);
|
|
insert into metric select i from generate_series(1, 10) i;
|
|
\set TYPE int
|
|
\set TABLE metric
|
|
\ir include/compression_test_segment_meta.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\set ECHO errors
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
----NULL tests
|
|
--First
|
|
truncate metric;
|
|
insert into metric select NULLIF(i,1) from generate_series(1, 10) i;
|
|
\ir include/compression_test_segment_meta.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\set ECHO errors
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
--Last
|
|
truncate metric;
|
|
insert into metric select NULLIF(i,10) from generate_series(1, 10) i;
|
|
\ir include/compression_test_segment_meta.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\set ECHO errors
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
--Middle
|
|
truncate metric;
|
|
insert into metric select NULLIF(i,5) from generate_series(1, 10) i;
|
|
\ir include/compression_test_segment_meta.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\set ECHO errors
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
--All NULLS should return null object
|
|
truncate metric;
|
|
insert into metric select NULL from generate_series(1, 10) i;
|
|
SELECT
|
|
_timescaledb_internal.segment_meta_min_max_agg_min(i) is null,
|
|
_timescaledb_internal.segment_meta_min_max_agg_max(i) is null
|
|
FROM metric;
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
--
|
|
--type tests
|
|
--
|
|
--untoasted text
|
|
CREATE TABLE base_texts AS SELECT
|
|
repeat(item::text, 1) as i
|
|
FROM
|
|
(SELECT sub.item from
|
|
(SELECT generate_series(1, 10) item) as sub
|
|
ORDER BY gen_rand_minstd()
|
|
) sub;
|
|
\set TYPE text
|
|
\set TABLE base_texts
|
|
\ir include/compression_test_segment_meta.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\set ECHO errors
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
--toasted text
|
|
DROP TABLE base_texts;
|
|
CREATE TABLE base_texts AS SELECT
|
|
repeat(item::text, 100000) as i
|
|
FROM
|
|
(SELECT sub.item from
|
|
(SELECT generate_series(1, 10) item) as sub
|
|
ORDER BY gen_rand_minstd()
|
|
) sub;
|
|
--make sure it's toasted
|
|
SELECT pg_total_relation_size(reltoastrelid)
|
|
FROM pg_class c
|
|
WHERE relname = 'base_texts';
|
|
pg_total_relation_size
|
|
------------------------
|
|
24576
|
|
(1 row)
|
|
|
|
\ir include/compression_test_segment_meta.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\set ECHO errors
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
--name is a fixed-length pass by reference type
|
|
CREATE TABLE base_name AS SELECT
|
|
item::name as i
|
|
FROM
|
|
(SELECT sub.item from
|
|
(SELECT generate_series(1, 10) item) as sub
|
|
ORDER BY gen_rand_minstd()
|
|
) sub;
|
|
\set TYPE name
|
|
\set TABLE base_name
|
|
\ir include/compression_test_segment_meta.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\set ECHO errors
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
--array
|
|
CREATE TABLE text_array AS SELECT
|
|
array[item::text, 'abab'] as i
|
|
FROM
|
|
(SELECT sub.item from
|
|
(SELECT generate_series(1, 10) item) as sub
|
|
ORDER BY gen_rand_minstd()
|
|
) sub;
|
|
\set TYPE text[]
|
|
\set TABLE text_array
|
|
\ir include/compression_test_segment_meta.sql
|
|
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\set ECHO errors
|
|
?column? | ?column?
|
|
----------+----------
|
|
t | t
|
|
(1 row)
|
|
|
|
--Points doesn't have an ordering so make sure it errors
|
|
CREATE TABLE points AS SELECT
|
|
point '(0,1)' as i
|
|
FROM
|
|
(SELECT sub.item from
|
|
(SELECT generate_series(1, 10) item) as sub
|
|
ORDER BY gen_rand_minstd()
|
|
) sub;
|
|
\set ON_ERROR_STOP 0
|
|
SELECT
|
|
_timescaledb_internal.segment_meta_min_max_agg_max(i)
|
|
FROM points;
|
|
ERROR: could not identify an less-than operator for type point
|
|
SELECT
|
|
_timescaledb_internal.segment_meta_min_max_agg_min(i)
|
|
FROM points;
|
|
ERROR: could not identify an less-than operator for type point
|
|
\set ON_ERROR_STOP 1
|