SELECT
count(*) AS total_partitions,
count(*) FILTER (
WHERE EXISTS (
SELECT 1
FROM pg_index i
JOIN pg_attribute a
ON a.attrelid = i.indrelid
AND a.attnum = i.indkey[0]
WHERE i.indrelid = p.relid
AND i.indisvalid
AND i.indisready
AND a.attname = 'operation_id'
)
) AS partitions_with_operation_index
FROM pg_partition_tree(
'back_office.transaction'::regclass
) p
WHERE p.isleaf;