|
7 | 7 | $do$
|
8 | 8 | BEGIN
|
9 | 9 | IF NOT EXISTS (
|
10 |
| - SELECT FROM pg_catalog.pg_roles |
| 10 | + SELECT FROM pg_catalog.pg_roles |
11 | 11 | WHERE rolname = '{0}') THEN
|
12 | 12 | CREATE ROLE {0} LOGIN PASSWORD '{0}';
|
13 | 13 | IF EXISTS (
|
|
166 | 166 | DROP FUNCTION IF EXISTS mamonsu.get_oldest_transaction();
|
167 | 167 | CREATE or REPLACE FUNCTION mamonsu.get_oldest_transaction()
|
168 | 168 | RETURNS DOUBLE PRECISION AS $$
|
169 |
| - SELECT |
170 |
| - CASE WHEN extract(epoch from max(now() - xact_start)) IS NOT null |
| 169 | + SELECT |
| 170 | + CASE WHEN extract(epoch from max(now() - xact_start)) IS NOT null |
171 | 171 | AND extract(epoch from max(now() - xact_start))>0
|
172 |
| - THEN extract(epoch from max(now() - xact_start)) |
173 |
| - ELSE 0 |
174 |
| - END |
175 |
| - FROM pg_catalog.pg_stat_activity |
176 |
| - WHERE |
177 |
| - pid NOT IN(select pid from pg_stat_replication) AND |
| 172 | + THEN extract(epoch from max(now() - xact_start)) |
| 173 | + ELSE 0 |
| 174 | + END |
| 175 | + FROM pg_catalog.pg_stat_activity |
| 176 | + WHERE |
| 177 | + pid NOT IN(select pid from pg_stat_replication) AND |
178 | 178 | pid <> pg_backend_pid()
|
179 | 179 | $$ LANGUAGE SQL SECURITY DEFINER;
|
180 | 180 |
|
|
225 | 225 | CREATE OR REPLACE FUNCTION mamonsu.prepared_transaction()
|
226 | 226 | RETURNS TABLE(count_prepared BIGINT, oldest_prepared BIGINT) AS $$
|
227 | 227 | SELECT COUNT(*) AS count_prepared,
|
228 |
| -coalesce (ROUND(MAX(EXTRACT (EPOCH FROM (now() - prepared)))),0)::bigint AS oldest_prepared |
| 228 | +coalesce (ROUND(MAX(EXTRACT (EPOCH FROM (now() - prepared)))),0)::bigint AS oldest_prepared |
229 | 229 | FROM pg_catalog.pg_prepared_xacts$$ LANGUAGE SQL SECURITY DEFINER;
|
230 | 230 |
|
231 | 231 | DROP FUNCTION IF EXISTS mamonsu.count_{3}_lag_lsn();
|
232 | 232 | CREATE OR REPLACE FUNCTION mamonsu.count_{3}_lag_lsn()
|
233 |
| -RETURNS TABLE(application_name TEXT, {8} total_lag INTEGER) AS $$ |
| 233 | +RETURNS TABLE(application_name TEXT, {8} total_lag BIGINT) AS $$ |
234 | 234 | SELECT application_name,
|
235 |
| - {6} |
236 |
| - coalesce((pg_{7}_diff(pg_current_{7}(), replay_{9}))::int, 0) AS total_lag |
| 235 | + {6} |
| 236 | + coalesce((pg_{7}_diff(pg_current_{7}(), replay_{9}))::bigint, 0) AS total_lag |
237 | 237 | FROM pg_stat_replication
|
238 | 238 | $$ LANGUAGE SQL SECURITY DEFINER;
|
239 | 239 | """
|
|
287 | 287 | FROM pg_extension e
|
288 | 288 | JOIN pg_namespace n
|
289 | 289 | ON e.extnamespace = n.oid
|
290 |
| - WHERE e.extname = 'pgpro_stats'; |
| 290 | + WHERE e.extname = 'pgpro_stats'; |
291 | 291 | EXECUTE 'DROP FUNCTION IF EXISTS mamonsu.wait_sampling_all_locks();
|
292 | 292 | CREATE OR REPLACE FUNCTION mamonsu.wait_sampling_all_locks()
|
293 | 293 | RETURNS TABLE(lock_type text, count bigint) AS $$
|
|
298 | 298 | FROM (SELECT key, value AS locktuple
|
299 | 299 | FROM jsonb_each((SELECT wait_stats
|
300 | 300 | FROM ' || extension_schema || '.pgpro_stats_totals()
|
301 |
| - WHERE object_type = ''cluster''))) setoflocks, |
| 301 | + WHERE object_type = ''cluster''))) setoflocks, |
302 | 302 | jsonb_each(setoflocks.locktuple) AS json_data)
|
303 | 303 | SELECT
|
304 | 304 | CASE
|
|
327 | 327 | FROM (SELECT key, value AS locktuple
|
328 | 328 | FROM jsonb_each((SELECT wait_stats
|
329 | 329 | FROM ' || extension_schema || '.pgpro_stats_totals()
|
330 |
| - WHERE object_type = ''cluster''))) setoflocks, |
| 330 | + WHERE object_type = ''cluster''))) setoflocks, |
331 | 331 | jsonb_each(setoflocks.locktuple) AS json_data)
|
332 | 332 | SELECT
|
333 | 333 | lock_type,
|
|
347 | 347 | FROM (SELECT key, value AS locktuple
|
348 | 348 | FROM jsonb_each((SELECT wait_stats
|
349 | 349 | FROM ' || extension_schema || '.pgpro_stats_totals()
|
350 |
| - WHERE object_type = ''cluster''))) setoflocks, |
| 350 | + WHERE object_type = ''cluster''))) setoflocks, |
351 | 351 | jsonb_each(setoflocks.locktuple) AS json_data
|
352 | 352 | WHERE setoflocks.key IN (''Lock'', ''LWLock'', ''LWLockTranche'', ''LWLockNamed''))
|
353 | 353 | SELECT
|
|
415 | 415 | FROM pg_extension e
|
416 | 416 | JOIN pg_namespace n
|
417 | 417 | ON e.extnamespace = n.oid
|
418 |
| - WHERE e.extname = 'pgpro_stats'; |
| 418 | + WHERE e.extname = 'pgpro_stats'; |
419 | 419 | EXECUTE 'DROP FUNCTION IF EXISTS mamonsu.statements_pro();
|
420 | 420 | CREATE OR REPLACE FUNCTION mamonsu.statements_pro()
|
421 | 421 | RETURNS TABLE({columns}) AS $$
|
422 | 422 | SELECT {metrics}
|
423 | 423 | FROM ' || extension_schema || '.pgpro_stats_totals()
|
424 |
| - WHERE object_type = ''cluster''; |
| 424 | + WHERE object_type = ''cluster''; |
425 | 425 | $$ LANGUAGE SQL SECURITY DEFINER;';
|
426 | 426 | ELSE
|
427 | 427 | EXIT functions_creation;
|
|
0 commit comments