timescaledb/tsl/test/expected/compression_segment_meta.out
Matvey Arye c4efacdc92 Fix tests and function naming after rebase
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).
2019-10-29 19:02:58 -04:00

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