Skip to main content
Glama
U0644__pganalyze_setup.sql3.13 kB
DO LANGUAGE PLPGSQL $pganalyze_setup$ BEGIN IF EXISTS ( SELECT FROM pg_catalog.pg_roles WHERE rolname = 'pganalyze' ) THEN RAISE NOTICE 'Role ''pganalyze'' already exists. Skipping pganalyze setup.'; ELSE IF NOT EXISTS ( SELECT FROM pg_catalog.pg_roles WHERE rolname = 'rds_superuser' ) OR pg_has_role(current_user, 'rds_superuser') THEN CREATE USER pganalyze WITH PASSWORD 'tSYwfHHdBBlfWlxa' CONNECTION LIMIT 5; GRANT pg_monitor TO pganalyze; CREATE SCHEMA IF NOT EXISTS pganalyze; GRANT USAGE ON SCHEMA pganalyze TO pganalyze; GRANT USAGE ON SCHEMA public TO pganalyze; CREATE OR REPLACE FUNCTION pganalyze.get_stat_replication() RETURNS SETOF pg_stat_replication AS $$ /* pganalyze-collector */ SELECT * FROM pg_catalog.pg_stat_replication; $$ LANGUAGE sql VOLATILE SECURITY DEFINER; CREATE OR REPLACE FUNCTION pganalyze.get_column_stats() RETURNS SETOF pg_stats AS $$ /* pganalyze-collector */ SELECT schemaname, tablename, attname, inherited, null_frac, avg_width, n_distinct, NULL::anyarray, most_common_freqs, NULL::anyarray, correlation, NULL::anyarray, most_common_elem_freqs, elem_count_histogram FROM pg_catalog.pg_stats; $$ LANGUAGE sql VOLATILE SECURITY DEFINER; -- For pganalyze sequence report CREATE OR REPLACE FUNCTION pganalyze.get_sequence_oid_for_column(table_name text, column_name text) RETURNS oid AS $$ /* pganalyze-collector */ SELECT pg_get_serial_sequence(table_name, column_name)::regclass::oid; $$ LANGUAGE sql VOLATILE SECURITY DEFINER; -- The following is needed for Postgres 10+: CREATE OR REPLACE FUNCTION pganalyze.get_sequence_state(schema_name text, sequence_name text) RETURNS TABLE( last_value bigint, start_value bigint, increment_by bigint, max_value bigint, min_value bigint, cache_size bigint, cycle boolean ) AS $$ /* pganalyze-collector */ SELECT last_value, start_value, increment_by, max_value, min_value, cache_size, cycle FROM pg_sequences WHERE schemaname = schema_name AND sequencename = sequence_name; $$ LANGUAGE sql VOLATILE SECURITY DEFINER; -- For pganalyze buffer cache report CREATE EXTENSION IF NOT EXISTS pg_buffercache WITH SCHEMA public; CREATE OR REPLACE FUNCTION pganalyze.get_buffercache() RETURNS SETOF public.pg_buffercache AS $$ /* pganalyze-collector */ SELECT * FROM public.pg_buffercache; $$ LANGUAGE sql VOLATILE SECURITY DEFINER; ELSE RAISE NOTICE 'Current user does not have superuser-like privileges. Skipping pganalyze setup.'; END IF; END IF; END; $pganalyze_setup$; CREATE EXTENSION IF NOT EXISTS pg_stat_statements; -- SELECT calls, query FROM pg_stat_statements LIMIT 1;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server