mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-28 09:46:44 +08:00
This fixes the show_indexes test support function to properly show the columns of the indexes instead of the table. The function now also shows the expressions of expression indexes.
157 lines
8.0 KiB
Plaintext
157 lines
8.0 KiB
Plaintext
CREATE TABLE cluster_test(time timestamptz, temp float, location int);
|
|
SELECT create_hypertable('cluster_test', 'time', chunk_time_interval => interval '1 day');
|
|
NOTICE: adding not-null constraint to column "time"
|
|
create_hypertable
|
|
-------------------
|
|
|
|
(1 row)
|
|
|
|
-- Show default indexes
|
|
SELECT * FROM test.show_indexes('cluster_test');
|
|
Index | Columns | Expr | Unique | Primary | Exclusion | Tablespace
|
|
-----------------------+---------+------+--------+---------+-----------+------------
|
|
cluster_test_time_idx | {time} | | f | f | f |
|
|
(1 row)
|
|
|
|
-- Create two chunks
|
|
INSERT INTO cluster_test VALUES ('2017-01-20T09:00:01', 23.4, 1),
|
|
('2017-01-21T09:00:01', 21.3, 2);
|
|
-- Run cluster
|
|
CLUSTER VERBOSE cluster_test USING cluster_test_time_idx;
|
|
INFO: clustering "_timescaledb_internal._hyper_1_2_chunk" using index scan on "_hyper_1_2_chunk_cluster_test_time_idx"
|
|
INFO: "_hyper_1_2_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_1_chunk" using index scan on "_hyper_1_1_chunk_cluster_test_time_idx"
|
|
INFO: "_hyper_1_1_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "public.cluster_test" using sequential scan and sort
|
|
INFO: "cluster_test": found 0 removable, 0 nonremovable row versions in 0 pages
|
|
-- Create a third chunk
|
|
INSERT INTO cluster_test VALUES ('2017-01-22T09:00:01', 19.5, 3);
|
|
-- Show clustered indexes
|
|
SELECT indexrelid::regclass, indisclustered
|
|
FROM pg_index
|
|
WHERE indisclustered = true;
|
|
indexrelid | indisclustered
|
|
--------------------------------------------------------------+----------------
|
|
_timescaledb_internal._hyper_1_2_chunk_cluster_test_time_idx | t
|
|
_timescaledb_internal._hyper_1_1_chunk_cluster_test_time_idx | t
|
|
cluster_test_time_idx | t
|
|
(3 rows)
|
|
|
|
-- Recluster just our table
|
|
CLUSTER VERBOSE cluster_test;
|
|
INFO: clustering "_timescaledb_internal._hyper_1_3_chunk" using index scan on "_hyper_1_3_chunk_cluster_test_time_idx"
|
|
INFO: "_hyper_1_3_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_2_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_2_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_1_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_1_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "public.cluster_test" using sequential scan and sort
|
|
INFO: "cluster_test": found 0 removable, 0 nonremovable row versions in 0 pages
|
|
-- Show clustered indexes, including new chunk
|
|
SELECT indexrelid::regclass, indisclustered
|
|
FROM pg_index
|
|
WHERE indisclustered = true;
|
|
indexrelid | indisclustered
|
|
--------------------------------------------------------------+----------------
|
|
_timescaledb_internal._hyper_1_2_chunk_cluster_test_time_idx | t
|
|
_timescaledb_internal._hyper_1_1_chunk_cluster_test_time_idx | t
|
|
cluster_test_time_idx | t
|
|
_timescaledb_internal._hyper_1_3_chunk_cluster_test_time_idx | t
|
|
(4 rows)
|
|
|
|
-- Recluster all tables (although will only be our test table)
|
|
CLUSTER VERBOSE;
|
|
INFO: clustering "_timescaledb_internal._hyper_1_3_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_3_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "public.cluster_test" using sequential scan and sort
|
|
INFO: "cluster_test": found 0 removable, 0 nonremovable row versions in 0 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_1_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_1_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_2_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_2_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
-- Change the clustered index
|
|
CREATE INDEX ON cluster_test (time, location);
|
|
CLUSTER VERBOSE cluster_test using cluster_test_time_location_idx;
|
|
INFO: clustering "_timescaledb_internal._hyper_1_3_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_3_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_2_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_2_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_1_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_1_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "public.cluster_test" using sequential scan and sort
|
|
INFO: "cluster_test": found 0 removable, 0 nonremovable row versions in 0 pages
|
|
-- Show updated clustered indexes
|
|
SELECT indexrelid::regclass, indisclustered
|
|
FROM pg_index
|
|
WHERE indisclustered = true;
|
|
indexrelid | indisclustered
|
|
----------------------------------------------------------+----------------
|
|
_timescaledb_internal._hyper_1_3_chunk_time_location_idx | t
|
|
_timescaledb_internal._hyper_1_2_chunk_time_location_idx | t
|
|
_timescaledb_internal._hyper_1_1_chunk_time_location_idx | t
|
|
cluster_test_time_location_idx | t
|
|
(4 rows)
|
|
|
|
--check the setting of cluster indexes on hypertables and chunks
|
|
ALTER TABLE cluster_test CLUSTER ON cluster_test_time_idx;
|
|
SELECT indexrelid::regclass, indisclustered
|
|
FROM pg_index
|
|
WHERE indisclustered = true
|
|
ORDER BY 1,2;
|
|
indexrelid | indisclustered
|
|
--------------------------------------------------------------+----------------
|
|
cluster_test_time_idx | t
|
|
_timescaledb_internal._hyper_1_1_chunk_cluster_test_time_idx | t
|
|
_timescaledb_internal._hyper_1_2_chunk_cluster_test_time_idx | t
|
|
_timescaledb_internal._hyper_1_3_chunk_cluster_test_time_idx | t
|
|
(4 rows)
|
|
|
|
CLUSTER VERBOSE cluster_test;
|
|
INFO: clustering "_timescaledb_internal._hyper_1_3_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_3_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_2_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_2_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "_timescaledb_internal._hyper_1_1_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_1_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
INFO: clustering "public.cluster_test" using sequential scan and sort
|
|
INFO: "cluster_test": found 0 removable, 0 nonremovable row versions in 0 pages
|
|
ALTER TABLE cluster_test SET WITHOUT CLUSTER;
|
|
SELECT indexrelid::regclass, indisclustered
|
|
FROM pg_index
|
|
WHERE indisclustered = true
|
|
ORDER BY 1,2;
|
|
indexrelid | indisclustered
|
|
------------+----------------
|
|
(0 rows)
|
|
|
|
\set ON_ERROR_STOP 0
|
|
CLUSTER VERBOSE cluster_test;
|
|
ERROR: there is no previously clustered index for table "cluster_test"
|
|
\set ON_ERROR_STOP 1
|
|
ALTER TABLE _timescaledb_internal._hyper_1_1_chunk CLUSTER ON _hyper_1_1_chunk_cluster_test_time_idx;
|
|
SELECT indexrelid::regclass, indisclustered
|
|
FROM pg_index
|
|
WHERE indisclustered = true
|
|
ORDER BY 1,2;
|
|
indexrelid | indisclustered
|
|
--------------------------------------------------------------+----------------
|
|
_timescaledb_internal._hyper_1_1_chunk_cluster_test_time_idx | t
|
|
(1 row)
|
|
|
|
CLUSTER VERBOSE _timescaledb_internal._hyper_1_1_chunk;
|
|
INFO: clustering "_timescaledb_internal._hyper_1_1_chunk" using sequential scan and sort
|
|
INFO: "_hyper_1_1_chunk": found 0 removable, 1 nonremovable row versions in 1 pages
|
|
ALTER TABLE _timescaledb_internal._hyper_1_1_chunk SET WITHOUT CLUSTER;
|
|
SELECT indexrelid::regclass, indisclustered
|
|
FROM pg_index
|
|
WHERE indisclustered = true
|
|
ORDER BY 1,2;
|
|
indexrelid | indisclustered
|
|
------------+----------------
|
|
(0 rows)
|
|
|
|
\set ON_ERROR_STOP 0
|
|
CLUSTER VERBOSE _timescaledb_internal._hyper_1_1_chunk;
|
|
ERROR: there is no previously clustered index for table "_hyper_1_1_chunk"
|
|
\set ON_ERROR_STOP 1
|