scripts/collector/postgres/sql/calculated_metrics.sql (229 lines of code) (raw):

/* Copyright 2024 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ with table_summary as ( select count(distinct c.oid) as total_table_count from pg_class c join pg_catalog.pg_namespace as ns on (c.relnamespace = ns.oid) where ns.nspname <> all (array ['pg_catalog', 'information_schema']) and ns.nspname !~ '^pg_toast' and c.relkind = ANY (ARRAY ['r', 'p', 't']) ), foreign_table_summary as ( select count(distinct ft.ftrelid) total_foreign_table_count, count( distinct case when w.fdwname = ANY (ARRAY ['oracle_fdw', 'orafdw','postgres_fdw']) then ft.ftrelid else null end ) as supported_foreign_table_count, count( distinct case when w.fdwname != all (ARRAY ['oracle_fdw', 'orafdw','postgres_fdw']) then ft.ftrelid else null end ) as unsupported_foreign_table_count from pg_catalog.pg_foreign_table ft inner join pg_catalog.pg_class c on c.oid = ft.ftrelid inner join pg_catalog.pg_foreign_server s on s.oid = ft.ftserver inner join pg_catalog.pg_foreign_data_wrapper w on s.srvfdw = w.oid ), extension_summary as ( select count(distinct e.extname) total_extension_count, count( distinct case when e.extname = any ( array ['btree_gin', 'btree_gist', 'chkpass', 'citext', 'cube', 'hstore', 'isn', 'ip4r', 'ltree', 'lo', 'postgresql-hll', 'prefix', 'postgis', 'postgis_raster', 'postgis_sfcgal', 'postgis_tiger_geocoder', 'postgis_topology', 'address_standardizer', 'address_standardizer_data_us', 'plpgsql', 'plv8', 'amcheck', 'auto_explain', 'dblink', 'decoderbufs', 'dict_int', 'earthdistance', 'fuzzystrmatch', 'intagg', 'intarray', 'oracle_fdw', 'orafce', 'pageinspect', 'pgAudit', 'pg_bigm', 'pg_buffercache', 'pg_cron', 'pgcrypto', 'pglogical', 'pgfincore', 'pg_freespacemap', 'pg_hint_plan', 'pgoutput', 'pg_partman', 'pg_prewarm', 'pg_proctab', 'pg_repack', 'pgrowlocks', 'pgstattuple', 'pg_similarity', 'pg_stat_statements', 'pgtap', 'pg_trgm', 'pgtt', 'pgvector', 'pg_visibility', 'pg_wait_sampling', 'plproxy', 'postgres_fdw', 'postgresql_anonymizer', 'rdkit', 'refint', 'sslinfo', 'tablefunc', 'tsm_system_rows', 'tsm_system_time', 'unaccent', 'uuid-ossp'] ) then e.extname else null end ) as supported_extension_count, count( distinct case when e.extname != all ( array ['btree_gin', 'btree_gist', 'chkpass', 'citext', 'cube', 'hstore', 'isn', 'ip4r', 'ltree', 'lo', 'postgresql-hll', 'prefix', 'postgis', 'postgis_raster', 'postgis_sfcgal', 'postgis_tiger_geocoder', 'postgis_topology', 'address_standardizer', 'address_standardizer_data_us', 'plpgsql', 'plv8', 'amcheck', 'auto_explain', 'dblink', 'decoderbufs', 'dict_int', 'earthdistance', 'fuzzystrmatch', 'intagg', 'intarray', 'oracle_fdw', 'orafce', 'pageinspect', 'pgAudit', 'pg_bigm', 'pg_buffercache', 'pg_cron', 'pgcrypto', 'pglogical', 'pgfincore', 'pg_freespacemap', 'pg_hint_plan', 'pgoutput', 'pg_partman', 'pg_prewarm', 'pg_proctab', 'pg_repack', 'pgrowlocks', 'pgstattuple', 'pg_similarity', 'pg_stat_statements', 'pgtap', 'pg_trgm', 'pgtt', 'pgvector', 'pg_visibility', 'pg_wait_sampling', 'plproxy', 'postgres_fdw', 'postgresql_anonymizer', 'rdkit', 'refint', 'sslinfo', 'tablefunc', 'tsm_system_rows', 'tsm_system_time', 'unaccent', 'uuid-ossp'] ) then e.extname else null end ) as unsupported_extension_count from pg_extension e ), calculated_metrics as ( select 'VERSION_NUM' as metric_name, current_setting('server_version_num') as metric_value union select 'VERSION' as metric_name, current_setting('server_version') as metric_value union select 'UNSUPPORTED_EXTENSION_COUNT' as metric_name, cast(es.unsupported_extension_count as varchar) as metric_value from extension_summary es union select 'SUPPORTED_EXTENSION_COUNT' as metric_name, cast(es.supported_extension_count as varchar) as metric_value from extension_summary es union all select 'EXTENSION_COUNT' as metric_name, cast(es.total_extension_count as varchar) as metric_value from extension_summary es union all select 'FOREIGN_TABLE_COUNT' as metric_name, cast(fts.total_foreign_table_count as varchar) as metric_value from foreign_table_summary fts union all select 'UNSUPPORTED_FOREIGN_TABLE_COUNT' as metric_name, cast(fts.unsupported_foreign_table_count as varchar) as metric_value from foreign_table_summary fts union all select 'SUPPORTED_FOREIGN_TABLE_COUNT' as metric_name, cast(fts.supported_foreign_table_count as varchar) as metric_value from foreign_table_summary fts union all select 'TABLE_COUNT' as metric_name, cast(ts.total_table_count as varchar) as metric_value from table_summary ts ), src as ( select 'CALCULATED_METRIC' as metric_category, metric_name, metric_value from calculated_metrics ) select chr(34) || :PKEY || chr(34) as pkey, chr(34) || :DMA_SOURCE_ID || chr(34) as dma_source_id, chr(34) || :DMA_MANUAL_ID || chr(34) as dma_manual_id, chr(34) || src.metric_category || chr(34) as metric_category, chr(34) || src.metric_name || chr(34) as metric_name, chr(34) || src.metric_value || chr(34) as metric_value from src;