mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-15 01:53:41 +08:00
The joins could be between a continuous aggregate and hypertable, continuous aggregate and a regular Postgres table, and continuous aggregate and a regular Postgres view.
289 lines
8.9 KiB
SQL
289 lines
8.9 KiB
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.
|
|
|
|
-- Global test variables
|
|
\set IS_DISTRIBUTED FALSE
|
|
\set IS_TIME_DIMENSION_WITH_TIMEZONE_1ST FALSE
|
|
\set IS_TIME_DIMENSION_WITH_TIMEZONE_2TH FALSE
|
|
\set IS_JOIN TRUE
|
|
-- ########################################################
|
|
-- ## INTEGER data type tests
|
|
-- ########################################################
|
|
|
|
-- Current test variables
|
|
\set IS_TIME_DIMENSION FALSE
|
|
\set TIME_DIMENSION_DATATYPE INTEGER
|
|
\set CAGG_NAME_1ST_LEVEL conditions_summary_1_1
|
|
\set CAGG_NAME_2TH_LEVEL conditions_summary_2_5
|
|
\set CAGG_NAME_3TH_LEVEL conditions_summary_3_10
|
|
|
|
--
|
|
-- Run common tests for INTEGER
|
|
--
|
|
\set BUCKET_WIDTH_1ST 'INTEGER \'1\''
|
|
\set BUCKET_WIDTH_2TH 'INTEGER \'5\''
|
|
\set BUCKET_WIDTH_3TH 'INTEGER \'10\''
|
|
|
|
-- Different order of time dimension in raw ht
|
|
\set IS_DEFAULT_COLUMN_ORDER FALSE
|
|
\ir include/cagg_on_cagg_setup.sql
|
|
\ir include/cagg_on_cagg_common.sql
|
|
|
|
-- Default tests
|
|
\set ON_ERROR_STOP 0
|
|
\set IS_DEFAULT_COLUMN_ORDER TRUE
|
|
\ir include/cagg_on_cagg_setup.sql
|
|
\ir include/cagg_on_cagg_common.sql
|
|
|
|
--
|
|
-- Validation test for non-multiple bucket sizes
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTEGER \'2\''
|
|
\set BUCKET_WIDTH_2TH 'INTEGER \'5\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because non-multiple bucket sizes'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validation test for equal bucket sizes
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTEGER \'2\''
|
|
\set BUCKET_WIDTH_2TH 'INTEGER \'2\''
|
|
\set WARNING_MESSAGE 'SHOULD WORK because new bucket should be greater than previous'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validation test for bucket size less than source
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTEGER \'4\''
|
|
\set BUCKET_WIDTH_2TH 'INTEGER \'2\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because new bucket should be greater than previous'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
-- ########################################################
|
|
-- ## TIMESTAMP data type tests
|
|
-- ########################################################
|
|
|
|
-- Current test variables
|
|
\set IS_TIME_DIMENSION TRUE
|
|
\set TIME_DIMENSION_DATATYPE TIMESTAMP
|
|
\set CAGG_NAME_1ST_LEVEL conditions_summary_1_hourly
|
|
\set CAGG_NAME_2TH_LEVEL conditions_summary_2_daily
|
|
\set CAGG_NAME_3TH_LEVEL conditions_summary_3_weekly
|
|
\set IS_JOIN TRUE
|
|
SET timezone TO 'UTC';
|
|
|
|
--
|
|
-- Run common tests for TIMESTAMP
|
|
--
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 hour\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 day\''
|
|
\set BUCKET_WIDTH_3TH 'INTERVAL \'1 week\''
|
|
|
|
-- Different order of time dimension in raw ht
|
|
\set IS_DEFAULT_COLUMN_ORDER FALSE
|
|
\ir include/cagg_on_cagg_setup.sql
|
|
\ir include/cagg_on_cagg_common.sql
|
|
|
|
-- Default tests
|
|
\set IS_DEFAULT_COLUMN_ORDER TRUE
|
|
\ir include/cagg_on_cagg_setup.sql
|
|
\ir include/cagg_on_cagg_common.sql
|
|
|
|
--
|
|
-- Validation test for variable bucket on top of fixed bucket
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 month\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'60 days\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because is not allowed variable-size bucket on top of fixed-size bucket'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validation test for non-multiple bucket sizes
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'2 hours\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'3 hours\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because non-multiple bucket sizes'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validation test for equal bucket sizes
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 hour\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 hour\''
|
|
\set WARNING_MESSAGE 'SHOULD WORK because new bucket should be greater than previous'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validation test for bucket size less than source
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'2 hours\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 hour\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because new bucket should be greater than previous'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
-- ########################################################
|
|
-- ## TIMESTAMPTZ data type tests
|
|
-- ########################################################
|
|
|
|
-- Current test variables
|
|
\set IS_TIME_DIMENSION TRUE
|
|
\set TIME_DIMENSION_DATATYPE TIMESTAMPTZ
|
|
\set CAGG_NAME_1ST_LEVEL conditions_summary_1_hourly
|
|
\set CAGG_NAME_2TH_LEVEL conditions_summary_2_daily
|
|
\set CAGG_NAME_3TH_LEVEL conditions_summary_3_weekly
|
|
|
|
SET timezone TO 'UTC';
|
|
|
|
--
|
|
-- Run common tests for TIMESTAMPTZ
|
|
--
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 hour\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 day\''
|
|
\set BUCKET_WIDTH_3TH 'INTERVAL \'1 week\''
|
|
|
|
-- Different order of time dimension in raw ht
|
|
\set ON_ERROR_STOP 0
|
|
\set IS_DEFAULT_COLUMN_ORDER FALSE
|
|
\ir include/cagg_on_cagg_setup.sql
|
|
\ir include/cagg_on_cagg_common.sql
|
|
|
|
-- Default tests
|
|
\set ON_ERROR_STOP 0
|
|
\set IS_DEFAULT_COLUMN_ORDER TRUE
|
|
\ir include/cagg_on_cagg_setup.sql
|
|
\ir include/cagg_on_cagg_common.sql
|
|
|
|
--
|
|
-- Validation test for variable bucket on top of fixed bucket
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 month\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'60 days\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because is not allowed variable-size bucket on top of fixed-size bucket'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validation test for non-multiple bucket sizes
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'2 hours\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'3 hours\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because non-multiple bucket sizes'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validation test for equal bucket sizes
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 hour\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 hour\''
|
|
\set WARNING_MESSAGE 'SHOULD WORK because new bucket should be greater than previous'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validation test for bucket size less than source
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'2 hours\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 hour\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because new bucket should be greater than previous'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Validations using time bucket with timezone (ref issue #5126)
|
|
--
|
|
\set ON_ERROR_STOP 0
|
|
\set TIME_DIMENSION_DATATYPE TIMESTAMPTZ
|
|
\set IS_TIME_DIMENSION_WITH_TIMEZONE_1ST TRUE
|
|
\set IS_TIME_DIMENSION_WITH_TIMEZONE_2TH TRUE
|
|
\set CAGG_NAME_1ST_LEVEL conditions_summary_1_5m
|
|
\set CAGG_NAME_2TH_LEVEL conditions_summary_2_1h
|
|
\set BUCKET_TZNAME_1ST 'US/Pacific'
|
|
\set BUCKET_TZNAME_2TH 'US/Pacific'
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'5 minutes\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 hour\''
|
|
\set WARNING_MESSAGE '-- SHOULD WORK'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'5 minutes\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'16 minutes\''
|
|
\set WARNING_MESSAGE '-- SHOULD ERROR because non-multiple bucket sizes'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Variable bucket size with the same timezones
|
|
--
|
|
\set BUCKET_TZNAME_1ST 'UTC'
|
|
\set BUCKET_TZNAME_2TH 'UTC'
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 day\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 month\''
|
|
\set WARNING_MESSAGE '-- SHOULD WORK'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- Variable bucket size with different timezones
|
|
--
|
|
\set BUCKET_TZNAME_1ST 'US/Pacific'
|
|
\set BUCKET_TZNAME_2TH 'UTC'
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 day\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 month\''
|
|
\set WARNING_MESSAGE '-- SHOULD WORK'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- TZ bucket on top of non-TZ bucket
|
|
--
|
|
\set IS_TIME_DIMENSION_WITH_TIMEZONE_1ST FALSE
|
|
\set IS_TIME_DIMENSION_WITH_TIMEZONE_2TH TRUE
|
|
\set BUCKET_TZNAME_2TH 'UTC'
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 day\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 month\''
|
|
\set WARNING_MESSAGE '-- SHOULD WORK'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
--
|
|
-- non-TZ bucket on top of TZ bucket
|
|
--
|
|
\set IS_TIME_DIMENSION_WITH_TIMEZONE_1ST TRUE
|
|
\set IS_TIME_DIMENSION_WITH_TIMEZONE_2TH FALSE
|
|
\set BUCKET_TZNAME_1ST 'UTC'
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 day\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 month\''
|
|
\set WARNING_MESSAGE '-- SHOULD WORK'
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
-- test some intuitive intervals that should work but
|
|
-- were not working due to unix epochs
|
|
-- validation test for 1 year on top of one day
|
|
-- validation test for 1 year on top of 1 month
|
|
-- validation test for 1 year on top of 1 week
|
|
|
|
-- bug report 5231
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 day\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 year\''
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 day\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'3 month\''
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 month\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 year\''
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 week\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 year\''
|
|
\ir include/cagg_on_cagg_validations.sql
|
|
|
|
\set BUCKET_WIDTH_1ST 'INTERVAL \'1 week\''
|
|
\set BUCKET_WIDTH_2TH 'INTERVAL \'1 month\''
|
|
\ir include/cagg_on_cagg_validations.sql
|