@tejasanik/postgres-mcp-server 1.0.0 → 1.2.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.
Files changed (63) hide show
  1. package/README.md +90 -13
  2. package/dist/__tests__/analysis-tools.test.d.ts +2 -0
  3. package/dist/__tests__/analysis-tools.test.d.ts.map +1 -0
  4. package/dist/__tests__/analysis-tools.test.js +294 -0
  5. package/dist/__tests__/analysis-tools.test.js.map +1 -0
  6. package/dist/__tests__/db-manager.test.d.ts +2 -0
  7. package/dist/__tests__/db-manager.test.d.ts.map +1 -0
  8. package/dist/__tests__/db-manager.test.js +243 -0
  9. package/dist/__tests__/db-manager.test.js.map +1 -0
  10. package/dist/__tests__/mcp-server.test.d.ts +13 -0
  11. package/dist/__tests__/mcp-server.test.d.ts.map +1 -0
  12. package/dist/__tests__/mcp-server.test.js +131 -0
  13. package/dist/__tests__/mcp-server.test.js.map +1 -0
  14. package/dist/__tests__/schema-tools.test.d.ts +2 -0
  15. package/dist/__tests__/schema-tools.test.d.ts.map +1 -0
  16. package/dist/__tests__/schema-tools.test.js +171 -0
  17. package/dist/__tests__/schema-tools.test.js.map +1 -0
  18. package/dist/__tests__/server-tools.test.d.ts +2 -0
  19. package/dist/__tests__/server-tools.test.d.ts.map +1 -0
  20. package/dist/__tests__/server-tools.test.js +94 -0
  21. package/dist/__tests__/server-tools.test.js.map +1 -0
  22. package/dist/__tests__/sql-tools.test.d.ts +2 -0
  23. package/dist/__tests__/sql-tools.test.d.ts.map +1 -0
  24. package/dist/__tests__/sql-tools.test.js +235 -0
  25. package/dist/__tests__/sql-tools.test.js.map +1 -0
  26. package/dist/__tests__/validation.test.d.ts +2 -0
  27. package/dist/__tests__/validation.test.d.ts.map +1 -0
  28. package/dist/__tests__/validation.test.js +203 -0
  29. package/dist/__tests__/validation.test.js.map +1 -0
  30. package/dist/db-manager.d.ts +17 -4
  31. package/dist/db-manager.d.ts.map +1 -1
  32. package/dist/db-manager.js +164 -26
  33. package/dist/db-manager.js.map +1 -1
  34. package/dist/index.js +62 -26
  35. package/dist/index.js.map +1 -1
  36. package/dist/tools/analysis-tools.d.ts +1 -0
  37. package/dist/tools/analysis-tools.d.ts.map +1 -1
  38. package/dist/tools/analysis-tools.js +158 -81
  39. package/dist/tools/analysis-tools.js.map +1 -1
  40. package/dist/tools/index.js +4 -20
  41. package/dist/tools/index.js.map +1 -1
  42. package/dist/tools/schema-tools.d.ts.map +1 -1
  43. package/dist/tools/schema-tools.js +71 -40
  44. package/dist/tools/schema-tools.js.map +1 -1
  45. package/dist/tools/server-tools.d.ts +11 -1
  46. package/dist/tools/server-tools.d.ts.map +1 -1
  47. package/dist/tools/server-tools.js +23 -14
  48. package/dist/tools/server-tools.js.map +1 -1
  49. package/dist/tools/sql-tools.d.ts.map +1 -1
  50. package/dist/tools/sql-tools.js +88 -61
  51. package/dist/tools/sql-tools.js.map +1 -1
  52. package/dist/types.d.ts +19 -0
  53. package/dist/types.d.ts.map +1 -1
  54. package/dist/types.js +1 -2
  55. package/dist/utils/index.d.ts +2 -0
  56. package/dist/utils/index.d.ts.map +1 -0
  57. package/dist/utils/index.js +2 -0
  58. package/dist/utils/index.js.map +1 -0
  59. package/dist/utils/validation.d.ts +27 -0
  60. package/dist/utils/validation.d.ts.map +1 -0
  61. package/dist/utils/validation.js +133 -0
  62. package/dist/utils/validation.js.map +1 -0
  63. package/package.json +8 -2
@@ -1,15 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTopQueries = getTopQueries;
4
- exports.analyzeWorkloadIndexes = analyzeWorkloadIndexes;
5
- exports.analyzeQueryIndexes = analyzeQueryIndexes;
6
- exports.analyzeDbHealth = analyzeDbHealth;
7
- const db_manager_js_1 = require("../db-manager.js");
8
- async function getTopQueries(args) {
9
- const dbManager = (0, db_manager_js_1.getDbManager)();
10
- const limit = args.limit || 10;
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
- const orderColumn = orderBy === 'total_time' ? 'total_exec_time' :
23
- orderBy === 'mean_time' ? 'mean_exec_time' : 'calls';
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 ${orderBy === 'total_time' ? 'total_time' : orderBy === 'mean_time' ? 'mean_time' : 'calls'} DESC
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 dbManager = (0, db_manager_js_1.getDbManager)();
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
- for (const query of slowQueries) {
66
- const queryRecs = await analyzeQueryForIndexes(query.query);
67
- recommendations.push(...queryRecs);
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.length > 10) {
78
- throw new Error('Maximum 10 queries allowed per analysis');
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
- const recommendations = await analyzeQueryForIndexes(query);
84
- queryAnalysis.push({ query, recommendations });
85
- allRecommendations.push(...recommendations);
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 = (0, db_manager_js_1.getDbManager)();
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(', ')}. Query cost: ${scan.cost}`,
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
- scans.push({
145
- table: node['Relation Name'] || 'unknown',
146
- sortKey: node['Sort Key'][0],
147
- cost: node['Total Cost']
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
- columns.push(col[1]);
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
- const key = `${rec.table}:${rec.columns.sort().join(',')}:${rec.index_type}`;
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 = (0, db_manager_js_1.getDbManager)();
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
- sum(heap_blks_hit) / NULLIF(sum(heap_blks_hit) + sum(heap_blks_read), 0) as ratio
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].ratio) || 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].heap_read,
206
- heap_hit: cacheResult.rows[0].heap_hit,
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 usageRatio = row.total_connections / row.max_connections;
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 ${row.total_connections}/${row.max_connections} connections (${(usageRatio * 100).toFixed(1)}%)`,
312
+ message: `Using ${totalConns}/${maxConns} connections (${(usageRatio * 100).toFixed(1)}%)`,
241
313
  details: {
242
- active: row.active,
243
- idle: row.idle,
244
- idle_in_transaction: row.idle_in_transaction,
245
- recommendation: row.idle_in_transaction > 5 ? 'Check for long-running idle transactions' : 'Connection usage healthy'
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
- pg_get_indexdef(i.indexrelid) as indexdef
264
- FROM pg_indexes
265
- JOIN pg_index i ON i.indexrelid = (schemaname || '.' || indexname)::regclass
266
- WHERE NOT i.indisvalid
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 CASE WHEN max_value > 0
398
- THEN 100.0 * last_value / max_value > 50
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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"}
@@ -1,21 +1,5 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,oDAAkC;AAClC,iDAA+B;AAC/B,sDAAoC"}
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;AAE3F,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,CA+EvB;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,CAmGD"}
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"}