@neverinfamous/postgres-mcp 1.2.0 → 2.0.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 +202 -148
- package/dist/__tests__/benchmarks/codemode.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/codemode.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/codemode.bench.js +159 -0
- package/dist/__tests__/benchmarks/codemode.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/connection-pool.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/connection-pool.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/connection-pool.bench.js +123 -0
- package/dist/__tests__/benchmarks/connection-pool.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts +11 -0
- package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/handler-dispatch.bench.js +199 -0
- package/dist/__tests__/benchmarks/handler-dispatch.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts +15 -0
- package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/logger-sanitization.bench.js +155 -0
- package/dist/__tests__/benchmarks/logger-sanitization.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.js +181 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts +11 -0
- package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/schema-parsing.bench.js +209 -0
- package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts +9 -0
- package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/tool-filtering.bench.js +83 -0
- package/dist/__tests__/benchmarks/tool-filtering.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/transport-auth.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/transport-auth.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/transport-auth.bench.js +128 -0
- package/dist/__tests__/benchmarks/transport-auth.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/utilities.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/utilities.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/utilities.bench.js +164 -0
- package/dist/__tests__/benchmarks/utilities.bench.js.map +1 -0
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
- package/dist/adapters/DatabaseAdapter.js +12 -0
- package/dist/adapters/DatabaseAdapter.js.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.js +56 -3
- package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
- package/dist/adapters/postgresql/prompts/ltree.js +2 -2
- package/dist/adapters/postgresql/prompts/ltree.js.map +1 -1
- package/dist/adapters/postgresql/schemas/admin.d.ts +10 -5
- package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/admin.js +10 -5
- package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.d.ts +45 -27
- package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.js +64 -26
- package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
- package/dist/adapters/postgresql/schemas/core.d.ts +53 -19
- package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/core.js +61 -17
- package/dist/adapters/postgresql/schemas/core.js.map +1 -1
- package/dist/adapters/postgresql/schemas/cron.d.ts +51 -32
- package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/cron.js +64 -44
- package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
- package/dist/adapters/postgresql/schemas/extensions.d.ts +224 -110
- package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/extensions.js +245 -96
- package/dist/adapters/postgresql/schemas/extensions.js.map +1 -1
- package/dist/adapters/postgresql/schemas/index.d.ts +7 -6
- package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/index.js +16 -8
- package/dist/adapters/postgresql/schemas/index.js.map +1 -1
- package/dist/adapters/postgresql/schemas/introspection.d.ts +445 -0
- package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/introspection.js +478 -0
- package/dist/adapters/postgresql/schemas/introspection.js.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb.d.ts +102 -42
- package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/jsonb.js +125 -30
- package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.d.ts +69 -36
- package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.js +98 -40
- package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.d.ts +21 -24
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.js +26 -14
- package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partman.d.ts +69 -0
- package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partman.js +46 -33
- package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.d.ts +97 -49
- package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.js +139 -34
- package/dist/adapters/postgresql/schemas/performance.js.map +1 -1
- package/dist/adapters/postgresql/schemas/postgis.d.ts +20 -0
- package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/postgis.js +40 -0
- package/dist/adapters/postgresql/schemas/postgis.js.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +50 -30
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.js +105 -33
- package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
- package/dist/adapters/postgresql/schemas/stats.d.ts +33 -20
- package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/stats.js +36 -20
- package/dist/adapters/postgresql/schemas/stats.js.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.d.ts +34 -19
- package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.js +52 -13
- package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
- package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/admin.js +272 -186
- package/dist/adapters/postgresql/tools/admin.js.map +1 -1
- package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/backup/dump.js +376 -350
- package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
- package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/citext.js +333 -243
- package/dist/adapters/postgresql/tools/citext.js.map +1 -1
- package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/codemode/index.js +2 -11
- package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/convenience.d.ts +9 -1
- package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/convenience.js +101 -19
- package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +48 -0
- package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/error-helpers.js +256 -0
- package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/health.js +18 -4
- package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/indexes.js +48 -6
- package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/objects.js +104 -85
- package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/query.js +100 -42
- package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.d.ts +51 -25
- package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.js +51 -25
- package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/tables.js +72 -32
- package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
- package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/cron.js +333 -206
- package/dist/adapters/postgresql/tools/cron.js.map +1 -1
- package/dist/adapters/postgresql/tools/introspection.d.ts +15 -0
- package/dist/adapters/postgresql/tools/introspection.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/introspection.js +1682 -0
- package/dist/adapters/postgresql/tools/introspection.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.js +394 -297
- package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/basic.js +686 -398
- package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/kcache.js +278 -246
- package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
- package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/ltree.js +137 -38
- package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
- package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/monitoring.js +86 -55
- package/dist/adapters/postgresql/tools/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partitioning.js +79 -15
- package/dist/adapters/postgresql/tools/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/management.js +43 -56
- package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
- package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/operations.js +137 -24
- package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/analysis.js +276 -165
- package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/explain.js +61 -21
- package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.js +52 -12
- package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/optimization.js +92 -81
- package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/stats.js +182 -60
- package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
- package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/pgcrypto.js +277 -102
- package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/advanced.js +298 -230
- package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/basic.js +370 -251
- package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/standalone.js +135 -51
- package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -1
- package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/schema.js +580 -233
- package/dist/adapters/postgresql/tools/schema.js.map +1 -1
- package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/stats/advanced.js +567 -506
- package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/stats/basic.js +340 -316
- package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/text.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/text.js +690 -337
- package/dist/adapters/postgresql/tools/text.js.map +1 -1
- package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/transactions.js +157 -50
- package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/advanced.js +18 -0
- package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.js +100 -53
- package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -1
- package/dist/auth/auth-context.d.ts +28 -0
- package/dist/auth/auth-context.d.ts.map +1 -0
- package/dist/auth/auth-context.js +37 -0
- package/dist/auth/auth-context.js.map +1 -0
- package/dist/auth/scope-map.d.ts +20 -0
- package/dist/auth/scope-map.d.ts.map +1 -0
- package/dist/auth/scope-map.js +40 -0
- package/dist/auth/scope-map.js.map +1 -0
- package/dist/auth/scopes.d.ts.map +1 -1
- package/dist/auth/scopes.js +2 -0
- package/dist/auth/scopes.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/codemode/api.d.ts +1 -0
- package/dist/codemode/api.d.ts.map +1 -1
- package/dist/codemode/api.js +35 -1
- package/dist/codemode/api.js.map +1 -1
- package/dist/codemode/index.d.ts +0 -2
- package/dist/codemode/index.d.ts.map +1 -1
- package/dist/codemode/index.js +0 -4
- package/dist/codemode/index.js.map +1 -1
- package/dist/codemode/sandbox.d.ts +14 -1
- package/dist/codemode/sandbox.d.ts.map +1 -1
- package/dist/codemode/sandbox.js +58 -19
- package/dist/codemode/sandbox.js.map +1 -1
- package/dist/codemode/types.d.ts.map +1 -1
- package/dist/codemode/types.js +3 -0
- package/dist/codemode/types.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +5 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +117 -31
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/filtering/ToolConstants.d.ts +22 -19
- package/dist/filtering/ToolConstants.d.ts.map +1 -1
- package/dist/filtering/ToolConstants.js +48 -37
- package/dist/filtering/ToolConstants.js.map +1 -1
- package/dist/filtering/ToolFilter.d.ts.map +1 -1
- package/dist/filtering/ToolFilter.js +10 -13
- package/dist/filtering/ToolFilter.js.map +1 -1
- package/dist/pool/ConnectionPool.js +1 -1
- package/dist/pool/ConnectionPool.js.map +1 -1
- package/dist/transports/http.d.ts +1 -0
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +75 -21
- package/dist/transports/http.js.map +1 -1
- package/dist/types/filtering.d.ts +2 -2
- package/dist/types/filtering.d.ts.map +1 -1
- package/dist/utils/icons.d.ts.map +1 -1
- package/dist/utils/icons.js +5 -0
- package/dist/utils/icons.js.map +1 -1
- package/dist/utils/where-clause.d.ts.map +1 -1
- package/dist/utils/where-clause.js +24 -0
- package/dist/utils/where-clause.js.map +1 -1
- package/package.json +20 -13
- package/dist/codemode/sandbox-factory.d.ts +0 -72
- package/dist/codemode/sandbox-factory.d.ts.map +0 -1
- package/dist/codemode/sandbox-factory.js +0 -88
- package/dist/codemode/sandbox-factory.js.map +0 -1
- package/dist/codemode/worker-sandbox.d.ts +0 -82
- package/dist/codemode/worker-sandbox.d.ts.map +0 -1
- package/dist/codemode/worker-sandbox.js +0 -244
- package/dist/codemode/worker-sandbox.js.map +0 -1
- package/dist/codemode/worker-script.d.ts +0 -8
- package/dist/codemode/worker-script.d.ts.map +0 -1
- package/dist/codemode/worker-script.js +0 -113
- package/dist/codemode/worker-script.js.map +0 -1
|
@@ -9,33 +9,76 @@ import { IndexStatsOutputSchema, TableStatsOutputSchema, StatStatementsOutputSch
|
|
|
9
9
|
const defaultToEmpty = (val) => val ?? {};
|
|
10
10
|
// Helper to coerce string numbers to JavaScript numbers (PostgreSQL returns BIGINT as strings)
|
|
11
11
|
const toNum = (val) => val === null || val === undefined ? null : Number(val);
|
|
12
|
+
/**
|
|
13
|
+
* P154: Validate that a table exists before executing performance queries.
|
|
14
|
+
* When a specific table/schema is provided, checks existence first to return
|
|
15
|
+
* a structured error instead of silently returning empty results.
|
|
16
|
+
*/
|
|
17
|
+
async function validatePerformanceTableExists(adapter, table, schema) {
|
|
18
|
+
// Only validate when a specific table or schema is requested
|
|
19
|
+
if (!table && !schema)
|
|
20
|
+
return null;
|
|
21
|
+
// Check schema existence first for granular error messages
|
|
22
|
+
if (schema) {
|
|
23
|
+
const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schema]);
|
|
24
|
+
if (!schemaResult.rows || schemaResult.rows.length === 0) {
|
|
25
|
+
return `Schema '${schema}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Check table existence within the schema
|
|
29
|
+
if (table) {
|
|
30
|
+
const targetSchema = schema ?? "public";
|
|
31
|
+
const tableResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.tables WHERE table_schema = $1 AND table_name = $2`, [targetSchema, table]);
|
|
32
|
+
if (!tableResult.rows || tableResult.rows.length === 0) {
|
|
33
|
+
return `Table '${targetSchema}.${table}' not found. Use pg_list_tables to see available tables.`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
12
38
|
export function createIndexStatsTool(adapter) {
|
|
13
39
|
// Define schema locally with limit parameter
|
|
14
|
-
const
|
|
40
|
+
const IndexStatsSchemaLocalBase = z.object({
|
|
15
41
|
table: z.string().optional().describe("Table name to filter indexes"),
|
|
16
42
|
schema: z.string().optional().describe("Schema name to filter indexes"),
|
|
17
43
|
limit: z
|
|
18
44
|
.number()
|
|
19
45
|
.optional()
|
|
20
46
|
.describe("Max rows to return (default: 50, use 0 for all)"),
|
|
21
|
-
})
|
|
47
|
+
});
|
|
48
|
+
const IndexStatsSchemaLocal = z.preprocess(defaultToEmpty, IndexStatsSchemaLocalBase);
|
|
22
49
|
return {
|
|
23
50
|
name: "pg_index_stats",
|
|
24
51
|
description: "Get index usage statistics.",
|
|
25
52
|
group: "performance",
|
|
26
|
-
inputSchema:
|
|
53
|
+
inputSchema: IndexStatsSchemaLocalBase,
|
|
27
54
|
outputSchema: IndexStatsOutputSchema,
|
|
28
55
|
annotations: readOnly("Index Stats"),
|
|
29
56
|
icons: getToolIcons("performance", readOnly("Index Stats")),
|
|
30
57
|
handler: async (params, _context) => {
|
|
31
58
|
const parsed = IndexStatsSchemaLocal.parse(params);
|
|
32
|
-
|
|
59
|
+
let { table, schema } = parsed;
|
|
60
|
+
// Parse schema from table if it contains a dot (e.g., 'myschema.orders')
|
|
61
|
+
if (table?.includes(".")) {
|
|
62
|
+
const parts = table.split(".");
|
|
63
|
+
schema = schema ?? parts[0];
|
|
64
|
+
table = parts[1] ?? table;
|
|
65
|
+
}
|
|
33
66
|
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 50);
|
|
67
|
+
// P154: Validate table/schema existence before querying
|
|
68
|
+
const validationError = await validatePerformanceTableExists(adapter, table, schema);
|
|
69
|
+
if (validationError !== null) {
|
|
70
|
+
return { success: false, error: validationError };
|
|
71
|
+
}
|
|
34
72
|
let whereClause = "schemaname NOT IN ('pg_catalog', 'information_schema')";
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
whereClause += ` AND
|
|
73
|
+
const queryParams = [];
|
|
74
|
+
if (schema) {
|
|
75
|
+
queryParams.push(schema);
|
|
76
|
+
whereClause += ` AND schemaname = $${String(queryParams.length)}`;
|
|
77
|
+
}
|
|
78
|
+
if (table) {
|
|
79
|
+
queryParams.push(table);
|
|
80
|
+
whereClause += ` AND relname = $${String(queryParams.length)}`;
|
|
81
|
+
}
|
|
39
82
|
const sql = `SELECT schemaname, relname as table_name, indexrelname as index_name,
|
|
40
83
|
idx_scan as scans, idx_tup_read as tuples_read, idx_tup_fetch as tuples_fetched,
|
|
41
84
|
pg_size_pretty(pg_relation_size(indexrelid)) as size
|
|
@@ -43,7 +86,7 @@ export function createIndexStatsTool(adapter) {
|
|
|
43
86
|
WHERE ${whereClause}
|
|
44
87
|
ORDER BY idx_scan DESC
|
|
45
88
|
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
46
|
-
const result = await adapter.executeQuery(sql);
|
|
89
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
47
90
|
// Coerce numeric fields to JavaScript numbers
|
|
48
91
|
const indexes = (result.rows ?? []).map((row) => ({
|
|
49
92
|
...row,
|
|
@@ -58,43 +101,61 @@ export function createIndexStatsTool(adapter) {
|
|
|
58
101
|
// Add totalCount if results were limited
|
|
59
102
|
if (limit !== null && indexes.length === limit) {
|
|
60
103
|
const countSql = `SELECT COUNT(*) as total FROM pg_stat_user_indexes WHERE ${whereClause}`;
|
|
61
|
-
const countResult = await adapter.executeQuery(countSql);
|
|
104
|
+
const countResult = await adapter.executeQuery(countSql, queryParams);
|
|
62
105
|
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
63
106
|
response["truncated"] = true;
|
|
64
107
|
}
|
|
108
|
+
else {
|
|
109
|
+
response["truncated"] = false;
|
|
110
|
+
response["totalCount"] = indexes.length;
|
|
111
|
+
}
|
|
65
112
|
return response;
|
|
66
113
|
},
|
|
67
114
|
};
|
|
68
115
|
}
|
|
69
116
|
export function createTableStatsTool(adapter) {
|
|
70
|
-
const
|
|
71
|
-
table: z
|
|
72
|
-
.string()
|
|
73
|
-
.optional()
|
|
74
|
-
.describe("Table name (all tables if omitted)"),
|
|
117
|
+
const TableStatsSchemaLocalBase = z.object({
|
|
118
|
+
table: z.string().optional().describe("Table name (all tables if omitted)"),
|
|
75
119
|
schema: z.string().optional().describe("Schema name"),
|
|
76
120
|
limit: z
|
|
77
121
|
.number()
|
|
78
122
|
.optional()
|
|
79
123
|
.describe("Max rows to return (default: 50, use 0 for all)"),
|
|
80
|
-
})
|
|
124
|
+
});
|
|
125
|
+
const TableStatsSchemaLocal = z.preprocess(defaultToEmpty, TableStatsSchemaLocalBase);
|
|
81
126
|
return {
|
|
82
127
|
name: "pg_table_stats",
|
|
83
128
|
description: "Get table access statistics.",
|
|
84
129
|
group: "performance",
|
|
85
|
-
inputSchema:
|
|
130
|
+
inputSchema: TableStatsSchemaLocalBase,
|
|
86
131
|
outputSchema: TableStatsOutputSchema,
|
|
87
132
|
annotations: readOnly("Table Stats"),
|
|
88
133
|
icons: getToolIcons("performance", readOnly("Table Stats")),
|
|
89
134
|
handler: async (params, _context) => {
|
|
90
135
|
const parsed = TableStatsSchemaLocal.parse(params);
|
|
91
|
-
|
|
136
|
+
let { table, schema } = parsed;
|
|
137
|
+
// Parse schema from table if it contains a dot (e.g., 'myschema.orders')
|
|
138
|
+
if (table?.includes(".")) {
|
|
139
|
+
const parts = table.split(".");
|
|
140
|
+
schema = schema ?? parts[0];
|
|
141
|
+
table = parts[1] ?? table;
|
|
142
|
+
}
|
|
92
143
|
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 50);
|
|
144
|
+
// P154: Validate table/schema existence before querying
|
|
145
|
+
const validationError = await validatePerformanceTableExists(adapter, table, schema);
|
|
146
|
+
if (validationError !== null) {
|
|
147
|
+
return { success: false, error: validationError };
|
|
148
|
+
}
|
|
93
149
|
let whereClause = "schemaname NOT IN ('pg_catalog', 'information_schema')";
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
whereClause += ` AND
|
|
150
|
+
const queryParams = [];
|
|
151
|
+
if (schema) {
|
|
152
|
+
queryParams.push(schema);
|
|
153
|
+
whereClause += ` AND schemaname = $${String(queryParams.length)}`;
|
|
154
|
+
}
|
|
155
|
+
if (table) {
|
|
156
|
+
queryParams.push(table);
|
|
157
|
+
whereClause += ` AND relname = $${String(queryParams.length)}`;
|
|
158
|
+
}
|
|
98
159
|
const sql = `SELECT schemaname, relname as table_name,
|
|
99
160
|
seq_scan, seq_tup_read, idx_scan, idx_tup_fetch,
|
|
100
161
|
n_tup_ins as inserts, n_tup_upd as updates, n_tup_del as deletes,
|
|
@@ -104,7 +165,7 @@ export function createTableStatsTool(adapter) {
|
|
|
104
165
|
WHERE ${whereClause}
|
|
105
166
|
ORDER BY seq_scan DESC
|
|
106
167
|
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
107
|
-
const result = await adapter.executeQuery(sql);
|
|
168
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
108
169
|
// Coerce numeric fields to JavaScript numbers
|
|
109
170
|
const tables = (result.rows ?? []).map((row) => ({
|
|
110
171
|
...row,
|
|
@@ -125,16 +186,20 @@ export function createTableStatsTool(adapter) {
|
|
|
125
186
|
};
|
|
126
187
|
if (limit !== null && tables.length === limit) {
|
|
127
188
|
const countSql = `SELECT COUNT(*) as total FROM pg_stat_user_tables WHERE ${whereClause}`;
|
|
128
|
-
const countResult = await adapter.executeQuery(countSql);
|
|
189
|
+
const countResult = await adapter.executeQuery(countSql, queryParams);
|
|
129
190
|
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
130
191
|
response["truncated"] = true;
|
|
131
192
|
}
|
|
193
|
+
else {
|
|
194
|
+
response["truncated"] = false;
|
|
195
|
+
response["totalCount"] = tables.length;
|
|
196
|
+
}
|
|
132
197
|
return response;
|
|
133
198
|
},
|
|
134
199
|
};
|
|
135
200
|
}
|
|
136
201
|
export function createStatStatementsTool(adapter) {
|
|
137
|
-
const
|
|
202
|
+
const StatStatementsSchemaBase = z.object({
|
|
138
203
|
limit: z
|
|
139
204
|
.number()
|
|
140
205
|
.optional()
|
|
@@ -143,12 +208,13 @@ export function createStatStatementsTool(adapter) {
|
|
|
143
208
|
.enum(["total_time", "calls", "mean_time", "rows"])
|
|
144
209
|
.optional()
|
|
145
210
|
.describe("Sort order (default: total_time)"),
|
|
146
|
-
})
|
|
211
|
+
});
|
|
212
|
+
const StatStatementsSchema = z.preprocess(defaultToEmpty, StatStatementsSchemaBase);
|
|
147
213
|
return {
|
|
148
214
|
name: "pg_stat_statements",
|
|
149
215
|
description: "Get query statistics from pg_stat_statements (requires extension).",
|
|
150
216
|
group: "performance",
|
|
151
|
-
inputSchema:
|
|
217
|
+
inputSchema: StatStatementsSchemaBase,
|
|
152
218
|
outputSchema: StatStatementsOutputSchema,
|
|
153
219
|
annotations: readOnly("Query Statistics"),
|
|
154
220
|
icons: getToolIcons("performance", readOnly("Query Statistics")),
|
|
@@ -156,7 +222,7 @@ export function createStatStatementsTool(adapter) {
|
|
|
156
222
|
const parsed = StatStatementsSchema.parse(params);
|
|
157
223
|
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 20);
|
|
158
224
|
const orderBy = parsed.orderBy ?? "total_time";
|
|
159
|
-
const sql = `SELECT query, calls, total_exec_time as total_time,
|
|
225
|
+
const sql = `SELECT query, calls, total_exec_time as total_time,
|
|
160
226
|
mean_exec_time as mean_time, rows,
|
|
161
227
|
shared_blks_hit, shared_blks_read
|
|
162
228
|
FROM pg_stat_statements
|
|
@@ -187,14 +253,15 @@ export function createStatStatementsTool(adapter) {
|
|
|
187
253
|
};
|
|
188
254
|
}
|
|
189
255
|
export function createStatActivityTool(adapter) {
|
|
190
|
-
const
|
|
256
|
+
const StatActivitySchemaBase = z.object({
|
|
191
257
|
includeIdle: z.boolean().optional(),
|
|
192
|
-
})
|
|
258
|
+
});
|
|
259
|
+
const StatActivitySchema = z.preprocess(defaultToEmpty, StatActivitySchemaBase);
|
|
193
260
|
return {
|
|
194
261
|
name: "pg_stat_activity",
|
|
195
262
|
description: "Get currently running queries and connections.",
|
|
196
263
|
group: "performance",
|
|
197
|
-
inputSchema:
|
|
264
|
+
inputSchema: StatActivitySchemaBase,
|
|
198
265
|
outputSchema: StatActivityOutputSchema,
|
|
199
266
|
annotations: readOnly("Activity Stats"),
|
|
200
267
|
icons: getToolIcons("performance", readOnly("Activity Stats")),
|
|
@@ -206,15 +273,25 @@ export function createStatActivityTool(adapter) {
|
|
|
206
273
|
now() - query_start as duration,
|
|
207
274
|
query
|
|
208
275
|
FROM pg_stat_activity
|
|
209
|
-
WHERE pid != pg_backend_pid()
|
|
276
|
+
WHERE pid != pg_backend_pid()
|
|
277
|
+
AND backend_type = 'client backend'
|
|
278
|
+
${idleClause}
|
|
210
279
|
ORDER BY query_start`;
|
|
211
280
|
const result = await adapter.executeQuery(sql);
|
|
212
|
-
|
|
281
|
+
// Count background workers for metadata
|
|
282
|
+
const bgResult = await adapter.executeQuery(`SELECT COUNT(*)::int as count FROM pg_stat_activity
|
|
283
|
+
WHERE pid != pg_backend_pid() AND backend_type != 'client backend'`);
|
|
284
|
+
const bgCount = bgResult.rows?.[0]?.["count"] ?? 0;
|
|
285
|
+
return {
|
|
286
|
+
connections: result.rows,
|
|
287
|
+
count: result.rows?.length ?? 0,
|
|
288
|
+
backgroundWorkers: bgCount,
|
|
289
|
+
};
|
|
213
290
|
},
|
|
214
291
|
};
|
|
215
292
|
}
|
|
216
293
|
export function createUnusedIndexesTool(adapter) {
|
|
217
|
-
const
|
|
294
|
+
const UnusedIndexesSchemaBase = z.object({
|
|
218
295
|
schema: z
|
|
219
296
|
.string()
|
|
220
297
|
.optional()
|
|
@@ -231,24 +308,35 @@ export function createUnusedIndexesTool(adapter) {
|
|
|
231
308
|
.boolean()
|
|
232
309
|
.optional()
|
|
233
310
|
.describe("Return aggregated summary instead of full list"),
|
|
234
|
-
})
|
|
311
|
+
});
|
|
312
|
+
const UnusedIndexesSchema = z.preprocess(defaultToEmpty, UnusedIndexesSchemaBase);
|
|
235
313
|
return {
|
|
236
314
|
name: "pg_unused_indexes",
|
|
237
315
|
description: "Find indexes that have never been used (idx_scan = 0). Candidates for removal.",
|
|
238
316
|
group: "performance",
|
|
239
|
-
inputSchema:
|
|
317
|
+
inputSchema: UnusedIndexesSchemaBase,
|
|
240
318
|
outputSchema: UnusedIndexesOutputSchema,
|
|
241
319
|
annotations: readOnly("Unused Indexes"),
|
|
242
320
|
icons: getToolIcons("performance", readOnly("Unused Indexes")),
|
|
243
321
|
handler: async (params, _context) => {
|
|
244
322
|
const parsed = UnusedIndexesSchema.parse(params);
|
|
245
323
|
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 20);
|
|
324
|
+
// P154: Validate schema existence before querying
|
|
325
|
+
if (parsed.schema !== undefined) {
|
|
326
|
+
const validationError = await validatePerformanceTableExists(adapter, undefined, parsed.schema);
|
|
327
|
+
if (validationError !== null) {
|
|
328
|
+
return { success: false, error: validationError };
|
|
329
|
+
}
|
|
330
|
+
}
|
|
246
331
|
let whereClause = "schemaname NOT IN ('pg_catalog', 'information_schema') AND idx_scan = 0";
|
|
247
|
-
|
|
248
|
-
|
|
332
|
+
const queryParams = [];
|
|
333
|
+
if (parsed.schema !== undefined) {
|
|
334
|
+
queryParams.push(parsed.schema);
|
|
335
|
+
whereClause += ` AND schemaname = $${String(queryParams.length)}`;
|
|
336
|
+
}
|
|
249
337
|
// Summary mode - return aggregated stats
|
|
250
338
|
if (parsed.summary === true) {
|
|
251
|
-
const summarySql = `SELECT schemaname,
|
|
339
|
+
const summarySql = `SELECT schemaname,
|
|
252
340
|
COUNT(*) as unused_count,
|
|
253
341
|
pg_size_pretty(SUM(pg_relation_size(indexrelid))) as total_size,
|
|
254
342
|
SUM(pg_relation_size(indexrelid)) as total_size_bytes
|
|
@@ -257,7 +345,7 @@ export function createUnusedIndexesTool(adapter) {
|
|
|
257
345
|
${parsed.minSize !== undefined ? `AND pg_relation_size(indexrelid) >= pg_size_bytes('${parsed.minSize}')` : ""}
|
|
258
346
|
GROUP BY schemaname
|
|
259
347
|
ORDER BY SUM(pg_relation_size(indexrelid)) DESC`;
|
|
260
|
-
const summaryResult = await adapter.executeQuery(summarySql);
|
|
348
|
+
const summaryResult = await adapter.executeQuery(summarySql, queryParams);
|
|
261
349
|
const bySchema = (summaryResult.rows ?? []).map((row) => ({
|
|
262
350
|
schema: row["schemaname"],
|
|
263
351
|
unusedCount: toNum(row["unused_count"]),
|
|
@@ -283,7 +371,7 @@ export function createUnusedIndexesTool(adapter) {
|
|
|
283
371
|
${parsed.minSize !== undefined ? `AND pg_relation_size(indexrelid) >= pg_size_bytes('${parsed.minSize}')` : ""}
|
|
284
372
|
ORDER BY pg_relation_size(indexrelid) DESC
|
|
285
373
|
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
286
|
-
const result = await adapter.executeQuery(sql);
|
|
374
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
287
375
|
// Coerce numeric fields to JavaScript numbers
|
|
288
376
|
const unusedIndexes = (result.rows ?? []).map((row) => ({
|
|
289
377
|
...row,
|
|
@@ -300,7 +388,7 @@ export function createUnusedIndexesTool(adapter) {
|
|
|
300
388
|
if (limit !== null && unusedIndexes.length === limit) {
|
|
301
389
|
const countSql = `SELECT COUNT(*) as total FROM pg_stat_user_indexes WHERE ${whereClause}
|
|
302
390
|
${parsed.minSize !== undefined ? `AND pg_relation_size(indexrelid) >= pg_size_bytes('${parsed.minSize}')` : ""}`;
|
|
303
|
-
const countResult = await adapter.executeQuery(countSql);
|
|
391
|
+
const countResult = await adapter.executeQuery(countSql, queryParams);
|
|
304
392
|
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
305
393
|
response["truncated"] = true;
|
|
306
394
|
}
|
|
@@ -309,7 +397,7 @@ export function createUnusedIndexesTool(adapter) {
|
|
|
309
397
|
};
|
|
310
398
|
}
|
|
311
399
|
export function createDuplicateIndexesTool(adapter) {
|
|
312
|
-
const
|
|
400
|
+
const DuplicateIndexesSchemaBase = z.object({
|
|
313
401
|
schema: z
|
|
314
402
|
.string()
|
|
315
403
|
.optional()
|
|
@@ -318,20 +406,30 @@ export function createDuplicateIndexesTool(adapter) {
|
|
|
318
406
|
.number()
|
|
319
407
|
.optional()
|
|
320
408
|
.describe("Max rows to return (default: 50, use 0 for all)"),
|
|
321
|
-
})
|
|
409
|
+
});
|
|
410
|
+
const DuplicateIndexesSchema = z.preprocess(defaultToEmpty, DuplicateIndexesSchemaBase);
|
|
322
411
|
return {
|
|
323
412
|
name: "pg_duplicate_indexes",
|
|
324
413
|
description: "Find duplicate or overlapping indexes (same leading columns). Candidates for consolidation.",
|
|
325
414
|
group: "performance",
|
|
326
|
-
inputSchema:
|
|
415
|
+
inputSchema: DuplicateIndexesSchemaBase,
|
|
327
416
|
outputSchema: DuplicateIndexesOutputSchema,
|
|
328
417
|
annotations: readOnly("Duplicate Indexes"),
|
|
329
418
|
icons: getToolIcons("performance", readOnly("Duplicate Indexes")),
|
|
330
419
|
handler: async (params, _context) => {
|
|
331
420
|
const parsed = DuplicateIndexesSchema.parse(params);
|
|
332
421
|
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 50);
|
|
422
|
+
// P154: Validate schema existence before querying
|
|
423
|
+
if (parsed.schema !== undefined) {
|
|
424
|
+
const validationError = await validatePerformanceTableExists(adapter, undefined, parsed.schema);
|
|
425
|
+
if (validationError !== null) {
|
|
426
|
+
return { success: false, error: validationError };
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
const queryParams = [];
|
|
333
430
|
const schemaFilter = parsed.schema !== undefined
|
|
334
|
-
?
|
|
431
|
+
? (queryParams.push(parsed.schema),
|
|
432
|
+
`AND n.nspname = $${String(queryParams.length)}`)
|
|
335
433
|
: "AND n.nspname NOT IN ('pg_catalog', 'information_schema')";
|
|
336
434
|
// Find indexes with the same leading column(s) on the same table
|
|
337
435
|
const sql = `WITH index_cols AS (
|
|
@@ -369,7 +467,7 @@ export function createDuplicateIndexesTool(adapter) {
|
|
|
369
467
|
OR b.columns[1:array_length(a.columns, 1)] = a.columns)
|
|
370
468
|
ORDER BY a.schemaname, a.tablename, a.size_bytes DESC
|
|
371
469
|
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
372
|
-
const result = await adapter.executeQuery(sql);
|
|
470
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
373
471
|
const duplicates = result.rows ?? [];
|
|
374
472
|
const response = {
|
|
375
473
|
duplicateIndexes: duplicates,
|
|
@@ -402,7 +500,7 @@ export function createDuplicateIndexesTool(adapter) {
|
|
|
402
500
|
AND (a.columns = b.columns
|
|
403
501
|
OR a.columns[1:array_length(b.columns, 1)] = b.columns
|
|
404
502
|
OR b.columns[1:array_length(a.columns, 1)] = a.columns)`;
|
|
405
|
-
const countResult = await adapter.executeQuery(countSql);
|
|
503
|
+
const countResult = await adapter.executeQuery(countSql, queryParams);
|
|
406
504
|
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
407
505
|
response["truncated"] = true;
|
|
408
506
|
}
|
|
@@ -411,30 +509,49 @@ export function createDuplicateIndexesTool(adapter) {
|
|
|
411
509
|
};
|
|
412
510
|
}
|
|
413
511
|
export function createVacuumStatsTool(adapter) {
|
|
414
|
-
const
|
|
512
|
+
const VacuumStatsSchemaBase = z.object({
|
|
415
513
|
schema: z.string().optional().describe("Schema to filter"),
|
|
416
514
|
table: z.string().optional().describe("Table name to filter"),
|
|
417
515
|
limit: z
|
|
418
516
|
.number()
|
|
419
517
|
.optional()
|
|
420
518
|
.describe("Max rows to return (default: 50, use 0 for all)"),
|
|
421
|
-
})
|
|
519
|
+
});
|
|
520
|
+
const VacuumStatsSchema = z.preprocess(defaultToEmpty, VacuumStatsSchemaBase);
|
|
422
521
|
return {
|
|
423
522
|
name: "pg_vacuum_stats",
|
|
424
523
|
description: "Get detailed vacuum statistics including dead tuples, last vacuum times, and wraparound risk.",
|
|
425
524
|
group: "performance",
|
|
426
|
-
inputSchema:
|
|
525
|
+
inputSchema: VacuumStatsSchemaBase,
|
|
427
526
|
outputSchema: VacuumStatsOutputSchema,
|
|
428
527
|
annotations: readOnly("Vacuum Stats"),
|
|
429
528
|
icons: getToolIcons("performance", readOnly("Vacuum Stats")),
|
|
430
529
|
handler: async (params, _context) => {
|
|
431
530
|
const parsed = VacuumStatsSchema.parse(params);
|
|
531
|
+
let table = parsed.table;
|
|
532
|
+
let schema = parsed.schema;
|
|
533
|
+
// Parse schema from table if it contains a dot (e.g., 'myschema.orders')
|
|
534
|
+
if (table?.includes(".")) {
|
|
535
|
+
const parts = table.split(".");
|
|
536
|
+
schema = schema ?? parts[0];
|
|
537
|
+
table = parts[1] ?? table;
|
|
538
|
+
}
|
|
432
539
|
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 50);
|
|
433
540
|
let whereClause = "schemaname NOT IN ('pg_catalog', 'information_schema')";
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
whereClause += ` AND
|
|
541
|
+
const queryParams = [];
|
|
542
|
+
if (schema !== undefined) {
|
|
543
|
+
queryParams.push(schema);
|
|
544
|
+
whereClause += ` AND schemaname = $${String(queryParams.length)}`;
|
|
545
|
+
}
|
|
546
|
+
if (table !== undefined) {
|
|
547
|
+
queryParams.push(table);
|
|
548
|
+
whereClause += ` AND relname = $${String(queryParams.length)}`;
|
|
549
|
+
}
|
|
550
|
+
// P154: Validate table/schema existence before querying
|
|
551
|
+
const validationError = await validatePerformanceTableExists(adapter, table, schema);
|
|
552
|
+
if (validationError !== null) {
|
|
553
|
+
return { success: false, error: validationError };
|
|
554
|
+
}
|
|
438
555
|
const sql = `SELECT
|
|
439
556
|
s.schemaname, s.relname as table_name,
|
|
440
557
|
s.n_live_tup as live_tuples, s.n_dead_tup as dead_tuples,
|
|
@@ -455,7 +572,7 @@ export function createVacuumStatsTool(adapter) {
|
|
|
455
572
|
WHERE ${whereClause.replace(/schemaname/g, "s.schemaname").replace(/relname/g, "s.relname")}
|
|
456
573
|
ORDER BY s.n_dead_tup DESC
|
|
457
574
|
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
458
|
-
const result = await adapter.executeQuery(sql);
|
|
575
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
459
576
|
// Coerce numeric fields to JavaScript numbers
|
|
460
577
|
const tables = (result.rows ?? []).map((row) => ({
|
|
461
578
|
...row,
|
|
@@ -474,16 +591,20 @@ export function createVacuumStatsTool(adapter) {
|
|
|
474
591
|
// Add totalCount if results were limited
|
|
475
592
|
if (limit !== null && tables.length === limit) {
|
|
476
593
|
const countSql = `SELECT COUNT(*) as total FROM pg_stat_user_tables WHERE ${whereClause}`;
|
|
477
|
-
const countResult = await adapter.executeQuery(countSql);
|
|
594
|
+
const countResult = await adapter.executeQuery(countSql, queryParams);
|
|
478
595
|
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
479
596
|
response["truncated"] = true;
|
|
480
597
|
}
|
|
598
|
+
else {
|
|
599
|
+
response["truncated"] = false;
|
|
600
|
+
response["totalCount"] = tables.length;
|
|
601
|
+
}
|
|
481
602
|
return response;
|
|
482
603
|
},
|
|
483
604
|
};
|
|
484
605
|
}
|
|
485
606
|
export function createQueryPlanStatsTool(adapter) {
|
|
486
|
-
const
|
|
607
|
+
const QueryPlanStatsSchemaBase = z.object({
|
|
487
608
|
limit: z
|
|
488
609
|
.number()
|
|
489
610
|
.optional()
|
|
@@ -492,12 +613,13 @@ export function createQueryPlanStatsTool(adapter) {
|
|
|
492
613
|
.number()
|
|
493
614
|
.optional()
|
|
494
615
|
.describe("Max query length in chars (default: 100, use 0 for full text)"),
|
|
495
|
-
})
|
|
616
|
+
});
|
|
617
|
+
const QueryPlanStatsSchema = z.preprocess(defaultToEmpty, QueryPlanStatsSchemaBase);
|
|
496
618
|
return {
|
|
497
619
|
name: "pg_query_plan_stats",
|
|
498
620
|
description: "Get query plan statistics showing planning time vs execution time (requires pg_stat_statements).",
|
|
499
621
|
group: "performance",
|
|
500
|
-
inputSchema:
|
|
622
|
+
inputSchema: QueryPlanStatsSchemaBase,
|
|
501
623
|
outputSchema: QueryPlanStatsOutputSchema,
|
|
502
624
|
annotations: readOnly("Query Plan Stats"),
|
|
503
625
|
icons: getToolIcons("performance", readOnly("Query Plan Stats")),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/performance/stats.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/performance/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgcrypto.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/pgcrypto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"pgcrypto.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/pgcrypto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AA+B9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAY3E"}
|