mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-26 00:00:54 +08:00
Don't include the used database ports into test output as this will lead to failing tests when running against a local instance or against a preconfigured cloud instance.
123 lines
4.1 KiB
SQL
123 lines
4.1 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.
|
|
|
|
-- Basic testing of API functions on distributed hypertable
|
|
|
|
-- Need to be super user to create extension and add data nodes
|
|
\c :TEST_DBNAME :ROLE_CLUSTER_SUPERUSER;
|
|
|
|
-- Support for execute_sql_and_filter_server_name_on_error()
|
|
\unset ECHO
|
|
\o /dev/null
|
|
\ir include/remote_exec.sql
|
|
\o
|
|
\set ECHO all
|
|
|
|
\set DATA_NODE_1 :TEST_DBNAME _1
|
|
\set DATA_NODE_2 :TEST_DBNAME _2
|
|
\set DATA_NODE_3 :TEST_DBNAME _3
|
|
|
|
-- Add data nodes
|
|
SELECT node_name, database, node_created, database_created, extension_created
|
|
FROM (
|
|
SELECT (add_data_node(name, host => 'localhost', DATABASE => name)).*
|
|
FROM (VALUES (:'DATA_NODE_1'), (:'DATA_NODE_2'), (:'DATA_NODE_3')) v(name)
|
|
) a;
|
|
GRANT USAGE ON FOREIGN SERVER :DATA_NODE_1, :DATA_NODE_2, :DATA_NODE_3 TO PUBLIC;
|
|
|
|
-- Create a distributed hypertable with data
|
|
SET ROLE :ROLE_1;
|
|
CREATE TABLE disttable(
|
|
time timestamptz NOT NULL,
|
|
device int,
|
|
value float
|
|
);
|
|
SELECT * FROM create_distributed_hypertable('disttable', 'time', 'device', 3);
|
|
INSERT INTO disttable VALUES
|
|
('2017-01-01 06:01', 1, 1.2),
|
|
('2017-01-01 09:11', 3, 4.3),
|
|
('2017-01-01 08:01', 1, 7.3),
|
|
('2017-01-02 08:01', 2, 0.23),
|
|
('2018-07-02 08:01', 87, 0.0),
|
|
('2018-07-01 06:01', 13, 3.1),
|
|
('2018-07-01 09:11', 90, 10303.12),
|
|
('2018-07-01 08:01', 29, 64);
|
|
SELECT * FROM disttable ORDER BY time;
|
|
SELECT * FROM test.remote_exec(NULL, $$ SELECT show_chunks('disttable'); $$);
|
|
|
|
-- Test APIs on the distributed hypertable
|
|
|
|
-- Call drop_chunks
|
|
SELECT drop_chunks('disttable', timestamptz '2017-03-01 00:00');
|
|
SELECT * FROM disttable ORDER BY time;
|
|
SELECT * FROM test.remote_exec(NULL, $$ SELECT show_chunks('disttable'); $$);
|
|
|
|
-- Restore the state
|
|
INSERT INTO disttable VALUES
|
|
('2017-01-01 06:01', 1, 1.2),
|
|
('2017-01-01 09:11', 3, 4.3),
|
|
('2017-01-01 08:01', 1, 7.3),
|
|
('2017-01-02 08:01', 2, 0.23);
|
|
SELECT * FROM disttable ORDER BY time;
|
|
SELECT * FROM show_chunks('disttable');
|
|
SELECT * FROM test.remote_exec(NULL, $$ SELECT show_chunks('disttable'); $$);
|
|
|
|
-- Ensure that move_chunk() and reorder_chunk() functions cannot be used
|
|
-- with distributed hypertable
|
|
SET ROLE TO DEFAULT;
|
|
SET client_min_messages TO error;
|
|
DROP TABLESPACE IF EXISTS tablespace1;
|
|
RESET client_min_messages;
|
|
CREATE TABLESPACE tablespace1 OWNER :ROLE_CLUSTER_SUPERUSER LOCATION :TEST_TABLESPACE1_PATH;
|
|
|
|
\set ON_ERROR_STOP 0
|
|
SELECT move_chunk(chunk=>'_timescaledb_internal._dist_hyper_1_4_chunk', destination_tablespace=>'tablespace1', index_destination_tablespace=>'tablespace1', reorder_index=>'disttable_time_idx', verbose=>TRUE);
|
|
SELECT reorder_chunk('_timescaledb_internal._dist_hyper_1_4_chunk', verbose => TRUE);
|
|
\set ON_ERROR_STOP 1
|
|
|
|
DROP TABLESPACE tablespace1;
|
|
|
|
-- Ensure approximate_row_count() works with distributed hypertable
|
|
--
|
|
SELECT * FROM disttable ORDER BY time;
|
|
|
|
ANALYZE disttable;
|
|
|
|
SELECT count(*) FROM disttable;
|
|
SELECT approximate_row_count('disttable');
|
|
SELECT * FROM test.remote_exec(NULL, $$ SELECT approximate_row_count('disttable'); $$);
|
|
|
|
-- Test with native replication
|
|
--
|
|
CREATE TABLE disttable_repl(
|
|
time timestamptz NOT NULL,
|
|
device int,
|
|
value float
|
|
);
|
|
SELECT * FROM create_distributed_hypertable('disttable_repl', 'time', 'device', 3, replication_factor => 2);
|
|
INSERT INTO disttable_repl VALUES
|
|
('2017-01-01 06:01', 1, 1.2),
|
|
('2017-01-01 09:11', 3, 4.3),
|
|
('2017-01-01 08:01', 1, 7.3),
|
|
('2017-01-02 08:01', 2, 0.23),
|
|
('2018-07-02 08:01', 87, 0.0),
|
|
('2018-07-01 06:01', 13, 3.1),
|
|
('2018-07-01 09:11', 90, 10303.12),
|
|
('2018-07-01 08:01', 29, 64);
|
|
SELECT * FROM disttable_repl ORDER BY time;
|
|
|
|
SELECT * FROM show_chunks('disttable_repl');
|
|
SELECT * FROM test.remote_exec(NULL, $$ SELECT show_chunks('disttable_repl'); $$);
|
|
|
|
SELECT count(*) FROM disttable_repl;
|
|
SELECT approximate_row_count('disttable_repl');
|
|
|
|
ANALYZE disttable_repl;
|
|
SELECT approximate_row_count('disttable_repl');
|
|
|
|
DROP TABLE disttable_repl;
|
|
DROP DATABASE :DATA_NODE_1;
|
|
DROP DATABASE :DATA_NODE_2;
|
|
DROP DATABASE :DATA_NODE_3;
|