forked from heroku/heroku-pg-extras
-
Notifications
You must be signed in to change notification settings - Fork 0
/
table_indexes_size.js
37 lines (31 loc) · 1022 Bytes
/
table_indexes_size.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'use strict'
const co = require('co')
const cli = require('heroku-cli-util')
const pg = require('heroku-pg')
function * run (context, heroku) {
let db = yield pg.fetcher(heroku).database(context.app, context.args.database)
let query = `
SELECT c.relname AS table,
pg_size_pretty(pg_indexes_size(c.oid)) AS index_size
FROM pg_class c
LEFT JOIN pg_namespace n ON (n.oid = c.relnamespace)
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
AND n.nspname !~ '^pg_toast'
AND c.relkind='r'
ORDER BY pg_indexes_size(c.oid) DESC;
`
let output = yield pg.psql.exec(db, query)
process.stdout.write(output)
}
const cmd = {
topic: 'pg',
description: 'show the total size of all the indexes on each table, descending by size',
needsApp: true,
needsAuth: true,
args: [{name: 'database', optional: true}],
run: cli.command({preauth: true}, co.wrap(run))
}
module.exports = [
Object.assign({command: 'table-indexes-size'}, cmd),
Object.assign({command: 'table_indexes_size', hidden: true}, cmd)
]