|
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