Skip to content

Instantly share code, notes, and snippets.

@akramarev
akramarev / replication_lag.sql
Created August 22, 2025 22:04
[Subscription replication slot lag in Postgres]
SELECT
slot_name,
plugin,
slot_type,
active,
restart_lsn,
confirmed_flush_lsn,
pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn) as lag_size_raw,
pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn)) AS lag_size,
age(xmin) AS xmin_age
@akramarev
akramarev / active_connections.sql
Created August 22, 2025 22:03
[Active connections in Postgres]
SELECT
usename,
application_name,
client_addr,
COUNT(*) as connection_count,
MIN(backend_start) as first_connection,
MAX(backend_start) as latest_connection
FROM pg_stat_activity
GROUP BY usename, application_name, client_addr
ORDER BY connection_count DESC;
@akramarev
akramarev / script.sh
Created March 6, 2025 06:29
[my PRs created today]
gh pr list --author "@me" --state all --search "created:>=$(date '+%Y-%m-%d')T00:00:00$(date '+%z' | sed 's/\([0-9][0-9]\)$/:\1/')"
@akramarev
akramarev / git.sh
Created February 6, 2025 23:01
[reset commit author to the current user]
git commit --amend --reset-author
@akramarev
akramarev / docker-logs-all.sh
Created November 20, 2024 18:55
[tail all running docker container logs]
docker ps -q | xargs -L 1 -P `docker ps | wc -l` docker logs --since 30s -f
@akramarev
akramarev / script.sql
Created November 1, 2024 01:06
[postgres, db sizes]
SELECT pg_database.datname,
pg_database_size(pg_database.datname),
pg_size_pretty(pg_database_size(pg_database.datname)) AS size
FROM pg_database
@akramarev
akramarev / script.sql
Created October 8, 2024 22:00
[Long running transactions in Prostgres]
SELECT
pid
,datname
,usename
-- ,application_name
-- ,client_hostname
-- ,client_port
-- ,backend_start
-- ,query_start
,query
@akramarev
akramarev / check-open-handlers-connections.sh
Created September 15, 2022 05:22
[check open (hanging) connections by process id]
lsof -p 66298
@akramarev
akramarev / disable-fks.sql
Created July 12, 2022 02:55
[disable triggers and FK checks in postgres]
-- If SET (or equivalently SET SESSION) is issued within a transaction that is later aborted, the effects of the SET command disappear when the transaction is rolled back. Once the surrounding transaction is committed, the effects will persist until the end of the session, unless overridden by another SET.
SET session_replication_role = 'replica';
...
SET session_replication_role = 'origin';
@akramarev
akramarev / jq-convert-json-csv.sh
Created June 15, 2022 20:26
[Convert JSON to CSV via the Command Line Using JQ]
# https://earthly.dev/blog/convert-to-from-json/
cat simple.json| jq -r '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv'