Skip to content

Instantly share code, notes, and snippets.

View cherts's full-sized avatar

Mikhail Grigorev cherts

View GitHub Profile
@cherts
cherts / install_latest_pgscv.sh
Created September 27, 2024 11:07
Install latest pgSCV
wget -qO - $(OS=$(uname -s | tr '[:upper:]' '[:lower:]'); ARCH=$(uname -p | sed 's/x86_64/amd64/g'); wget https://api.github.com/repos/CHERTS/pgscv/releases/latest -qO - | grep -wo "https.*${OS}_${ARCH}.tar.g
z") | tar xzf - -C /tmp && \
mv /tmp/pgscv.yaml /etc 2>/dev/null && \
mv /tmp/pgscv.service /etc/systemd/system 2>/dev/null && \
mv /tmp/pgscv.default /etc/default/pgscv 2>/dev/null && \
mv /tmp/pgscv /usr/sbin 2>/dev/null && \
chown postgres:postgres /etc/pgscv.yaml 2>/dev/null && \
systemctl daemon-reload && \
systemctl enable pgscv --now
@cherts
cherts / docker-compose.yml
Last active September 27, 2025 21:14
Redpanda + Redpanda console docker-compose file (one node host)
services:
redpanda:
image: docker.redpanda.com/redpandadata/redpanda:v24.2.5
container_name: redpanda
command:
- redpanda
- start
- --kafka-addr internal://0.0.0.0:9092,external://0.0.0.0:19092
# Address the broker advertises to clients that connect to the Kafka API.
# Use the internal addresses to connect to the Redpanda brokers'
@cherts
cherts / pg_change_owner.sql
Last active November 25, 2024 08:59
How to change owner of PostgreSQL database/schema/table/sequence/views/functions/types?
CREATE OR REPLACE PROCEDURE change_owner_exec(sql_exec text) AS
$$
BEGIN
RAISE INFO 'Exec: %', sql_exec;
EXECUTE sql_exec;
COMMIT;
RETURN;
END;
$$
LANGUAGE plpgsql;
@cherts
cherts / psaux.bash
Created July 29, 2024 13:32
ps aux written entirely in bash without ever forking
#!/bin/bash
# ps aux written entirely in bash without ever forking
# Author: Isabella Bosia
# Github: https://github.com/izabera/ps/tree/develop
#
# so initially i was hoping you could get everything from /proc/<pid>/status
# because it's easy to parse (in most cases) but apparently you can't get
# things like the cpu% :(
@cherts
cherts / create_publication_and_slot.sql
Created July 25, 2024 13:47
Create logical replication and test
-- Create publication
CREATE PUBLICATION cdc;
-- Create slot
SELECT pg_create_logical_replication_slot('test_slot_v1', 'pgoutput');
-- Create example table
CREATE TABLE replication_test_v1
(
id integer NOT NULL PRIMARY KEY,
@cherts
cherts / debezium_checking_capture_data.sql
Created July 25, 2024 13:29
Checking capturing data change use logical slot
-- Create slot
SELECT pg_create_logical_replication_slot('test_slot_v1', 'pgoutput');
-- Show publication name
SELECT pubname FROM pg_publication_tables GROUP BY pubname;
-- Peak changes (does not consume changes)
SELECT pg_logical_slot_peek_binary_changes('test_slot_v1', NULL, NULL, 'publication_names', 'dbz_publication', 'proto_version', '1');
-- Get changes (consumes changes)
@cherts
cherts / partitioned_table.sql
Last active October 18, 2024 08:31
Examples of transfer data to partitioned table in PostgreSQL
CREATE TABLE IF NOT EXISTS orders_with_partitions (
id uuid not null,
processed_at timestamp with time zone not null,
created_at timestamp with time zone not null default CURRENT_TIMESTAMP,
data jsonb not null
) PARTITION BY RANGE (created_at);
CREATE INDEX IF NOT EXISTS orders_with_partitions_created_at_idx
ON orders_with_partitions (created_at);
@cherts
cherts / product_and_order.sql
Created July 10, 2024 06:15
Product and orders examples database using PostgreSQL
CREATE TYPE products_unit AS ENUM ('Килограмм', 'Грамм', 'Литр', 'Метр', 'Пара', 'Штука');
CREATE TABLE IF NOT EXISTS products (
product_no bigint PRIMARY KEY,
price numeric,
unit products_unit,
active bool,
name text
);
@cherts
cherts / debezium_heartbeat_table.sql
Last active June 20, 2024 12:10
Create Debezium heartbeat table in PostgreSQL
CREATE SCHEMA debezium;
CREATE TABLE debezium.debezium_signal(id VARCHAR(42) PRIMARY KEY, type VARCHAR(32) NOT NULL, data VARCHAR(2048) NULL);
CREATE TABLE debezium.pg_heartbeat(id SERIAL, last_update TIMESTAMP DEFAULT current_timestamp, PRIMARY KEY (id));
--INSERT INTO debezium.pg_heartbeat(id) VALUES (0);
GRANT USAGE ON SCHEMA debezium TO debezium_dwh;
GRANT SELECT, INSERT, UPDATE, DELETE ON debezium.debezium_signal TO debezium_dwh;
GRANT SELECT, INSERT, UPDATE, DELETE ON debezium.pg_heartbeat TO debezium_dwh;
ALTER PUBLICATION dbz_publication ADD TABLE debezium.debezium_signal;
ALTER PUBLICATION dbz_publication ADD TABLE debezium.pg_heartbeat;
ALTER TABLE debezium.debezium_signal REPLICA IDENTITY FULL;
@cherts
cherts / test_postgis.sql
Created June 5, 2024 14:26
Simple test for PostGIS extension for PostgreSQL
-- Show PostGIS version
SELECT PostGIS_version();
-- Create table
CREATE TABLE global_points (
id SERIAL PRIMARY KEY,
name VARCHAR(64),
location geography(POINT,4326)
);