timescaledb/sql/views.sql
Joshua Lockerman 65894f08cf Add view displaying info about the current license
Currently the view displays the current edition, expiry date, and
whether the license is expired. We're not displaying the license key
itself in the view as it can get rather long, and get be read via SHOW.
We also do not display the license's ID since that is for internal use.
2019-01-10 17:29:59 -05:00

36 lines
1.4 KiB
SQL

-- Copyright (c) 2016-2018 Timescale, Inc. All Rights Reserved.
--
-- This file is licensed under the Apache License, see LICENSE-APACHE
-- at the top level directory of the TimescaleDB distribution.
CREATE SCHEMA IF NOT EXISTS timescaledb_information;
-- Convenience view to list all hypertables and their space usage
CREATE OR REPLACE VIEW timescaledb_information.hypertable AS
SELECT ht.schema_name AS table_schema,
ht.table_name,
t.tableowner AS table_owner,
ht.num_dimensions,
(SELECT count(1)
FROM _timescaledb_catalog.chunk ch
WHERE ch.hypertable_id=ht.id
) AS num_chunks,
size.table_size,
size.index_size,
size.toast_size,
size.total_size
FROM _timescaledb_catalog.hypertable ht
LEFT OUTER JOIN pg_tables t ON ht.table_name=t.tablename AND ht.schema_name=t.schemaname
LEFT OUTER JOIN LATERAL @extschema@.hypertable_relation_size_pretty(
CASE WHEN has_schema_privilege(ht.schema_name,'USAGE') THEN format('%I.%I',ht.schema_name,ht.table_name) ELSE NULL END
) size ON true;
CREATE OR REPLACE VIEW timescaledb_information.license AS
SELECT _timescaledb_internal.license_edition() as edition,
_timescaledb_internal.license_expiration_time() <= now() AS expired,
_timescaledb_internal.license_expiration_time() AS expiration_time;
GRANT USAGE ON SCHEMA timescaledb_information TO PUBLIC;
GRANT SELECT ON ALL TABLES IN SCHEMA timescaledb_information TO PUBLIC;