@neverinfamous/postgres-mcp 1.1.0 → 1.3.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 +95 -81
- package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
- package/dist/__tests__/mocks/adapter.js +0 -1
- package/dist/__tests__/mocks/adapter.js.map +1 -1
- package/dist/__tests__/mocks/pool.d.ts.map +1 -1
- package/dist/__tests__/mocks/pool.js +0 -1
- package/dist/__tests__/mocks/pool.js.map +1 -1
- package/dist/adapters/DatabaseAdapter.js +1 -1
- package/dist/adapters/DatabaseAdapter.js.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.js +78 -8
- package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
- package/dist/adapters/postgresql/prompts/backup.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/backup.js +2 -3
- package/dist/adapters/postgresql/prompts/backup.js.map +1 -1
- package/dist/adapters/postgresql/prompts/citext.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/citext.js +3 -4
- package/dist/adapters/postgresql/prompts/citext.js.map +1 -1
- package/dist/adapters/postgresql/prompts/extensionSetup.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/extensionSetup.js +2 -3
- package/dist/adapters/postgresql/prompts/extensionSetup.js.map +1 -1
- package/dist/adapters/postgresql/prompts/health.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/health.js +2 -3
- package/dist/adapters/postgresql/prompts/health.js.map +1 -1
- package/dist/adapters/postgresql/prompts/index.js +20 -27
- package/dist/adapters/postgresql/prompts/index.js.map +1 -1
- package/dist/adapters/postgresql/prompts/indexTuning.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/indexTuning.js +2 -3
- package/dist/adapters/postgresql/prompts/indexTuning.js.map +1 -1
- package/dist/adapters/postgresql/prompts/kcache.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/kcache.js +3 -4
- package/dist/adapters/postgresql/prompts/kcache.js.map +1 -1
- package/dist/adapters/postgresql/prompts/ltree.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/ltree.js +5 -6
- package/dist/adapters/postgresql/prompts/ltree.js.map +1 -1
- package/dist/adapters/postgresql/prompts/partman.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/partman.js +2 -3
- package/dist/adapters/postgresql/prompts/partman.js.map +1 -1
- package/dist/adapters/postgresql/prompts/pgcron.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/pgcron.js +2 -3
- package/dist/adapters/postgresql/prompts/pgcron.js.map +1 -1
- package/dist/adapters/postgresql/prompts/pgcrypto.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/pgcrypto.js +3 -4
- package/dist/adapters/postgresql/prompts/pgcrypto.js.map +1 -1
- package/dist/adapters/postgresql/prompts/pgvector.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/pgvector.js +3 -4
- package/dist/adapters/postgresql/prompts/pgvector.js.map +1 -1
- package/dist/adapters/postgresql/prompts/postgis.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/postgis.js +2 -3
- package/dist/adapters/postgresql/prompts/postgis.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 +8 -4
- package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.js +11 -4
- package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
- package/dist/adapters/postgresql/schemas/core.d.ts +54 -19
- package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/core.js +65 -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 +168 -73
- package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/extensions.js +179 -62
- package/dist/adapters/postgresql/schemas/extensions.js.map +1 -1
- package/dist/adapters/postgresql/schemas/index.d.ts +5 -5
- package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/index.js +9 -7
- package/dist/adapters/postgresql/schemas/index.js.map +1 -1
- package/dist/adapters/postgresql/schemas/jsonb.d.ts +94 -42
- package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/jsonb.js +101 -30
- package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.d.ts +28 -11
- package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.js +49 -24
- package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.d.ts +15 -11
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.js +17 -13
- package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.d.ts +62 -31
- package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.js +86 -24
- 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 +20 -3
- package/dist/adapters/postgresql/schemas/postgis.js.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +35 -23
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.js +69 -26
- 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 +8 -5
- package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.js +15 -5
- 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 +211 -140
- 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 +410 -387
- package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
- package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/backup/planning.js +175 -172
- package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
- package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/citext.js +221 -163
- package/dist/adapters/postgresql/tools/citext.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 +96 -9
- 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 +23 -6
- 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 +45 -4
- 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 +52 -25
- package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.js +55 -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 +74 -30
- 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 +274 -179
- package/dist/adapters/postgresql/tools/cron.js.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.js +372 -284
- 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 +617 -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 +282 -220
- 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 +126 -35
- 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 +59 -40
- 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 +150 -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 +12 -5
- 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 +135 -22
- 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 +264 -160
- 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 +44 -7
- 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 +128 -37
- 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 +242 -87
- 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 +293 -201
- 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 +359 -249
- 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 +515 -226
- 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 +515 -476
- 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 +302 -293
- 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 +398 -220
- 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 +70 -38
- package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.d.ts +8 -0
- package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.js +194 -82
- package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -1
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +15 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli.js +7 -6
- package/dist/cli.js.map +1 -1
- package/dist/codemode/api.d.ts.map +1 -1
- package/dist/codemode/api.js +4 -3
- package/dist/codemode/api.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +1 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +76 -34
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/filtering/ToolConstants.d.ts +29 -13
- package/dist/filtering/ToolConstants.d.ts.map +1 -1
- package/dist/filtering/ToolConstants.js +44 -27
- package/dist/filtering/ToolConstants.js.map +1 -1
- package/dist/utils/logger.js +2 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/progress-utils.js +1 -1
- package/dist/utils/progress-utils.js.map +1 -1
- package/package.json +13 -9
|
@@ -11,8 +11,29 @@
|
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
import { readOnly, write } from "../../../../utils/annotations.js";
|
|
13
13
|
import { getToolIcons } from "../../../../utils/icons.js";
|
|
14
|
+
import { formatPostgresError } from "./error-helpers.js";
|
|
14
15
|
import { WriteQueryOutputSchema, CountOutputSchema, ExistsOutputSchema, TruncateOutputSchema, } from "./schemas.js";
|
|
15
16
|
// =============================================================================
|
|
17
|
+
// Table Existence Validation (P154 Pattern)
|
|
18
|
+
// =============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Validate that a table exists before executing operations.
|
|
21
|
+
* Throws a high-signal error instead of letting raw PostgreSQL
|
|
22
|
+
* "relation does not exist" errors propagate.
|
|
23
|
+
*/
|
|
24
|
+
async function validateTableExists(adapter, table, schema) {
|
|
25
|
+
// Check if the schema exists first for granular error messages
|
|
26
|
+
const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schema]);
|
|
27
|
+
if (!schemaResult.rows || schemaResult.rows.length === 0) {
|
|
28
|
+
return `Schema '${schema}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`;
|
|
29
|
+
}
|
|
30
|
+
const result = await adapter.executeQuery(`SELECT 1 FROM information_schema.tables WHERE table_schema = $1 AND table_name = $2`, [schema, table]);
|
|
31
|
+
if (!result.rows || result.rows.length === 0) {
|
|
32
|
+
return `Table '${schema}.${table}' not found. Use pg_list_tables to see available tables.`;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
// =============================================================================
|
|
16
37
|
// Schemas
|
|
17
38
|
// =============================================================================
|
|
18
39
|
/**
|
|
@@ -179,11 +200,32 @@ export const CountSchemaBase = z.object({
|
|
|
179
200
|
.array(z.unknown())
|
|
180
201
|
.optional()
|
|
181
202
|
.describe("Parameters for WHERE clause placeholders"),
|
|
203
|
+
condition: z.string().optional().describe("Alias for where"),
|
|
204
|
+
filter: z.string().optional().describe("Alias for where"),
|
|
182
205
|
column: z
|
|
183
206
|
.string()
|
|
184
207
|
.optional()
|
|
185
208
|
.describe("Column to count (default: * for all rows)"),
|
|
186
209
|
});
|
|
210
|
+
/**
|
|
211
|
+
* Preprocess count params:
|
|
212
|
+
* - All table params from preprocessTableParams
|
|
213
|
+
* - Alias: condition/filter → where
|
|
214
|
+
*/
|
|
215
|
+
function preprocessCountParams(input) {
|
|
216
|
+
const result = preprocessTableParams(input);
|
|
217
|
+
if (typeof result !== "object" || result === null)
|
|
218
|
+
return result;
|
|
219
|
+
const obj = result;
|
|
220
|
+
// Alias: condition/filter → where
|
|
221
|
+
if (obj["where"] === undefined) {
|
|
222
|
+
if (obj["condition"] !== undefined)
|
|
223
|
+
obj["where"] = obj["condition"];
|
|
224
|
+
else if (obj["filter"] !== undefined)
|
|
225
|
+
obj["where"] = obj["filter"];
|
|
226
|
+
}
|
|
227
|
+
return obj;
|
|
228
|
+
}
|
|
187
229
|
// Internal parsing schema - table optional for alias resolution
|
|
188
230
|
const CountParseSchema = z.object({
|
|
189
231
|
table: z
|
|
@@ -200,16 +242,19 @@ const CountParseSchema = z.object({
|
|
|
200
242
|
.array(z.unknown())
|
|
201
243
|
.optional()
|
|
202
244
|
.describe("Parameters for WHERE clause placeholders"),
|
|
245
|
+
condition: z.string().optional().describe("Alias for where"),
|
|
246
|
+
filter: z.string().optional().describe("Alias for where"),
|
|
203
247
|
column: z
|
|
204
248
|
.string()
|
|
205
249
|
.optional()
|
|
206
250
|
.describe("Column to count (default: * for all rows)"),
|
|
207
251
|
});
|
|
208
252
|
export const CountSchema = z
|
|
209
|
-
.preprocess((val) =>
|
|
253
|
+
.preprocess((val) => preprocessCountParams(val ?? {}), CountParseSchema)
|
|
210
254
|
.transform((data) => ({
|
|
211
255
|
...data,
|
|
212
256
|
table: data.table ?? data.tableName ?? "",
|
|
257
|
+
where: data.where ?? data.condition ?? data.filter,
|
|
213
258
|
}))
|
|
214
259
|
.refine((data) => data.table !== "", {
|
|
215
260
|
message: 'table (or tableName alias) is required. Usage: pg_count({ table: "users" }) or pg_count({ table: "users", where: "active = true" })',
|
|
@@ -342,6 +387,10 @@ export function createUpsertTool(adapter) {
|
|
|
342
387
|
handler: async (params, _context) => {
|
|
343
388
|
const parsed = UpsertSchema.parse(params);
|
|
344
389
|
const schemaName = parsed.schema ?? "public";
|
|
390
|
+
const validationError = await validateTableExists(adapter, parsed.table, schemaName);
|
|
391
|
+
if (validationError) {
|
|
392
|
+
return { success: false, error: validationError };
|
|
393
|
+
}
|
|
345
394
|
const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
|
|
346
395
|
const columns = Object.keys(parsed.data);
|
|
347
396
|
const values = Object.values(parsed.data);
|
|
@@ -386,9 +435,7 @@ export function createUpsertTool(adapter) {
|
|
|
386
435
|
const operation = xmaxValue === 0 ? "insert" : "update";
|
|
387
436
|
// Remove _xmax from returned rows if not explicitly requested
|
|
388
437
|
const cleanedRows = result.rows?.map((row) => {
|
|
389
|
-
|
|
390
|
-
const { _xmax, ...rest } = row;
|
|
391
|
-
return rest;
|
|
438
|
+
return Object.fromEntries(Object.entries(row).filter(([key]) => key !== "_xmax"));
|
|
392
439
|
});
|
|
393
440
|
return {
|
|
394
441
|
success: true,
|
|
@@ -400,7 +447,6 @@ export function createUpsertTool(adapter) {
|
|
|
400
447
|
...(hasReturning &&
|
|
401
448
|
cleanedRows &&
|
|
402
449
|
cleanedRows.length > 0 && { rows: cleanedRows }),
|
|
403
|
-
sql,
|
|
404
450
|
};
|
|
405
451
|
}
|
|
406
452
|
catch (error) {
|
|
@@ -409,7 +455,7 @@ export function createUpsertTool(adapter) {
|
|
|
409
455
|
const msg = error.message.toLowerCase();
|
|
410
456
|
if (msg.includes("no unique or exclusion constraint")) {
|
|
411
457
|
throw new Error(`conflictColumns [${parsed.conflictColumns.join(", ")}] must reference columns with a UNIQUE constraint or PRIMARY KEY. ` +
|
|
412
|
-
`Create a unique constraint first: ALTER TABLE ${qualifiedTable} ADD CONSTRAINT unique_name UNIQUE (${conflictCols})
|
|
458
|
+
`Create a unique constraint first: ALTER TABLE ${qualifiedTable} ADD CONSTRAINT unique_name UNIQUE (${conflictCols})`, { cause: error });
|
|
413
459
|
}
|
|
414
460
|
}
|
|
415
461
|
throw error;
|
|
@@ -437,6 +483,10 @@ export function createBatchInsertTool(adapter) {
|
|
|
437
483
|
'e.g., rows: [{column: "value"}]');
|
|
438
484
|
}
|
|
439
485
|
const schemaName = parsed.schema ?? "public";
|
|
486
|
+
const validationError = await validateTableExists(adapter, parsed.table, schemaName);
|
|
487
|
+
if (validationError) {
|
|
488
|
+
return { success: false, error: validationError };
|
|
489
|
+
}
|
|
440
490
|
const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
|
|
441
491
|
// Get all unique columns from all rows
|
|
442
492
|
const allColumns = new Set();
|
|
@@ -455,7 +505,6 @@ export function createBatchInsertTool(adapter) {
|
|
|
455
505
|
// Execute individual DEFAULT VALUES inserts for each row
|
|
456
506
|
let totalAffected = 0;
|
|
457
507
|
const allRows = [];
|
|
458
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
459
508
|
for (const _row of parsed.rows) {
|
|
460
509
|
const sql = `INSERT INTO ${qualifiedTable} DEFAULT VALUES${returningClause}`;
|
|
461
510
|
const result = await adapter.executeQuery(sql);
|
|
@@ -498,7 +547,20 @@ export function createBatchInsertTool(adapter) {
|
|
|
498
547
|
? ` RETURNING ${parsed.returning.map((c) => `"${c}"`).join(", ")}`
|
|
499
548
|
: "";
|
|
500
549
|
const sql = `INSERT INTO ${qualifiedTable} (${columnList}) VALUES ${rowPlaceholders.join(", ")}${returningClause}`;
|
|
501
|
-
|
|
550
|
+
let result;
|
|
551
|
+
try {
|
|
552
|
+
result = await adapter.executeQuery(sql, values);
|
|
553
|
+
}
|
|
554
|
+
catch (error) {
|
|
555
|
+
return {
|
|
556
|
+
success: false,
|
|
557
|
+
error: formatPostgresError(error, {
|
|
558
|
+
tool: "pg_batch_insert",
|
|
559
|
+
table: parsed.table,
|
|
560
|
+
schema: schemaName,
|
|
561
|
+
}),
|
|
562
|
+
};
|
|
563
|
+
}
|
|
502
564
|
return {
|
|
503
565
|
success: true,
|
|
504
566
|
rowsAffected: result.rowsAffected ?? 0,
|
|
@@ -526,6 +588,10 @@ export function createCountTool(adapter) {
|
|
|
526
588
|
handler: async (params, _context) => {
|
|
527
589
|
const parsed = CountSchema.parse(params);
|
|
528
590
|
const schemaName = parsed.schema ?? "public";
|
|
591
|
+
const validationError = await validateTableExists(adapter, parsed.table, schemaName);
|
|
592
|
+
if (validationError) {
|
|
593
|
+
return { success: false, error: validationError };
|
|
594
|
+
}
|
|
529
595
|
const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
|
|
530
596
|
const countExpr = parsed.column !== undefined ? `"${parsed.column}"` : "*";
|
|
531
597
|
// Treat empty where string as no where clause
|
|
@@ -533,7 +599,20 @@ export function createCountTool(adapter) {
|
|
|
533
599
|
? ` WHERE ${parsed.where}`
|
|
534
600
|
: "";
|
|
535
601
|
const sql = `SELECT COUNT(${countExpr}) as count FROM ${qualifiedTable}${whereClause}`;
|
|
536
|
-
|
|
602
|
+
let result;
|
|
603
|
+
try {
|
|
604
|
+
result = await adapter.executeQuery(sql, parsed.params);
|
|
605
|
+
}
|
|
606
|
+
catch (error) {
|
|
607
|
+
return {
|
|
608
|
+
success: false,
|
|
609
|
+
error: formatPostgresError(error, {
|
|
610
|
+
tool: "pg_count",
|
|
611
|
+
table: parsed.table,
|
|
612
|
+
schema: schemaName,
|
|
613
|
+
}),
|
|
614
|
+
};
|
|
615
|
+
}
|
|
537
616
|
const count = Number(result.rows?.[0]?.["count"]) || 0;
|
|
538
617
|
return { count };
|
|
539
618
|
},
|
|
@@ -554,6 +633,10 @@ export function createExistsTool(adapter) {
|
|
|
554
633
|
handler: async (params, _context) => {
|
|
555
634
|
const parsed = ExistsSchema.parse(params);
|
|
556
635
|
const schemaName = parsed.schema ?? "public";
|
|
636
|
+
const validationError = await validateTableExists(adapter, parsed.table, schemaName);
|
|
637
|
+
if (validationError) {
|
|
638
|
+
return { success: false, error: validationError };
|
|
639
|
+
}
|
|
557
640
|
const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
|
|
558
641
|
// Build SQL with optional WHERE clause
|
|
559
642
|
const whereValue = parsed.where ?? "";
|
|
@@ -590,6 +673,10 @@ export function createTruncateTool(adapter) {
|
|
|
590
673
|
handler: async (params, _context) => {
|
|
591
674
|
const parsed = TruncateSchema.parse(params);
|
|
592
675
|
const schemaName = parsed.schema ?? "public";
|
|
676
|
+
const validationError = await validateTableExists(adapter, parsed.table, schemaName);
|
|
677
|
+
if (validationError) {
|
|
678
|
+
return { success: false, error: validationError };
|
|
679
|
+
}
|
|
593
680
|
const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
|
|
594
681
|
let sql = `TRUNCATE TABLE ${qualifiedTable}`;
|
|
595
682
|
if (parsed.restartIdentity === true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convenience.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/convenience.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"convenience.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/convenience.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL Core Tools - Error Helpers
|
|
3
|
+
*
|
|
4
|
+
* Shared helper for mapping raw PostgreSQL exceptions to structured,
|
|
5
|
+
* high-signal error messages with actionable guidance.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Context about the operation that triggered the error.
|
|
9
|
+
*/
|
|
10
|
+
interface ErrorContext {
|
|
11
|
+
tool: string;
|
|
12
|
+
sql?: string;
|
|
13
|
+
table?: string;
|
|
14
|
+
index?: string;
|
|
15
|
+
schema?: string;
|
|
16
|
+
target?: string;
|
|
17
|
+
objectType?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parse a raw PostgreSQL error and return a structured Error with
|
|
21
|
+
* actionable guidance. Non-PG errors (connection refused, auth, etc.)
|
|
22
|
+
* are re-thrown unchanged to preserve their original stack trace.
|
|
23
|
+
*
|
|
24
|
+
* Supported PG error codes:
|
|
25
|
+
* - 42P01: undefined_table (relation does not exist)
|
|
26
|
+
* - 42P07: duplicate_table (relation already exists)
|
|
27
|
+
* - 42P06: duplicate_schema (schema already exists)
|
|
28
|
+
* - 42704: undefined_object (index/type does not exist)
|
|
29
|
+
* - 42601: syntax_error (SQL syntax error)
|
|
30
|
+
* - 42703: undefined_column (column does not exist)
|
|
31
|
+
* - 23505: unique_violation (duplicate key value)
|
|
32
|
+
* - 3F000: invalid_schema_name (schema does not exist)
|
|
33
|
+
* - 3D000: invalid_catalog_name (database does not exist)
|
|
34
|
+
* - 3B001: savepoint_exception (savepoint does not exist)
|
|
35
|
+
* - 25P02: in_failed_sql_transaction (transaction is aborted)
|
|
36
|
+
*/
|
|
37
|
+
export declare function parsePostgresError(error: unknown, context: ErrorContext): Error;
|
|
38
|
+
/**
|
|
39
|
+
* Wrapper around parsePostgresError that returns the structured error message
|
|
40
|
+
* as a string instead of throwing. Use this in handler catch blocks where you
|
|
41
|
+
* want to return `{ success: false, error: formatPostgresError(...) }`.
|
|
42
|
+
*
|
|
43
|
+
* parsePostgresError always throws — this function catches the throw and
|
|
44
|
+
* extracts the message for structured error responses.
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatPostgresError(error: unknown, context: ErrorContext): string;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=error-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/error-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,YAAY,GACpB,KAAK,CA6UP;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,YAAY,GACpB,MAAM,CAoCR"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL Core Tools - Error Helpers
|
|
3
|
+
*
|
|
4
|
+
* Shared helper for mapping raw PostgreSQL exceptions to structured,
|
|
5
|
+
* high-signal error messages with actionable guidance.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Parse a raw PostgreSQL error and return a structured Error with
|
|
9
|
+
* actionable guidance. Non-PG errors (connection refused, auth, etc.)
|
|
10
|
+
* are re-thrown unchanged to preserve their original stack trace.
|
|
11
|
+
*
|
|
12
|
+
* Supported PG error codes:
|
|
13
|
+
* - 42P01: undefined_table (relation does not exist)
|
|
14
|
+
* - 42P07: duplicate_table (relation already exists)
|
|
15
|
+
* - 42P06: duplicate_schema (schema already exists)
|
|
16
|
+
* - 42704: undefined_object (index/type does not exist)
|
|
17
|
+
* - 42601: syntax_error (SQL syntax error)
|
|
18
|
+
* - 42703: undefined_column (column does not exist)
|
|
19
|
+
* - 23505: unique_violation (duplicate key value)
|
|
20
|
+
* - 3F000: invalid_schema_name (schema does not exist)
|
|
21
|
+
* - 3D000: invalid_catalog_name (database does not exist)
|
|
22
|
+
* - 3B001: savepoint_exception (savepoint does not exist)
|
|
23
|
+
* - 25P02: in_failed_sql_transaction (transaction is aborted)
|
|
24
|
+
*/
|
|
25
|
+
export function parsePostgresError(error, context) {
|
|
26
|
+
if (!(error instanceof Error)) {
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
const pgCode = error["code"];
|
|
30
|
+
// Idempotency guard: if the error has a `cause` but no PG error code,
|
|
31
|
+
// it was already processed by a prior parsePostgresError call (e.g., in the
|
|
32
|
+
// adapter layer). Re-throw unchanged to prevent double-processing, which
|
|
33
|
+
// can produce misleading messages (e.g., "Object 'unknown' not found"
|
|
34
|
+
// instead of "Savepoint 'X' does not exist").
|
|
35
|
+
if (error.cause !== undefined && !pgCode) {
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
const msg = error.message;
|
|
39
|
+
// 42P01 — relation does not exist (table, view, sequence)
|
|
40
|
+
// Regex anchored: must NOT be preceded by "of " (which indicates 42703 column errors)
|
|
41
|
+
if (pgCode === "42P01" ||
|
|
42
|
+
(/relation ".*" does not exist/i.test(msg) && !/of relation/i.test(msg))) {
|
|
43
|
+
// pg_reindex with target=index: index-specific message
|
|
44
|
+
if (context.tool === "pg_reindex" && context.target === "index") {
|
|
45
|
+
const match = /relation "([^"]+)"/i.exec(msg);
|
|
46
|
+
const indexName = match?.[1] ?? context.index ?? "unknown";
|
|
47
|
+
throw new Error(`Index '${indexName}' not found. Use pg_get_indexes to see available indexes.`, { cause: error });
|
|
48
|
+
}
|
|
49
|
+
const match = /relation "([^"]+)"/i.exec(msg);
|
|
50
|
+
const objectName = match?.[1] ?? context.table ?? "unknown";
|
|
51
|
+
throw new Error(`Table or view '${objectName}' not found. Use pg_list_tables to see available tables.`, { cause: error });
|
|
52
|
+
}
|
|
53
|
+
// 42P06 — duplicate schema (schema already exists)
|
|
54
|
+
// Note: also checks message text because the adapter wraps PG errors
|
|
55
|
+
// in QueryError (code: "QUERY_ERROR"), stripping the original PG code.
|
|
56
|
+
if (pgCode === "42P06" || /schema ".*" already exists/i.test(msg)) {
|
|
57
|
+
const match = /schema "([^"]+)"/i.exec(msg);
|
|
58
|
+
const objectName = match?.[1] ?? context.schema ?? "unknown";
|
|
59
|
+
throw new Error(`Schema '${objectName}' already exists. Use ifNotExists: true to skip if it exists.`, { cause: error });
|
|
60
|
+
}
|
|
61
|
+
// 42P07 — duplicate relation (table, index, sequence, or view already exists)
|
|
62
|
+
if (pgCode === "42P07" || /already exists/i.test(msg)) {
|
|
63
|
+
const match = /relation "([^"]+)"/i.exec(msg);
|
|
64
|
+
const objectName = match?.[1] ?? context.index ?? context.table ?? "unknown";
|
|
65
|
+
// Distinguish index vs table context
|
|
66
|
+
if (context.tool === "pg_create_index" ||
|
|
67
|
+
/index/i.test(msg) ||
|
|
68
|
+
context.index) {
|
|
69
|
+
throw new Error(`Index '${objectName}' already exists. Use ifNotExists: true to skip if it exists.`, { cause: error });
|
|
70
|
+
}
|
|
71
|
+
// Sequence-specific message
|
|
72
|
+
if (context.objectType === "sequence") {
|
|
73
|
+
throw new Error(`Sequence '${objectName}' already exists. Use ifNotExists: true to skip if it exists.`, { cause: error });
|
|
74
|
+
}
|
|
75
|
+
// View-specific message
|
|
76
|
+
if (context.objectType === "view") {
|
|
77
|
+
throw new Error(`View '${objectName}' already exists. Use orReplace: true to replace it.`, { cause: error });
|
|
78
|
+
}
|
|
79
|
+
throw new Error(`Table '${objectName}' already exists. Use ifNotExists: true to skip if it exists.`, { cause: error });
|
|
80
|
+
}
|
|
81
|
+
// 42601 — syntax error in SQL statement
|
|
82
|
+
if (pgCode === "42601" || /syntax error/i.test(msg)) {
|
|
83
|
+
throw new Error(`SQL syntax error: ${msg}. Verify your SQL is valid.`, {
|
|
84
|
+
cause: error,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
// 42703 — undefined column (checked before 42704 whose broad regex would match)
|
|
88
|
+
if (pgCode === "42703" ||
|
|
89
|
+
/column ".*" (?:of relation .+)?does not exist/i.test(msg)) {
|
|
90
|
+
throw new Error(`Column not found: ${msg}. Use pg_describe_table to see available columns.`, { cause: error });
|
|
91
|
+
}
|
|
92
|
+
// Sub-partitioning PK constraint (42P16 — unique constraint must include all partitioning columns)
|
|
93
|
+
// MUST be checked before the generic 23505 unique constraint handler below,
|
|
94
|
+
// because this message also contains "unique constraint" text.
|
|
95
|
+
if (/unique constraint on partitioned table must include all partitioning columns/i.test(msg)) {
|
|
96
|
+
throw new Error(`Primary key on partitioned table must include all partitioning columns. The sub-partition key column must be part of the parent table's primary key. Recreate the parent with a composite primary key that includes both the partition key and sub-partition key.`, { cause: error });
|
|
97
|
+
}
|
|
98
|
+
// 23505 — unique constraint violation (duplicate key)
|
|
99
|
+
if (pgCode === "23505" ||
|
|
100
|
+
/unique constraint/i.test(msg) ||
|
|
101
|
+
/duplicate key/i.test(msg)) {
|
|
102
|
+
throw new Error(`Unique constraint violated: ${msg}. Use pg_upsert for insert-or-update behavior.`, { cause: error });
|
|
103
|
+
}
|
|
104
|
+
// 3B001 — savepoint does not exist (checked before 42704 whose broad regex would match)
|
|
105
|
+
if (pgCode === "3B001" || /savepoint ".*" does not exist/i.test(msg)) {
|
|
106
|
+
const match = /savepoint "([^"]+)"/i.exec(msg);
|
|
107
|
+
const spName = match?.[1] ?? "unknown";
|
|
108
|
+
throw new Error(`Savepoint '${spName}' does not exist in this transaction. Use pg_transaction_savepoint to create it first.`, { cause: error });
|
|
109
|
+
}
|
|
110
|
+
// 25P02 — current transaction is aborted (checked before 42704 whose broad regex would match)
|
|
111
|
+
if (pgCode === "25P02" || /current transaction is aborted/i.test(msg)) {
|
|
112
|
+
throw new Error("Transaction is in an aborted state — only ROLLBACK or ROLLBACK TO SAVEPOINT commands are allowed. " +
|
|
113
|
+
"A previous statement in this transaction failed, putting it into an error state. " +
|
|
114
|
+
"Use pg_transaction_rollback to end it, or pg_transaction_rollback_to to recover to a savepoint.", { cause: error });
|
|
115
|
+
}
|
|
116
|
+
// Unrecognized configuration parameter (pg_set_config)
|
|
117
|
+
// Standalone check: adapter wraps PG errors with code "QUERY_ERROR",
|
|
118
|
+
// so this won't enter the 42704 block — must match on message text.
|
|
119
|
+
if (/unrecognized configuration parameter/i.test(msg)) {
|
|
120
|
+
const paramMatch = /parameter "([^"]+)"/i.exec(msg);
|
|
121
|
+
const paramName = paramMatch?.[1] ?? "unknown";
|
|
122
|
+
throw new Error(`Unrecognized configuration parameter '${paramName}'. Use pg_show_settings to see available parameters.`, { cause: error });
|
|
123
|
+
}
|
|
124
|
+
// pg_cron: "could not find valid entry for job" (unschedule nonexistent job)
|
|
125
|
+
if (/could not find valid entry for job/i.test(msg)) {
|
|
126
|
+
const jobMatch = /for job\s+'?"?([^'"]+)'?"?/i.exec(msg);
|
|
127
|
+
const jobIdentifier = jobMatch?.[1] ?? context.target ?? "unknown";
|
|
128
|
+
throw new Error(`Job '${jobIdentifier}' not found. Use pg_cron_list_jobs to see available jobs.`, { cause: error });
|
|
129
|
+
}
|
|
130
|
+
// pg_cron: "invalid schedule" (invalid cron syntax passed to pg_cron)
|
|
131
|
+
if (/invalid schedule:/i.test(msg)) {
|
|
132
|
+
throw new Error(`Invalid cron schedule. Use standard cron syntax (e.g., "0 2 * * *") or interval syntax ("1-59 seconds").`, { cause: error });
|
|
133
|
+
}
|
|
134
|
+
// 3D000 — invalid catalog name (database does not exist)
|
|
135
|
+
if (pgCode === "3D000" || /database ".*" does not exist/i.test(msg)) {
|
|
136
|
+
const match = /database "([^"]+)"/i.exec(msg);
|
|
137
|
+
const dbName = match?.[1] ?? "unknown";
|
|
138
|
+
throw new Error(`Database '${dbName}' does not exist. Verify the database name or omit the parameter to use the current database.`, { cause: error });
|
|
139
|
+
}
|
|
140
|
+
// 42704 — undefined object (index, type, etc.)
|
|
141
|
+
if (pgCode === "42704" || /does not exist/i.test(msg)) {
|
|
142
|
+
// Schema-specific: "schema X does not exist" (e.g., CREATE TABLE in nonexistent schema)
|
|
143
|
+
if (/schema ".*" does not exist/i.test(msg)) {
|
|
144
|
+
const schemaMatch = /schema "([^"]+)"/i.exec(msg);
|
|
145
|
+
const schemaName = schemaMatch?.[1] ?? context.schema ?? "unknown";
|
|
146
|
+
throw new Error(`Schema '${schemaName}' does not exist. Create it with pg_create_schema or use pg_list_schemas to see available schemas.`, { cause: error });
|
|
147
|
+
}
|
|
148
|
+
// pg_cluster: index-not-found — omit ifExists (not a valid cluster param)
|
|
149
|
+
if (context.tool === "pg_cluster" &&
|
|
150
|
+
(/index/i.test(msg) || context.index)) {
|
|
151
|
+
const match = /index "([^"]+)"/i.exec(msg);
|
|
152
|
+
const indexName = match?.[1] ?? context.index ?? "unknown";
|
|
153
|
+
throw new Error(`Index '${indexName}' not found. Use pg_get_indexes to see available indexes.`, { cause: error });
|
|
154
|
+
}
|
|
155
|
+
if (context.tool === "pg_drop_index" ||
|
|
156
|
+
/index/i.test(msg) ||
|
|
157
|
+
context.index) {
|
|
158
|
+
const match = /index "([^"]+)"/i.exec(msg);
|
|
159
|
+
const indexName = match?.[1] ?? context.index ?? "unknown";
|
|
160
|
+
throw new Error(`Index '${indexName}' not found. Use ifExists: true to avoid this error, or pg_get_indexes to see available indexes.`, { cause: error });
|
|
161
|
+
}
|
|
162
|
+
// Table-specific fallback for pg_drop_table
|
|
163
|
+
if (context.tool === "pg_drop_table") {
|
|
164
|
+
const objectName = context.table ?? "unknown";
|
|
165
|
+
throw new Error(`Table '${context.schema ?? "public"}.${objectName}' not found. Use ifExists: true to avoid this error, or pg_list_tables to verify.`, { cause: error });
|
|
166
|
+
}
|
|
167
|
+
// Function not found with tsvector argument — column is already tsvector type
|
|
168
|
+
if (/function .*tsvector.* does not exist/i.test(msg)) {
|
|
169
|
+
throw new Error(`Column appears to be a tsvector type, which cannot be used directly with text search tools. ` +
|
|
170
|
+
`Use a text column instead, or query the tsvector column directly with raw SQL (pg_read_query).`, { cause: error });
|
|
171
|
+
}
|
|
172
|
+
// pg_cron tool context guard — provide cron-appropriate messages
|
|
173
|
+
// instead of the misleading generic "Object 'X' not found"
|
|
174
|
+
if (context.tool?.startsWith("pg_cron_")) {
|
|
175
|
+
if (context.tool === "pg_cron_alter_job") {
|
|
176
|
+
const jobId = context.target ?? "unknown";
|
|
177
|
+
throw new Error(`Job ${jobId} not found. Use pg_cron_list_jobs to see available jobs.`, { cause: error });
|
|
178
|
+
}
|
|
179
|
+
if (context.tool === "pg_cron_schedule_in_database") {
|
|
180
|
+
const dbMatch = /database "([^"]+)"/i.exec(msg);
|
|
181
|
+
const dbName = dbMatch?.[1] ?? context.target ?? "unknown";
|
|
182
|
+
throw new Error(`Database '${dbName}' not found or not accessible for cron scheduling. Verify the database name exists.`, { cause: error });
|
|
183
|
+
}
|
|
184
|
+
// Generic cron fallback
|
|
185
|
+
throw new Error(`Cron operation failed: ${msg}. Use pg_cron_list_jobs to verify job state.`, { cause: error });
|
|
186
|
+
}
|
|
187
|
+
// Generic "does not exist" fallback
|
|
188
|
+
const match = /(?:table|relation) "([^"]+)"/i.exec(msg) ??
|
|
189
|
+
/"([^"]+)" does not exist/i.exec(msg);
|
|
190
|
+
const objectName = match?.[1] ?? context.table ?? "unknown";
|
|
191
|
+
throw new Error(`Object '${objectName}' not found. Use ifExists: true to avoid this error.`, { cause: error });
|
|
192
|
+
}
|
|
193
|
+
// 3F000 — invalid schema name
|
|
194
|
+
if (pgCode === "3F000" || /schema ".*" does not exist/i.test(msg)) {
|
|
195
|
+
const match = /schema "([^"]+)"/i.exec(msg);
|
|
196
|
+
const schemaName = match?.[1] ?? context.schema ?? "unknown";
|
|
197
|
+
throw new Error(`Schema '${schemaName}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`, { cause: error });
|
|
198
|
+
}
|
|
199
|
+
// Overlapping partition bounds (RANGE overlap or conflicting LIST values)
|
|
200
|
+
if (/conflicting values for partition/i.test(msg) ||
|
|
201
|
+
/would overlap partition/i.test(msg)) {
|
|
202
|
+
throw new Error(`Partition bounds overlap with an existing partition. Use pg_list_partitions to see current partition bounds.`, { cause: error });
|
|
203
|
+
}
|
|
204
|
+
// Already-attached partition (attempting to attach a table that is already a partition)
|
|
205
|
+
if (/is already a partition/i.test(msg)) {
|
|
206
|
+
const match = /"([^"]+)" is already a partition/i.exec(msg);
|
|
207
|
+
const tableName = match?.[1] ?? context.table ?? "unknown";
|
|
208
|
+
throw new Error(`Table '${tableName}' is already a partition. Use pg_list_partitions to see current partitions, or pg_detach_partition to detach it first.`, { cause: error });
|
|
209
|
+
}
|
|
210
|
+
// XX000 — invalid geometry (PostGIS WKT/GeoJSON parse failure)
|
|
211
|
+
if (/parse error - invalid geometry/i.test(msg)) {
|
|
212
|
+
throw new Error(`Invalid geometry input. Use WKT format (e.g., 'POINT(-74 40)', 'POLYGON((...))') or GeoJSON format (e.g., '{"type":"Point","coordinates":[-74,40]}').`, { cause: error });
|
|
213
|
+
}
|
|
214
|
+
// Unrecognized PG error — re-throw with cause preserved
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Wrapper around parsePostgresError that returns the structured error message
|
|
219
|
+
* as a string instead of throwing. Use this in handler catch blocks where you
|
|
220
|
+
* want to return `{ success: false, error: formatPostgresError(...) }`.
|
|
221
|
+
*
|
|
222
|
+
* parsePostgresError always throws — this function catches the throw and
|
|
223
|
+
* extracts the message for structured error responses.
|
|
224
|
+
*/
|
|
225
|
+
export function formatPostgresError(error, context) {
|
|
226
|
+
// Handle Zod validation errors: extract clean messages from issues array
|
|
227
|
+
// ZodError instances have an .issues array — detect via duck-typing to
|
|
228
|
+
// avoid importing zod in this shared module.
|
|
229
|
+
if (error instanceof Error &&
|
|
230
|
+
"issues" in error &&
|
|
231
|
+
Array.isArray(error["issues"])) {
|
|
232
|
+
const issues = error["issues"];
|
|
233
|
+
return issues
|
|
234
|
+
.map((issue) => {
|
|
235
|
+
const pathStr = Array.isArray(issue.path) && issue.path.length > 0
|
|
236
|
+
? issue.path.join(".")
|
|
237
|
+
: "";
|
|
238
|
+
const msg = issue.message ?? "Unknown validation error";
|
|
239
|
+
return pathStr !== ""
|
|
240
|
+
? `Validation error: ${msg} (${pathStr})`
|
|
241
|
+
: `Validation error: ${msg}`;
|
|
242
|
+
})
|
|
243
|
+
.join("; ");
|
|
244
|
+
}
|
|
245
|
+
try {
|
|
246
|
+
parsePostgresError(error, context);
|
|
247
|
+
// parsePostgresError always throws, but fallback just in case
|
|
248
|
+
return error instanceof Error ? error.message : String(error);
|
|
249
|
+
}
|
|
250
|
+
catch (structured) {
|
|
251
|
+
return structured instanceof Error
|
|
252
|
+
? structured.message
|
|
253
|
+
: String(structured);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=error-helpers.js.map
|