Skip to content

Instantly share code, notes, and snippets.

@jfrost
Last active August 29, 2015 14:07
Show Gist options
  • Save jfrost/9c3600077b04e2afe430 to your computer and use it in GitHub Desktop.
Save jfrost/9c3600077b04e2afe430 to your computer and use it in GitHub Desktop.
Generate your SET ADD TABLE and SET ADD SEQUENCE slonik statements for initial subscription. This will only add tables with primary keys.
SELECT 'SET ADD TABLE (SET id = 1, origin = 1, FULL QUALIFIED NAME = ''' || nspname || '.' || relname || ''', comment=''' || nspname || '.' || relname || ' TABLE'');' FROM pg_class JOIN pg_namespace ON relnamespace = pg_namespace.oid WHERE relkind = 'r' AND relhaspkey AND nspname NOT IN ('information_schema', 'pg_catalog') ORDER BY pg_total_relation_size(pg_class.oid) DESC;
SELECT 'SET ADD SEQUENCE (SET id = 1, origin = 1, FULL QUALIFIED NAME = ''' || n.nspname || '.' || c.relname || ''', comment=''' || n.nspname || '.' || c.relname || ' SEQUENCE'');' FROM pg_class c, pg_namespace n WHERE c.relnamespace = n.OID AND c.relkind = 'S';
@jfrost
Copy link
Author

jfrost commented Mar 27, 2015

Also important to check that all tables have a pkey:

SELECT
   n.nspname AS "Schema",
   c.relname AS "Table Name",
   c.relhaspkey AS "Has PK",
   pg_size_pretty(pg_total_relation_size(c.oid)),
   sum(pg_total_relation_size(c.oid)) OVER ()
FROM
   pg_catalog.pg_class c
JOIN
   pg_namespace n
ON (
       c.relnamespace = n.oid
   AND n.nspname NOT IN ('information_schema', 'pg_catalog')
   AND n.nspname NOT LIKE 'pg_temp_%'
   AND c.relkind='r'
)
WHERE  NOT c.relhaspkey
ORDER BY c.relhaspkey, c.relname
;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment