timescaledb/tsl/test/sql/cagg_tableam.sql
Sven Klemm 5c22ef3da2 Rename continuous aggregate tests
Change the prefix for continuous aggregate tests from
continuous_aggs_ to cagg_. This is similar to commit 6a8c2b66
which did this adjustment for isolation tests because we were
running into length limitations for the spec name. This patch
adjusts the remaining tests to be consistent with the naming
used in isolation tests.
2022-01-24 14:12:56 +01:00

67 lines
2.5 KiB
PL/PgSQL

-- 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 ACCESS METHOD heap2 TYPE TABLE HANDLER heap_tableam_handler;
SET ROLE :ROLE_DEFAULT_PERM_USER;
CREATE VIEW cagg_info AS
WITH
caggs AS (
SELECT format('%I.%I', user_view_schema, user_view_name)::regclass AS user_view,
format('%I.%I', ht.schema_name, ht.table_name)::regclass AS mat_relid
FROM _timescaledb_catalog.hypertable ht,
_timescaledb_catalog.continuous_agg cagg
WHERE ht.id = cagg.mat_hypertable_id
)
SELECT user_view,
relname AS mat_table,
(SELECT spcname FROM pg_tablespace WHERE oid = reltablespace) AS tablespace
FROM pg_class JOIN caggs ON pg_class.oid = caggs.mat_relid;
CREATE TABLE whatever(time BIGINT NOT NULL, data INTEGER);
SELECT hypertable_id AS whatever_nid
FROM create_hypertable('whatever', 'time', chunk_time_interval => 10)
\gset
CREATE OR REPLACE FUNCTION integer_now_test() RETURNS bigint
LANGUAGE SQL STABLE AS $$
SELECT coalesce(max(time), bigint '0') FROM whatever
$$;
SELECT set_integer_now_func('whatever', 'integer_now_test');
INSERT INTO whatever SELECT i, i FROM generate_series(0, 29) AS i;
-- Checking that the access method for the materialized hypertable is
-- set to the correct access method.
CREATE MATERIALIZED VIEW tableam_view USING heap2
WITH (timescaledb.continuous, timescaledb.materialized_only=true) AS
SELECT time_bucket('5', time), COUNT(data)
FROM whatever GROUP BY 1 WITH NO DATA;
CREATE MATERIALIZED VIEW notableam_view
WITH (timescaledb.continuous, timescaledb.materialized_only=true) AS
SELECT time_bucket('5', time), COUNT(data)
FROM whatever GROUP BY 1 WITH NO DATA;
SELECT user_view, mat_table, amname
FROM cagg_info,
LATERAL (SELECT relam FROM pg_class WHERE relname = mat_table) AS cls,
LATERAL (SELECT amname FROM pg_am WHERE oid = relam) AS am
WHERE user_view::text IN ('tableam_view', 'notableam_view');
-- Check that the view with the other access method actually works.
SELECT * FROM notableam_view ORDER BY 1;
SELECT * FROM tableam_view ORDER BY 1;
CALL refresh_continuous_aggregate('notableam_view', NULL, NULL);
CALL refresh_continuous_aggregate('tableam_view', NULL, NULL);
SELECT * FROM notableam_view ORDER BY 1;
SELECT * FROM tableam_view ORDER BY 1;
DROP MATERIALIZED VIEW notableam_view;
DROP MATERIALIZED VIEW tableam_view;