@tejasanik/postgres-mcp-server 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -10
- package/dist/__tests__/analysis-tools.test.d.ts +2 -0
- package/dist/__tests__/analysis-tools.test.d.ts.map +1 -0
- package/dist/__tests__/analysis-tools.test.js +294 -0
- package/dist/__tests__/analysis-tools.test.js.map +1 -0
- package/dist/__tests__/db-manager.test.d.ts +2 -0
- package/dist/__tests__/db-manager.test.d.ts.map +1 -0
- package/dist/__tests__/db-manager.test.js +243 -0
- package/dist/__tests__/db-manager.test.js.map +1 -0
- package/dist/__tests__/mcp-server.test.d.ts +13 -0
- package/dist/__tests__/mcp-server.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-server.test.js +131 -0
- package/dist/__tests__/mcp-server.test.js.map +1 -0
- package/dist/__tests__/schema-tools.test.d.ts +2 -0
- package/dist/__tests__/schema-tools.test.d.ts.map +1 -0
- package/dist/__tests__/schema-tools.test.js +171 -0
- package/dist/__tests__/schema-tools.test.js.map +1 -0
- package/dist/__tests__/server-tools.test.d.ts +2 -0
- package/dist/__tests__/server-tools.test.d.ts.map +1 -0
- package/dist/__tests__/server-tools.test.js +94 -0
- package/dist/__tests__/server-tools.test.js.map +1 -0
- package/dist/__tests__/sql-tools.test.d.ts +2 -0
- package/dist/__tests__/sql-tools.test.d.ts.map +1 -0
- package/dist/__tests__/sql-tools.test.js +235 -0
- package/dist/__tests__/sql-tools.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +2 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +203 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- package/dist/db-manager.d.ts +17 -4
- package/dist/db-manager.d.ts.map +1 -1
- package/dist/db-manager.js +143 -26
- package/dist/db-manager.js.map +1 -1
- package/dist/index.js +62 -26
- package/dist/index.js.map +1 -1
- package/dist/tools/analysis-tools.d.ts +1 -0
- package/dist/tools/analysis-tools.d.ts.map +1 -1
- package/dist/tools/analysis-tools.js +158 -81
- package/dist/tools/analysis-tools.js.map +1 -1
- package/dist/tools/index.js +4 -20
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/schema-tools.d.ts.map +1 -1
- package/dist/tools/schema-tools.js +71 -40
- package/dist/tools/schema-tools.js.map +1 -1
- package/dist/tools/server-tools.d.ts +11 -1
- package/dist/tools/server-tools.d.ts.map +1 -1
- package/dist/tools/server-tools.js +23 -14
- package/dist/tools/server-tools.js.map +1 -1
- package/dist/tools/sql-tools.d.ts.map +1 -1
- package/dist/tools/sql-tools.js +88 -61
- package/dist/tools/sql-tools.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -2
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/validation.d.ts +27 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +133 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +8 -2
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const orderBy = args.orderBy || 'total_time';
|
|
12
|
-
const minCalls = args.minCalls || 1;
|
|
1
|
+
import { getDbManager } from '../db-manager.js';
|
|
2
|
+
import { validatePositiveInteger, isReadOnlySql } from '../utils/validation.js';
|
|
3
|
+
const MAX_QUERIES_TO_ANALYZE = 10;
|
|
4
|
+
export async function getTopQueries(args) {
|
|
5
|
+
const dbManager = getDbManager();
|
|
6
|
+
const limit = validatePositiveInteger(args.limit, 'limit', 1, 100) || 10;
|
|
7
|
+
const minCalls = validatePositiveInteger(args.minCalls, 'minCalls', 1, 1000000) || 1;
|
|
8
|
+
// Validate orderBy
|
|
9
|
+
const validOrderBy = ['total_time', 'mean_time', 'calls'];
|
|
10
|
+
const orderBy = validOrderBy.includes(args.orderBy || '') ? args.orderBy : 'total_time';
|
|
13
11
|
// Check if pg_stat_statements extension is available
|
|
14
12
|
const extCheck = await dbManager.query(`
|
|
15
13
|
SELECT EXISTS (
|
|
@@ -19,8 +17,13 @@ async function getTopQueries(args) {
|
|
|
19
17
|
if (!extCheck.rows[0].has_extension) {
|
|
20
18
|
throw new Error('pg_stat_statements extension is not installed. Please install it to use this feature.');
|
|
21
19
|
}
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
// Map order by to actual column names (safe since we validated above)
|
|
21
|
+
const orderColumnMap = {
|
|
22
|
+
'total_time': 'total_exec_time',
|
|
23
|
+
'mean_time': 'mean_exec_time',
|
|
24
|
+
'calls': 'calls'
|
|
25
|
+
};
|
|
26
|
+
const orderColumn = orderColumnMap[orderBy];
|
|
24
27
|
const query = `
|
|
25
28
|
SELECT
|
|
26
29
|
query,
|
|
@@ -39,6 +42,12 @@ async function getTopQueries(args) {
|
|
|
39
42
|
}
|
|
40
43
|
catch (error) {
|
|
41
44
|
// Try older column names (PostgreSQL < 13)
|
|
45
|
+
const legacyOrderColumnMap = {
|
|
46
|
+
'total_time': 'total_time',
|
|
47
|
+
'mean_time': 'mean_time',
|
|
48
|
+
'calls': 'calls'
|
|
49
|
+
};
|
|
50
|
+
const legacyOrderColumn = legacyOrderColumnMap[orderBy];
|
|
42
51
|
const legacyQuery = `
|
|
43
52
|
SELECT
|
|
44
53
|
query,
|
|
@@ -48,23 +57,30 @@ async function getTopQueries(args) {
|
|
|
48
57
|
rows
|
|
49
58
|
FROM pg_stat_statements
|
|
50
59
|
WHERE calls >= $1
|
|
51
|
-
ORDER BY ${
|
|
60
|
+
ORDER BY ${legacyOrderColumn} DESC
|
|
52
61
|
LIMIT $2
|
|
53
62
|
`;
|
|
54
63
|
const result = await dbManager.query(legacyQuery, [minCalls, limit]);
|
|
55
64
|
return result.rows;
|
|
56
65
|
}
|
|
57
66
|
}
|
|
58
|
-
async function analyzeWorkloadIndexes(args) {
|
|
59
|
-
const
|
|
60
|
-
const topCount = args.topQueriesCount || 20;
|
|
67
|
+
export async function analyzeWorkloadIndexes(args) {
|
|
68
|
+
const topCount = validatePositiveInteger(args.topQueriesCount, 'topQueriesCount', 1, 50) || 20;
|
|
61
69
|
// Get top slow queries
|
|
62
70
|
const slowQueries = await getTopQueries({ limit: topCount, orderBy: 'total_time' });
|
|
63
71
|
const recommendations = [];
|
|
64
72
|
// Analyze each query for potential index improvements
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
73
|
+
// Limit to prevent excessive processing
|
|
74
|
+
const queriesToAnalyze = slowQueries.slice(0, 20);
|
|
75
|
+
for (const query of queriesToAnalyze) {
|
|
76
|
+
try {
|
|
77
|
+
const queryRecs = await analyzeQueryForIndexes(query.query);
|
|
78
|
+
recommendations.push(...queryRecs);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
// Skip queries that fail analysis
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
68
84
|
}
|
|
69
85
|
// Deduplicate recommendations
|
|
70
86
|
const uniqueRecs = deduplicateRecommendations(recommendations);
|
|
@@ -73,16 +89,41 @@ async function analyzeWorkloadIndexes(args) {
|
|
|
73
89
|
recommendations: uniqueRecs
|
|
74
90
|
};
|
|
75
91
|
}
|
|
76
|
-
async function analyzeQueryIndexes(args) {
|
|
77
|
-
if (args.queries
|
|
78
|
-
throw new Error('
|
|
92
|
+
export async function analyzeQueryIndexes(args) {
|
|
93
|
+
if (!args.queries || !Array.isArray(args.queries)) {
|
|
94
|
+
throw new Error('queries parameter is required and must be an array');
|
|
95
|
+
}
|
|
96
|
+
if (args.queries.length === 0) {
|
|
97
|
+
throw new Error('queries array must contain at least one query');
|
|
98
|
+
}
|
|
99
|
+
if (args.queries.length > MAX_QUERIES_TO_ANALYZE) {
|
|
100
|
+
throw new Error(`Maximum ${MAX_QUERIES_TO_ANALYZE} queries allowed per analysis`);
|
|
79
101
|
}
|
|
80
102
|
const queryAnalysis = [];
|
|
81
103
|
const allRecommendations = [];
|
|
82
104
|
for (const query of args.queries) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
105
|
+
if (!query || typeof query !== 'string') {
|
|
106
|
+
queryAnalysis.push({ query: String(query), recommendations: [], error: 'Invalid query' });
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
// Only analyze read-only queries for security
|
|
110
|
+
const { isReadOnly, reason } = isReadOnlySql(query);
|
|
111
|
+
if (!isReadOnly) {
|
|
112
|
+
queryAnalysis.push({ query, recommendations: [], error: `Cannot analyze: ${reason}` });
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
const recommendations = await analyzeQueryForIndexes(query);
|
|
117
|
+
queryAnalysis.push({ query, recommendations });
|
|
118
|
+
allRecommendations.push(...recommendations);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
queryAnalysis.push({
|
|
122
|
+
query,
|
|
123
|
+
recommendations: [],
|
|
124
|
+
error: error instanceof Error ? error.message : String(error)
|
|
125
|
+
});
|
|
126
|
+
}
|
|
86
127
|
}
|
|
87
128
|
return {
|
|
88
129
|
queryAnalysis,
|
|
@@ -90,30 +131,41 @@ async function analyzeQueryIndexes(args) {
|
|
|
90
131
|
};
|
|
91
132
|
}
|
|
92
133
|
async function analyzeQueryForIndexes(query) {
|
|
93
|
-
const dbManager =
|
|
134
|
+
const dbManager = getDbManager();
|
|
94
135
|
const recommendations = [];
|
|
136
|
+
// Validate query is read-only before analyzing
|
|
137
|
+
const { isReadOnly, reason } = isReadOnlySql(query);
|
|
138
|
+
if (!isReadOnly) {
|
|
139
|
+
throw new Error(`Cannot analyze write query: ${reason}`);
|
|
140
|
+
}
|
|
95
141
|
try {
|
|
96
|
-
// Get the execution plan
|
|
142
|
+
// Get the execution plan - EXPLAIN without ANALYZE is safe
|
|
97
143
|
const explainResult = await dbManager.query(`EXPLAIN (FORMAT JSON) ${query}`);
|
|
144
|
+
if (!explainResult.rows.length || !explainResult.rows[0]['QUERY PLAN']) {
|
|
145
|
+
return recommendations;
|
|
146
|
+
}
|
|
98
147
|
const plan = explainResult.rows[0]['QUERY PLAN'][0];
|
|
148
|
+
if (!plan || !plan.Plan) {
|
|
149
|
+
return recommendations;
|
|
150
|
+
}
|
|
99
151
|
// Analyze the plan for sequential scans on large tables
|
|
100
152
|
const seqScans = findSequentialScans(plan.Plan);
|
|
101
153
|
for (const scan of seqScans) {
|
|
102
154
|
// Check if there's a filter condition that could benefit from an index
|
|
103
|
-
if (scan.filter) {
|
|
155
|
+
if (scan.filter && scan.table) {
|
|
104
156
|
const columns = extractColumnsFromFilter(scan.filter);
|
|
105
157
|
if (columns.length > 0) {
|
|
106
158
|
recommendations.push({
|
|
107
159
|
table: scan.table,
|
|
108
160
|
columns,
|
|
109
161
|
index_type: 'btree',
|
|
110
|
-
reason: `Sequential scan with filter on ${columns.join(', ')}.
|
|
162
|
+
reason: `Sequential scan with filter on ${columns.join(', ')}. Estimated cost: ${scan.cost || 'unknown'}`,
|
|
111
163
|
estimated_improvement: 'Could significantly reduce query time for filtered queries'
|
|
112
164
|
});
|
|
113
165
|
}
|
|
114
166
|
}
|
|
115
167
|
// Check for sort operations that could use indexes
|
|
116
|
-
if (scan.sortKey) {
|
|
168
|
+
if (scan.sortKey && scan.table) {
|
|
117
169
|
recommendations.push({
|
|
118
170
|
table: scan.table,
|
|
119
171
|
columns: [scan.sortKey],
|
|
@@ -126,13 +178,14 @@ async function analyzeQueryForIndexes(query) {
|
|
|
126
178
|
}
|
|
127
179
|
catch (error) {
|
|
128
180
|
// Query analysis failed, skip this query
|
|
181
|
+
throw error;
|
|
129
182
|
}
|
|
130
183
|
return recommendations;
|
|
131
184
|
}
|
|
132
185
|
function findSequentialScans(node, scans = []) {
|
|
133
|
-
if (!node)
|
|
186
|
+
if (!node || typeof node !== 'object')
|
|
134
187
|
return scans;
|
|
135
|
-
if (node['Node Type'] === 'Seq Scan') {
|
|
188
|
+
if (node['Node Type'] === 'Seq Scan' && node['Relation Name']) {
|
|
136
189
|
scans.push({
|
|
137
190
|
table: node['Relation Name'],
|
|
138
191
|
filter: node['Filter'],
|
|
@@ -140,15 +193,20 @@ function findSequentialScans(node, scans = []) {
|
|
|
140
193
|
rows: node['Plan Rows']
|
|
141
194
|
});
|
|
142
195
|
}
|
|
143
|
-
if (node['Sort Key']) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
196
|
+
if (node['Sort Key'] && Array.isArray(node['Sort Key']) && node['Sort Key'].length > 0) {
|
|
197
|
+
const sortKey = String(node['Sort Key'][0]);
|
|
198
|
+
// Clean up the sort key to extract column name
|
|
199
|
+
const cleanSortKey = sortKey.replace(/\s+(ASC|DESC|NULLS\s+(FIRST|LAST))/gi, '').trim();
|
|
200
|
+
if (cleanSortKey && node['Relation Name']) {
|
|
201
|
+
scans.push({
|
|
202
|
+
table: node['Relation Name'],
|
|
203
|
+
sortKey: cleanSortKey,
|
|
204
|
+
cost: node['Total Cost']
|
|
205
|
+
});
|
|
206
|
+
}
|
|
149
207
|
}
|
|
150
208
|
// Recursively check child nodes
|
|
151
|
-
if (node.Plans) {
|
|
209
|
+
if (Array.isArray(node.Plans)) {
|
|
152
210
|
for (const child of node.Plans) {
|
|
153
211
|
findSequentialScans(child, scans);
|
|
154
212
|
}
|
|
@@ -156,14 +214,20 @@ function findSequentialScans(node, scans = []) {
|
|
|
156
214
|
return scans;
|
|
157
215
|
}
|
|
158
216
|
function extractColumnsFromFilter(filter) {
|
|
217
|
+
if (!filter || typeof filter !== 'string')
|
|
218
|
+
return [];
|
|
159
219
|
// Simple extraction of column names from filter expressions
|
|
160
220
|
const columns = [];
|
|
221
|
+
// Match patterns like (column_name = ...) or (column_name > ...)
|
|
161
222
|
const matches = filter.match(/\((\w+)\s*[=<>!]+/g);
|
|
162
223
|
if (matches) {
|
|
163
224
|
for (const match of matches) {
|
|
164
225
|
const col = match.match(/\((\w+)/);
|
|
165
|
-
if (col) {
|
|
166
|
-
|
|
226
|
+
if (col && col[1]) {
|
|
227
|
+
// Basic validation - only alphanumeric and underscore
|
|
228
|
+
if (/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(col[1])) {
|
|
229
|
+
columns.push(col[1]);
|
|
230
|
+
}
|
|
167
231
|
}
|
|
168
232
|
}
|
|
169
233
|
}
|
|
@@ -172,15 +236,17 @@ function extractColumnsFromFilter(filter) {
|
|
|
172
236
|
function deduplicateRecommendations(recommendations) {
|
|
173
237
|
const seen = new Map();
|
|
174
238
|
for (const rec of recommendations) {
|
|
175
|
-
|
|
239
|
+
if (!rec.table || !rec.columns || !Array.isArray(rec.columns))
|
|
240
|
+
continue;
|
|
241
|
+
const key = `${rec.table}:${[...rec.columns].sort().join(',')}:${rec.index_type}`;
|
|
176
242
|
if (!seen.has(key)) {
|
|
177
243
|
seen.set(key, rec);
|
|
178
244
|
}
|
|
179
245
|
}
|
|
180
246
|
return Array.from(seen.values());
|
|
181
247
|
}
|
|
182
|
-
async function analyzeDbHealth() {
|
|
183
|
-
const dbManager =
|
|
248
|
+
export async function analyzeDbHealth() {
|
|
249
|
+
const dbManager = getDbManager();
|
|
184
250
|
const results = [];
|
|
185
251
|
// 1. Buffer Cache Hit Rate
|
|
186
252
|
try {
|
|
@@ -188,23 +254,26 @@ async function analyzeDbHealth() {
|
|
|
188
254
|
SELECT
|
|
189
255
|
sum(heap_blks_read) as heap_read,
|
|
190
256
|
sum(heap_blks_hit) as heap_hit,
|
|
191
|
-
|
|
257
|
+
CASE WHEN sum(heap_blks_hit) + sum(heap_blks_read) > 0
|
|
258
|
+
THEN sum(heap_blks_hit)::float / (sum(heap_blks_hit) + sum(heap_blks_read))::float
|
|
259
|
+
ELSE 0
|
|
260
|
+
END as ratio
|
|
192
261
|
FROM pg_statio_user_tables
|
|
193
262
|
`);
|
|
194
|
-
const ratio = parseFloat(cacheResult.rows[0]
|
|
263
|
+
const ratio = parseFloat(cacheResult.rows[0]?.ratio) || 0;
|
|
195
264
|
let status = 'healthy';
|
|
196
|
-
if (ratio < 0.9)
|
|
265
|
+
if (ratio < 0.9 && ratio > 0)
|
|
197
266
|
status = 'warning';
|
|
198
|
-
if (ratio < 0.8)
|
|
267
|
+
if (ratio < 0.8 && ratio > 0)
|
|
199
268
|
status = 'critical';
|
|
200
269
|
results.push({
|
|
201
270
|
category: 'Buffer Cache Hit Rate',
|
|
202
271
|
status,
|
|
203
|
-
message: `Cache hit ratio: ${(ratio * 100).toFixed(2)}
|
|
272
|
+
message: ratio > 0 ? `Cache hit ratio: ${(ratio * 100).toFixed(2)}%` : 'No data available',
|
|
204
273
|
details: {
|
|
205
|
-
heap_read: cacheResult.rows[0]
|
|
206
|
-
heap_hit: cacheResult.rows[0]
|
|
207
|
-
recommendation: ratio < 0.9 ? 'Consider increasing shared_buffers' : 'Good cache performance'
|
|
274
|
+
heap_read: cacheResult.rows[0]?.heap_read || 0,
|
|
275
|
+
heap_hit: cacheResult.rows[0]?.heap_hit || 0,
|
|
276
|
+
recommendation: ratio < 0.9 && ratio > 0 ? 'Consider increasing shared_buffers' : 'Good cache performance'
|
|
208
277
|
}
|
|
209
278
|
});
|
|
210
279
|
}
|
|
@@ -212,7 +281,7 @@ async function analyzeDbHealth() {
|
|
|
212
281
|
results.push({
|
|
213
282
|
category: 'Buffer Cache Hit Rate',
|
|
214
283
|
status: 'warning',
|
|
215
|
-
message: `Could not check buffer cache: ${error}`
|
|
284
|
+
message: `Could not check buffer cache: ${error instanceof Error ? error.message : String(error)}`
|
|
216
285
|
});
|
|
217
286
|
}
|
|
218
287
|
// 2. Connection Health
|
|
@@ -228,21 +297,24 @@ async function analyzeDbHealth() {
|
|
|
228
297
|
WHERE backend_type = 'client backend'
|
|
229
298
|
`);
|
|
230
299
|
const row = connResult.rows[0];
|
|
231
|
-
const
|
|
300
|
+
const totalConns = parseInt(row?.total_connections) || 0;
|
|
301
|
+
const maxConns = parseInt(row?.max_connections) || 100;
|
|
302
|
+
const usageRatio = maxConns > 0 ? totalConns / maxConns : 0;
|
|
232
303
|
let status = 'healthy';
|
|
233
304
|
if (usageRatio > 0.7)
|
|
234
305
|
status = 'warning';
|
|
235
306
|
if (usageRatio > 0.9)
|
|
236
307
|
status = 'critical';
|
|
308
|
+
const idleInTx = parseInt(row?.idle_in_transaction) || 0;
|
|
237
309
|
results.push({
|
|
238
310
|
category: 'Connection Health',
|
|
239
311
|
status,
|
|
240
|
-
message: `Using ${
|
|
312
|
+
message: `Using ${totalConns}/${maxConns} connections (${(usageRatio * 100).toFixed(1)}%)`,
|
|
241
313
|
details: {
|
|
242
|
-
active: row
|
|
243
|
-
idle: row
|
|
244
|
-
idle_in_transaction:
|
|
245
|
-
recommendation:
|
|
314
|
+
active: parseInt(row?.active) || 0,
|
|
315
|
+
idle: parseInt(row?.idle) || 0,
|
|
316
|
+
idle_in_transaction: idleInTx,
|
|
317
|
+
recommendation: idleInTx > 5 ? 'Check for long-running idle transactions' : 'Connection usage healthy'
|
|
246
318
|
}
|
|
247
319
|
});
|
|
248
320
|
}
|
|
@@ -250,20 +322,23 @@ async function analyzeDbHealth() {
|
|
|
250
322
|
results.push({
|
|
251
323
|
category: 'Connection Health',
|
|
252
324
|
status: 'warning',
|
|
253
|
-
message: `Could not check connections: ${error}`
|
|
325
|
+
message: `Could not check connections: ${error instanceof Error ? error.message : String(error)}`
|
|
254
326
|
});
|
|
255
327
|
}
|
|
256
328
|
// 3. Invalid Indexes
|
|
257
329
|
try {
|
|
258
330
|
const indexResult = await dbManager.query(`
|
|
259
331
|
SELECT
|
|
260
|
-
schemaname,
|
|
261
|
-
tablename,
|
|
262
|
-
indexname
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
JOIN
|
|
266
|
-
|
|
332
|
+
n.nspname as schemaname,
|
|
333
|
+
t.relname as tablename,
|
|
334
|
+
i.relname as indexname
|
|
335
|
+
FROM pg_index ix
|
|
336
|
+
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
337
|
+
JOIN pg_class t ON t.oid = ix.indrelid
|
|
338
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
339
|
+
WHERE NOT ix.indisvalid
|
|
340
|
+
AND n.nspname NOT IN ('pg_catalog', 'pg_toast', 'information_schema')
|
|
341
|
+
LIMIT 100
|
|
267
342
|
`);
|
|
268
343
|
const status = indexResult.rows.length > 0 ? 'critical' : 'healthy';
|
|
269
344
|
results.push({
|
|
@@ -308,7 +383,7 @@ async function analyzeDbHealth() {
|
|
|
308
383
|
results.push({
|
|
309
384
|
category: 'Unused Indexes',
|
|
310
385
|
status: 'warning',
|
|
311
|
-
message: `Could not check unused indexes: ${error}`
|
|
386
|
+
message: `Could not check unused indexes: ${error instanceof Error ? error.message : String(error)}`
|
|
312
387
|
});
|
|
313
388
|
}
|
|
314
389
|
// 5. Duplicate Indexes
|
|
@@ -316,16 +391,18 @@ async function analyzeDbHealth() {
|
|
|
316
391
|
const dupResult = await dbManager.query(`
|
|
317
392
|
SELECT
|
|
318
393
|
pg_size_pretty(sum(pg_relation_size(idx))::bigint) as total_size,
|
|
319
|
-
array_agg(idx) as indexes,
|
|
320
|
-
(array_agg(indrelid))[1]::regclass as table_name
|
|
394
|
+
array_agg(idx::text) as indexes,
|
|
395
|
+
(array_agg(indrelid))[1]::regclass::text as table_name
|
|
321
396
|
FROM (
|
|
322
397
|
SELECT indexrelid::regclass as idx,
|
|
323
398
|
indrelid,
|
|
324
399
|
indkey as columns
|
|
325
400
|
FROM pg_index
|
|
401
|
+
WHERE indrelid IN (SELECT oid FROM pg_class WHERE relnamespace = 'public'::regnamespace)
|
|
326
402
|
) sub
|
|
327
403
|
GROUP BY indrelid, columns
|
|
328
404
|
HAVING count(*) > 1
|
|
405
|
+
LIMIT 50
|
|
329
406
|
`);
|
|
330
407
|
const status = dupResult.rows.length > 0 ? 'warning' : 'healthy';
|
|
331
408
|
results.push({
|
|
@@ -362,7 +439,7 @@ async function analyzeDbHealth() {
|
|
|
362
439
|
LIMIT 20
|
|
363
440
|
`);
|
|
364
441
|
let status = 'healthy';
|
|
365
|
-
const needsVacuum = vacuumResult.rows.filter((r) => r.dead_ratio > 10);
|
|
442
|
+
const needsVacuum = vacuumResult.rows.filter((r) => parseFloat(r.dead_ratio) > 10);
|
|
366
443
|
if (needsVacuum.length > 0)
|
|
367
444
|
status = 'warning';
|
|
368
445
|
if (needsVacuum.length > 5)
|
|
@@ -378,7 +455,7 @@ async function analyzeDbHealth() {
|
|
|
378
455
|
results.push({
|
|
379
456
|
category: 'Vacuum Health',
|
|
380
457
|
status: 'warning',
|
|
381
|
-
message: `Could not check vacuum status: ${error}`
|
|
458
|
+
message: `Could not check vacuum status: ${error instanceof Error ? error.message : String(error)}`
|
|
382
459
|
});
|
|
383
460
|
}
|
|
384
461
|
// 7. Sequence Limits
|
|
@@ -394,16 +471,15 @@ async function analyzeDbHealth() {
|
|
|
394
471
|
ELSE 0
|
|
395
472
|
END as usage_percent
|
|
396
473
|
FROM pg_sequences
|
|
397
|
-
WHERE
|
|
398
|
-
|
|
399
|
-
ELSE false
|
|
400
|
-
END
|
|
474
|
+
WHERE max_value > 0
|
|
475
|
+
AND 100.0 * last_value / max_value > 50
|
|
401
476
|
ORDER BY usage_percent DESC
|
|
477
|
+
LIMIT 20
|
|
402
478
|
`);
|
|
403
479
|
let status = 'healthy';
|
|
404
|
-
if (seqResult.rows.some((r) => r.usage_percent > 80))
|
|
480
|
+
if (seqResult.rows.some((r) => parseFloat(r.usage_percent) > 80))
|
|
405
481
|
status = 'warning';
|
|
406
|
-
if (seqResult.rows.some((r) => r.usage_percent > 95))
|
|
482
|
+
if (seqResult.rows.some((r) => parseFloat(r.usage_percent) > 95))
|
|
407
483
|
status = 'critical';
|
|
408
484
|
results.push({
|
|
409
485
|
category: 'Sequence Limits',
|
|
@@ -424,10 +500,11 @@ async function analyzeDbHealth() {
|
|
|
424
500
|
const constraintResult = await dbManager.query(`
|
|
425
501
|
SELECT
|
|
426
502
|
conname,
|
|
427
|
-
conrelid::regclass as table_name,
|
|
503
|
+
conrelid::regclass::text as table_name,
|
|
428
504
|
contype
|
|
429
505
|
FROM pg_constraint
|
|
430
506
|
WHERE NOT convalidated
|
|
507
|
+
LIMIT 50
|
|
431
508
|
`);
|
|
432
509
|
const status = constraintResult.rows.length > 0 ? 'warning' : 'healthy';
|
|
433
510
|
results.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-tools.js","sourceRoot":"","sources":["../../src/tools/analysis-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analysis-tools.js","sourceRoot":"","sources":["../../src/tools/analysis-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./server-tools.js"), exports);
|
|
18
|
-
__exportStar(require("./schema-tools.js"), exports);
|
|
19
|
-
__exportStar(require("./sql-tools.js"), exports);
|
|
20
|
-
__exportStar(require("./analysis-tools.js"), exports);
|
|
1
|
+
export * from './server-tools.js';
|
|
2
|
+
export * from './schema-tools.js';
|
|
3
|
+
export * from './sql-tools.js';
|
|
4
|
+
export * from './analysis-tools.js';
|
|
21
5
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-tools.d.ts","sourceRoot":"","sources":["../../src/tools/schema-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-tools.d.ts","sourceRoot":"","sources":["../../src/tools/schema-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG3F,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAqBxB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAuGvB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;CAC5C,GAAG,OAAO,CAAC;IACV,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAmHD"}
|