@neverinfamous/postgres-mcp 2.0.0 → 2.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.
- package/LICENSE +1 -1
- package/README.md +119 -46
- package/dist/__tests__/benchmarks/codemode.bench.js +3 -3
- package/dist/__tests__/benchmarks/codemode.bench.js.map +1 -1
- package/dist/__tests__/benchmarks/connection-pool.bench.js +3 -3
- package/dist/__tests__/benchmarks/connection-pool.bench.js.map +1 -1
- package/dist/__tests__/benchmarks/introspection-migration.bench.d.ts +11 -0
- package/dist/__tests__/benchmarks/introspection-migration.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/introspection-migration.bench.js +143 -0
- package/dist/__tests__/benchmarks/introspection-migration.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.js +0 -64
- package/dist/__tests__/benchmarks/resource-prompts.bench.js.map +1 -1
- package/dist/__tests__/benchmarks/schema-parsing.bench.js +5 -5
- package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -1
- package/dist/__tests__/benchmarks/tool-filtering.bench.js +17 -8
- package/dist/__tests__/benchmarks/tool-filtering.bench.js.map +1 -1
- package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
- package/dist/__tests__/mocks/adapter.js +2 -1
- package/dist/__tests__/mocks/adapter.js.map +1 -1
- package/dist/adapters/DatabaseAdapter.d.ts +6 -5
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
- package/dist/adapters/DatabaseAdapter.js +11 -20
- package/dist/adapters/DatabaseAdapter.js.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.d.ts +5 -26
- package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.js +31 -526
- package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
- package/dist/adapters/postgresql/prompts/index.js +1 -1
- package/dist/adapters/postgresql/prompts/index.js.map +1 -1
- package/dist/adapters/postgresql/resources/index.d.ts +1 -1
- package/dist/adapters/postgresql/resources/index.js +3 -3
- package/dist/adapters/postgresql/resources/index.js.map +1 -1
- package/dist/adapters/postgresql/schema-operations.d.ts +71 -0
- package/dist/adapters/postgresql/schema-operations.d.ts.map +1 -0
- package/dist/adapters/postgresql/schema-operations.js +561 -0
- package/dist/adapters/postgresql/schema-operations.js.map +1 -0
- package/dist/adapters/postgresql/schemas/admin.d.ts +4 -4
- package/dist/adapters/postgresql/schemas/admin.js +4 -4
- package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.d.ts +2 -2
- package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.js +1 -3
- package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
- package/dist/adapters/postgresql/schemas/core/index.d.ts +6 -0
- package/dist/adapters/postgresql/schemas/core/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/core/index.js +6 -0
- package/dist/adapters/postgresql/schemas/core/index.js.map +1 -0
- package/dist/adapters/postgresql/schemas/{core.d.ts → core/queries.d.ts} +16 -171
- package/dist/adapters/postgresql/schemas/core/queries.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/{core.js → core/queries.js} +5 -213
- package/dist/adapters/postgresql/schemas/core/queries.js.map +1 -0
- package/dist/adapters/postgresql/schemas/core/transactions.d.ts +149 -0
- package/dist/adapters/postgresql/schemas/core/transactions.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/core/transactions.js +239 -0
- package/dist/adapters/postgresql/schemas/core/transactions.js.map +1 -0
- package/dist/adapters/postgresql/schemas/cron.d.ts +12 -12
- package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/cron.js +38 -10
- package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
- package/dist/adapters/postgresql/schemas/extensions/citext.d.ts +222 -0
- package/dist/adapters/postgresql/schemas/extensions/citext.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/citext.js +306 -0
- package/dist/adapters/postgresql/schemas/extensions/citext.js.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/index.d.ts +15 -0
- package/dist/adapters/postgresql/schemas/extensions/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/index.js +20 -0
- package/dist/adapters/postgresql/schemas/extensions/index.js.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts +164 -0
- package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/kcache.js +225 -0
- package/dist/adapters/postgresql/schemas/extensions/kcache.js.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts +253 -0
- package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/ltree.js +430 -0
- package/dist/adapters/postgresql/schemas/extensions/ltree.js.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts +251 -0
- package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js +294 -0
- package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/shared.d.ts +10 -0
- package/dist/adapters/postgresql/schemas/extensions/shared.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions/shared.js +15 -0
- package/dist/adapters/postgresql/schemas/extensions/shared.js.map +1 -0
- package/dist/adapters/postgresql/schemas/index.d.ts +6 -6
- package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/index.js +8 -8
- package/dist/adapters/postgresql/schemas/index.js.map +1 -1
- package/dist/adapters/postgresql/schemas/introspection.d.ts +19 -42
- package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/introspection.js +72 -27
- package/dist/adapters/postgresql/schemas/introspection.js.map +1 -1
- package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts +270 -0
- package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb/advanced.js +371 -0
- package/dist/adapters/postgresql/schemas/jsonb/advanced.js.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts +283 -0
- package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb/basic.js +456 -0
- package/dist/adapters/postgresql/schemas/jsonb/basic.js.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb/index.d.ts +6 -0
- package/dist/adapters/postgresql/schemas/jsonb/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb/index.js +6 -0
- package/dist/adapters/postgresql/schemas/jsonb/index.js.map +1 -0
- package/dist/adapters/postgresql/schemas/monitoring.d.ts +4 -4
- package/dist/adapters/postgresql/schemas/monitoring.js +2 -2
- package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.d.ts +14 -14
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.js +64 -46
- package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partman.d.ts +16 -14
- package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partman.js +9 -9
- package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
- package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts +429 -0
- package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/postgis/advanced.js +495 -0
- package/dist/adapters/postgresql/schemas/postgis/advanced.js.map +1 -0
- package/dist/adapters/postgresql/schemas/{postgis.d.ts → postgis/basic.d.ts} +1 -423
- package/dist/adapters/postgresql/schemas/postgis/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/{postgis.js → postgis/basic.js} +1 -486
- package/dist/adapters/postgresql/schemas/postgis/basic.js.map +1 -0
- package/dist/adapters/postgresql/schemas/postgis/index.d.ts +6 -0
- package/dist/adapters/postgresql/schemas/postgis/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/postgis/index.js +6 -0
- package/dist/adapters/postgresql/schemas/postgis/index.js.map +1 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +35 -25
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.js +57 -19
- package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
- package/dist/adapters/postgresql/schemas/stats/index.d.ts +6 -0
- package/dist/adapters/postgresql/schemas/stats/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/stats/index.js +6 -0
- package/dist/adapters/postgresql/schemas/stats/index.js.map +1 -0
- package/dist/adapters/postgresql/schemas/stats/input.d.ts +260 -0
- package/dist/adapters/postgresql/schemas/stats/input.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/{stats.js → stats/input.js} +2 -331
- package/dist/adapters/postgresql/schemas/stats/input.js.map +1 -0
- package/dist/adapters/postgresql/schemas/{stats.d.ts → stats/output.d.ts} +3 -246
- package/dist/adapters/postgresql/schemas/stats/output.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/stats/output.js +334 -0
- package/dist/adapters/postgresql/schemas/stats/output.js.map +1 -0
- package/dist/adapters/postgresql/schemas/text-search.d.ts +18 -18
- package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.js +12 -27
- package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
- package/dist/adapters/postgresql/schemas/vector.d.ts +10 -10
- package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/vector.js +9 -15
- package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
- package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/backup/dump.js +95 -76
- 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 +345 -287
- package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
- package/dist/adapters/postgresql/tools/citext/analysis.d.ts +24 -0
- package/dist/adapters/postgresql/tools/citext/analysis.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/{citext.js → citext/analysis.js} +50 -232
- package/dist/adapters/postgresql/tools/citext/analysis.js.map +1 -0
- package/dist/adapters/postgresql/tools/citext/index.d.ts +15 -0
- package/dist/adapters/postgresql/tools/citext/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/citext/index.js +23 -0
- package/dist/adapters/postgresql/tools/citext/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/citext/setup.d.ts +16 -0
- package/dist/adapters/postgresql/tools/citext/setup.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/citext/setup.js +193 -0
- package/dist/adapters/postgresql/tools/citext/setup.js.map +1 -0
- package/dist/adapters/postgresql/tools/codemode/index.js +1 -1
- package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/convenience.d.ts +12 -22
- package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/convenience.js +100 -210
- package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +1 -0
- package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/error-helpers.js +8 -1
- package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/health.js +124 -114
- package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/index.d.ts +2 -1
- package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/index.js +3 -2
- package/dist/adapters/postgresql/tools/core/index.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/indexes.js +151 -127
- 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 +186 -161
- 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 +37 -25
- package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.d.ts +6 -3
- package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.js +11 -2
- 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 +156 -129
- package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/utility.d.ts +26 -0
- package/dist/adapters/postgresql/tools/core/utility.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/utility.js +174 -0
- package/dist/adapters/postgresql/tools/core/utility.js.map +1 -0
- package/dist/adapters/postgresql/tools/cron.js +90 -43
- package/dist/adapters/postgresql/tools/cron.js.map +1 -1
- package/dist/adapters/postgresql/tools/introspection/analysis.d.ts +12 -0
- package/dist/adapters/postgresql/tools/introspection/analysis.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/analysis.js +605 -0
- package/dist/adapters/postgresql/tools/introspection/analysis.js.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/graph.d.ts +55 -0
- package/dist/adapters/postgresql/tools/introspection/graph.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/graph.js +621 -0
- package/dist/adapters/postgresql/tools/introspection/graph.js.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/index.d.ts +21 -0
- package/dist/adapters/postgresql/tools/introspection/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/index.js +31 -0
- package/dist/adapters/postgresql/tools/introspection/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/migration.d.ts +15 -0
- package/dist/adapters/postgresql/tools/introspection/migration.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/migration.js +575 -0
- package/dist/adapters/postgresql/tools/introspection/migration.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts +20 -0
- package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/analytics.js +367 -0
- package/dist/adapters/postgresql/tools/jsonb/analytics.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/index.d.ts +4 -2
- package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/index.js +8 -4
- package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/read.d.ts +38 -0
- package/dist/adapters/postgresql/tools/jsonb/read.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/{basic.js → read.js} +41 -482
- package/dist/adapters/postgresql/tools/jsonb/read.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/{advanced.d.ts → transform.d.ts} +1 -13
- package/dist/adapters/postgresql/tools/jsonb/transform.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/{advanced.js → transform.js} +26 -357
- package/dist/adapters/postgresql/tools/jsonb/transform.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/write.d.ts +14 -0
- package/dist/adapters/postgresql/tools/jsonb/write.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/write.js +468 -0
- package/dist/adapters/postgresql/tools/jsonb/write.js.map +1 -0
- package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/kcache.js +116 -51
- package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
- package/dist/adapters/postgresql/tools/ltree.js +346 -260
- package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
- package/dist/adapters/postgresql/tools/migration/index.d.ts +15 -0
- package/dist/adapters/postgresql/tools/migration/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/migration/index.js +23 -0
- package/dist/adapters/postgresql/tools/migration/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts +15 -0
- package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/{monitoring.js → monitoring/analysis.js} +24 -359
- package/dist/adapters/postgresql/tools/monitoring/analysis.js.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring/basic.d.ts +17 -0
- package/dist/adapters/postgresql/tools/monitoring/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring/basic.js +432 -0
- package/dist/adapters/postgresql/tools/monitoring/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring/index.d.ts +16 -0
- package/dist/adapters/postgresql/tools/monitoring/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring/index.js +31 -0
- package/dist/adapters/postgresql/tools/monitoring/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning/index.d.ts +15 -0
- package/dist/adapters/postgresql/tools/partitioning/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning/index.js +23 -0
- package/dist/adapters/postgresql/tools/partitioning/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning/info.d.ts +11 -0
- package/dist/adapters/postgresql/tools/partitioning/info.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning/info.js +302 -0
- package/dist/adapters/postgresql/tools/partitioning/info.js.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning/management.d.ts +28 -0
- package/dist/adapters/postgresql/tools/partitioning/management.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/{partitioning.js → partitioning/management.js} +48 -307
- package/dist/adapters/postgresql/tools/partitioning/management.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/helpers.d.ts +29 -0
- package/dist/adapters/postgresql/tools/partman/helpers.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partman/helpers.js +59 -0
- package/dist/adapters/postgresql/tools/partman/helpers.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/index.d.ts +2 -1
- package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/index.js +4 -2
- package/dist/adapters/postgresql/tools/partman/index.js.map +1 -1
- package/dist/adapters/postgresql/tools/partman/maintenance.d.ts +20 -0
- package/dist/adapters/postgresql/tools/partman/maintenance.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partman/maintenance.js +496 -0
- package/dist/adapters/postgresql/tools/partman/maintenance.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/management.js +438 -383
- package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
- package/dist/adapters/postgresql/tools/partman/operations.d.ts +1 -13
- package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/operations.js +171 -652
- 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 +69 -42
- package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/anomaly-detection.d.ts +18 -0
- package/dist/adapters/postgresql/tools/performance/anomaly-detection.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/anomaly-detection.js +533 -0
- package/dist/adapters/postgresql/tools/performance/anomaly-detection.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/diagnostics.d.ts +11 -0
- package/dist/adapters/postgresql/tools/performance/diagnostics.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/diagnostics.js +332 -0
- package/dist/adapters/postgresql/tools/performance/diagnostics.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/index.d.ts +1 -1
- package/dist/adapters/postgresql/tools/performance/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/index.js +7 -1
- package/dist/adapters/postgresql/tools/performance/index.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.js +80 -55
- 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 +18 -11
- 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 +439 -318
- 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 +45 -77
- package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/basic.js +121 -93
- package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/schema/index.d.ts +16 -0
- package/dist/adapters/postgresql/tools/schema/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/schema/index.js +32 -0
- package/dist/adapters/postgresql/tools/schema/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/schema/objects.d.ts +15 -0
- package/dist/adapters/postgresql/tools/schema/objects.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/schema/objects.js +378 -0
- package/dist/adapters/postgresql/tools/schema/objects.js.map +1 -0
- package/dist/adapters/postgresql/tools/schema/views.d.ts +15 -0
- package/dist/adapters/postgresql/tools/schema/views.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/{schema.js → schema/views.js} +64 -386
- package/dist/adapters/postgresql/tools/schema/views.js.map +1 -0
- package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/stats/advanced.js +1 -218
- package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/stats/math-utils.d.ts +33 -0
- package/dist/adapters/postgresql/tools/stats/math-utils.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/stats/math-utils.js +225 -0
- package/dist/adapters/postgresql/tools/stats/math-utils.js.map +1 -0
- package/dist/adapters/postgresql/tools/text/index.d.ts +16 -0
- package/dist/adapters/postgresql/tools/text/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/text/index.js +33 -0
- package/dist/adapters/postgresql/tools/text/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/text/matching.d.ts +17 -0
- package/dist/adapters/postgresql/tools/text/matching.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/text/matching.js +565 -0
- package/dist/adapters/postgresql/tools/text/matching.js.map +1 -0
- package/dist/adapters/postgresql/tools/text/search.d.ts +17 -0
- package/dist/adapters/postgresql/tools/text/search.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/text/search.js +653 -0
- package/dist/adapters/postgresql/tools/text/search.js.map +1 -0
- package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/transactions.js +11 -27
- package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/{basic.d.ts → data.d.ts} +10 -8
- package/dist/adapters/postgresql/tools/vector/data.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/data.js +540 -0
- package/dist/adapters/postgresql/tools/vector/data.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/index.js +6 -2
- package/dist/adapters/postgresql/tools/vector/index.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/management.d.ts +11 -0
- package/dist/adapters/postgresql/tools/vector/management.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/management.js +425 -0
- package/dist/adapters/postgresql/tools/vector/management.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/query.d.ts +14 -0
- package/dist/adapters/postgresql/tools/vector/query.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/query.js +767 -0
- package/dist/adapters/postgresql/tools/vector/query.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/{advanced.d.ts → search-advanced.d.ts} +4 -5
- package/dist/adapters/postgresql/tools/vector/search-advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/search-advanced.js +626 -0
- package/dist/adapters/postgresql/tools/vector/search-advanced.js.map +1 -0
- package/dist/auth/scopes.d.ts.map +1 -1
- package/dist/auth/scopes.js +3 -1
- package/dist/auth/scopes.js.map +1 -1
- package/dist/cli/args.d.ts +3 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +4 -3
- package/dist/cli/args.js.map +1 -1
- package/dist/cli.js +16 -4
- package/dist/cli.js.map +1 -1
- package/dist/codemode/api/aliases.d.ts +14 -0
- package/dist/codemode/api/aliases.d.ts.map +1 -0
- package/dist/codemode/api/aliases.js +503 -0
- package/dist/codemode/api/aliases.js.map +1 -0
- package/dist/codemode/api/group-api.d.ts +23 -0
- package/dist/codemode/api/group-api.d.ts.map +1 -0
- package/dist/codemode/api/group-api.js +179 -0
- package/dist/codemode/api/group-api.js.map +1 -0
- package/dist/codemode/{api.d.ts → api/index.d.ts} +5 -4
- package/dist/codemode/api/index.d.ts.map +1 -0
- package/dist/codemode/api/index.js +195 -0
- package/dist/codemode/api/index.js.map +1 -0
- package/dist/codemode/api/maps.d.ts +47 -0
- package/dist/codemode/api/maps.d.ts.map +1 -0
- package/dist/codemode/api/maps.js +529 -0
- package/dist/codemode/api/maps.js.map +1 -0
- package/dist/codemode/api/normalize.d.ts +13 -0
- package/dist/codemode/api/normalize.d.ts.map +1 -0
- package/dist/codemode/api/normalize.js +120 -0
- package/dist/codemode/api/normalize.js.map +1 -0
- package/dist/codemode/index.d.ts +1 -1
- package/dist/codemode/index.d.ts.map +1 -1
- package/dist/codemode/index.js +1 -1
- package/dist/codemode/index.js.map +1 -1
- package/dist/codemode/sandbox.d.ts.map +1 -1
- package/dist/codemode/sandbox.js +8 -25
- package/dist/codemode/sandbox.js.map +1 -1
- package/dist/filtering/ToolConstants.d.ts +11 -11
- package/dist/filtering/ToolConstants.d.ts.map +1 -1
- package/dist/filtering/ToolConstants.js +28 -15
- package/dist/filtering/ToolConstants.js.map +1 -1
- package/dist/filtering/ToolFilter.d.ts +0 -32
- package/dist/filtering/ToolFilter.d.ts.map +1 -1
- package/dist/filtering/ToolFilter.js +0 -43
- package/dist/filtering/ToolFilter.js.map +1 -1
- package/dist/server/McpServer.d.ts +1 -1
- package/dist/server/McpServer.d.ts.map +1 -1
- package/dist/server/McpServer.js +1 -2
- package/dist/server/McpServer.js.map +1 -1
- package/dist/transports/http.d.ts +55 -10
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +301 -50
- package/dist/transports/http.js.map +1 -1
- package/dist/types/filtering.d.ts +1 -1
- package/dist/types/filtering.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/mcp.d.ts +0 -21
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/schema.d.ts +0 -79
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/utils/fts-config.d.ts +0 -6
- package/dist/utils/fts-config.d.ts.map +1 -1
- package/dist/utils/fts-config.js +1 -1
- package/dist/utils/fts-config.js.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/identifiers.d.ts.map +1 -1
- package/dist/utils/identifiers.js +6 -6
- package/dist/utils/identifiers.js.map +1 -1
- package/dist/utils/logger.d.ts +6 -6
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +18 -15
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/progress-utils.d.ts +3 -14
- package/dist/utils/progress-utils.d.ts.map +1 -1
- package/dist/utils/progress-utils.js +2 -21
- package/dist/utils/progress-utils.js.map +1 -1
- package/dist/utils/version.d.ts +9 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +12 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/utils/where-clause.d.ts +4 -0
- package/dist/utils/where-clause.d.ts.map +1 -1
- package/dist/utils/where-clause.js +16 -0
- package/dist/utils/where-clause.js.map +1 -1
- package/package.json +6 -4
- package/dist/adapters/postgresql/schemas/core.d.ts.map +0 -1
- package/dist/adapters/postgresql/schemas/core.js.map +0 -1
- package/dist/adapters/postgresql/schemas/extensions.d.ts +0 -852
- package/dist/adapters/postgresql/schemas/extensions.d.ts.map +0 -1
- package/dist/adapters/postgresql/schemas/extensions.js +0 -1202
- package/dist/adapters/postgresql/schemas/extensions.js.map +0 -1
- package/dist/adapters/postgresql/schemas/jsonb.d.ts +0 -541
- package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +0 -1
- package/dist/adapters/postgresql/schemas/jsonb.js +0 -814
- package/dist/adapters/postgresql/schemas/jsonb.js.map +0 -1
- package/dist/adapters/postgresql/schemas/postgis.d.ts.map +0 -1
- package/dist/adapters/postgresql/schemas/postgis.js.map +0 -1
- package/dist/adapters/postgresql/schemas/stats.d.ts.map +0 -1
- package/dist/adapters/postgresql/schemas/stats.js.map +0 -1
- package/dist/adapters/postgresql/tools/citext.d.ts +0 -18
- package/dist/adapters/postgresql/tools/citext.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/citext.js.map +0 -1
- package/dist/adapters/postgresql/tools/introspection.d.ts +0 -15
- package/dist/adapters/postgresql/tools/introspection.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/introspection.js +0 -1682
- package/dist/adapters/postgresql/tools/introspection.js.map +0 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +0 -1
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +0 -20
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/jsonb/basic.js.map +0 -1
- package/dist/adapters/postgresql/tools/monitoring.d.ts +0 -13
- package/dist/adapters/postgresql/tools/monitoring.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/monitoring.js.map +0 -1
- package/dist/adapters/postgresql/tools/partitioning.d.ts +0 -13
- package/dist/adapters/postgresql/tools/partitioning.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/partitioning.js.map +0 -1
- package/dist/adapters/postgresql/tools/schema.d.ts +0 -13
- package/dist/adapters/postgresql/tools/schema.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/schema.js.map +0 -1
- package/dist/adapters/postgresql/tools/text.d.ts +0 -13
- package/dist/adapters/postgresql/tools/text.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/text.js +0 -1082
- package/dist/adapters/postgresql/tools/text.js.map +0 -1
- package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/vector/advanced.js +0 -958
- package/dist/adapters/postgresql/tools/vector/advanced.js.map +0 -1
- package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +0 -1
- package/dist/adapters/postgresql/tools/vector/basic.js +0 -1165
- package/dist/adapters/postgresql/tools/vector/basic.js.map +0 -1
- package/dist/codemode/api.d.ts.map +0 -1
- package/dist/codemode/api.js +0 -1544
- package/dist/codemode/api.js.map +0 -1
- package/dist/utils/promptGenerator.d.ts +0 -20
- package/dist/utils/promptGenerator.d.ts.map +0 -1
- package/dist/utils/promptGenerator.js +0 -81
- package/dist/utils/promptGenerator.js.map +0 -1
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PostgreSQL Partitioning Tools
|
|
2
|
+
* PostgreSQL Partitioning Tools - Management
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* 6 tools total.
|
|
4
|
+
* Partition management: list, create table, create partition, attach.
|
|
6
5
|
*/
|
|
7
|
-
import { readOnly, write
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { sanitizeIdentifier, sanitizeTableName, } from "
|
|
11
|
-
import {
|
|
12
|
-
// Base schemas for MCP visibility
|
|
13
|
-
CreatePartitionedTableSchemaBase, CreatePartitionSchemaBase, AttachPartitionSchemaBase, DetachPartitionSchemaBase, ListPartitionsSchemaBase, PartitionInfoSchemaBase,
|
|
14
|
-
// Preprocessed schemas for handler parsing
|
|
15
|
-
CreatePartitionedTableSchema, CreatePartitionSchema, AttachPartitionSchema, DetachPartitionSchema, ListPartitionsSchema, PartitionInfoSchema,
|
|
16
|
-
// Output schemas
|
|
17
|
-
ListPartitionsOutputSchema, CreatePartitionedTableOutputSchema, CreatePartitionOutputSchema, AttachPartitionOutputSchema, DetachPartitionOutputSchema, PartitionInfoOutputSchema, } from "../schemas/index.js";
|
|
6
|
+
import { readOnly, write } from "../../../../utils/annotations.js";
|
|
7
|
+
import { getToolIcons } from "../../../../utils/icons.js";
|
|
8
|
+
import { formatPostgresError } from "../core/error-helpers.js";
|
|
9
|
+
import { sanitizeIdentifier, sanitizeTableName, } from "../../../../utils/identifiers.js";
|
|
10
|
+
import { CreatePartitionedTableSchema, CreatePartitionedTableSchemaBase, CreatePartitionSchema, CreatePartitionSchemaBase, ListPartitionsSchema, ListPartitionsSchemaBase, ListPartitionsOutputSchema, CreatePartitionedTableOutputSchema, CreatePartitionOutputSchema, } from "../../schemas/index.js";
|
|
18
11
|
/**
|
|
19
12
|
* Parse schema.table format identifier
|
|
20
13
|
* Returns { table, schema } with schema extracted from prefix if present
|
|
21
14
|
*/
|
|
22
|
-
function parseSchemaTable(identifier, defaultSchema) {
|
|
15
|
+
export function parseSchemaTable(identifier, defaultSchema) {
|
|
23
16
|
if (identifier.includes(".")) {
|
|
24
17
|
const parts = identifier.split(".");
|
|
25
18
|
return {
|
|
@@ -32,7 +25,7 @@ function parseSchemaTable(identifier, defaultSchema) {
|
|
|
32
25
|
/**
|
|
33
26
|
* Format bytes to human-readable string with consistent formatting
|
|
34
27
|
*/
|
|
35
|
-
function formatBytes(bytes) {
|
|
28
|
+
export function formatBytes(bytes) {
|
|
36
29
|
if (bytes < 1024)
|
|
37
30
|
return `${String(bytes)} B`;
|
|
38
31
|
if (bytes < 1024 * 1024)
|
|
@@ -45,11 +38,11 @@ function formatBytes(bytes) {
|
|
|
45
38
|
* Check table existence and partition status
|
|
46
39
|
* Returns: 'partitioned' | 'not_partitioned' | 'not_found'
|
|
47
40
|
*/
|
|
48
|
-
async function checkTablePartitionStatus(adapter, table, schema) {
|
|
41
|
+
export async function checkTablePartitionStatus(adapter, table, schema) {
|
|
49
42
|
// 'r' = regular table, 'p' = partitioned table
|
|
50
|
-
const checkSql = `SELECT c.relkind FROM pg_class c
|
|
43
|
+
const checkSql = `SELECT c.relkind FROM pg_class c
|
|
51
44
|
JOIN pg_namespace n ON c.relnamespace = n.oid
|
|
52
|
-
WHERE c.relname = $1 AND n.nspname = $2
|
|
45
|
+
WHERE c.relname = $1 AND n.nspname = $2
|
|
53
46
|
AND c.relkind IN ('r', 'p')`;
|
|
54
47
|
const result = await adapter.executeQuery(checkSql, [table, schema]);
|
|
55
48
|
const rows = result.rows ?? [];
|
|
@@ -58,20 +51,7 @@ async function checkTablePartitionStatus(adapter, table, schema) {
|
|
|
58
51
|
}
|
|
59
52
|
return rows[0]?.["relkind"] === "p" ? "partitioned" : "not_partitioned";
|
|
60
53
|
}
|
|
61
|
-
|
|
62
|
-
* Get all partitioning tools
|
|
63
|
-
*/
|
|
64
|
-
export function getPartitioningTools(adapter) {
|
|
65
|
-
return [
|
|
66
|
-
createListPartitionsTool(adapter),
|
|
67
|
-
createPartitionedTableTool(adapter),
|
|
68
|
-
createPartitionTool(adapter),
|
|
69
|
-
createAttachPartitionTool(adapter),
|
|
70
|
-
createDetachPartitionTool(adapter),
|
|
71
|
-
createPartitionInfoTool(adapter),
|
|
72
|
-
];
|
|
73
|
-
}
|
|
74
|
-
function createListPartitionsTool(adapter) {
|
|
54
|
+
export function createListPartitionsTool(adapter) {
|
|
75
55
|
return {
|
|
76
56
|
name: "pg_list_partitions",
|
|
77
57
|
description: "List all partitions of a partitioned table. Returns warning if table is not partitioned.",
|
|
@@ -82,7 +62,18 @@ function createListPartitionsTool(adapter) {
|
|
|
82
62
|
icons: getToolIcons("partitioning", readOnly("List Partitions")),
|
|
83
63
|
handler: async (params, _context) => {
|
|
84
64
|
// Use preprocessed schema for alias resolution
|
|
85
|
-
|
|
65
|
+
let parsed;
|
|
66
|
+
try {
|
|
67
|
+
parsed = ListPartitionsSchema.parse(params);
|
|
68
|
+
}
|
|
69
|
+
catch (zodError) {
|
|
70
|
+
return {
|
|
71
|
+
success: false,
|
|
72
|
+
error: formatPostgresError(zodError, {
|
|
73
|
+
tool: "pg_list_partitions",
|
|
74
|
+
}),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
86
77
|
// Parse schema.table format if present
|
|
87
78
|
let tableName = parsed.table;
|
|
88
79
|
let schemaName = parsed.schema ?? "public";
|
|
@@ -96,24 +87,20 @@ function createListPartitionsTool(adapter) {
|
|
|
96
87
|
const tableStatus = await checkTablePartitionStatus(adapter, resolvedTable, schemaName);
|
|
97
88
|
if (tableStatus === "not_found") {
|
|
98
89
|
return {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
truncated: false,
|
|
102
|
-
warning: `Table '${schemaName}.${resolvedTable}' does not exist.`,
|
|
90
|
+
success: false,
|
|
91
|
+
error: `Table "${schemaName}.${resolvedTable}" does not exist`,
|
|
103
92
|
};
|
|
104
93
|
}
|
|
105
94
|
if (tableStatus === "not_partitioned") {
|
|
106
95
|
return {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
truncated: false,
|
|
110
|
-
warning: `Table '${schemaName}.${resolvedTable}' exists but is not partitioned. Use pg_create_partitioned_table to create a partitioned table.`,
|
|
96
|
+
success: false,
|
|
97
|
+
error: `Table "${schemaName}.${resolvedTable}" exists but is not partitioned. Use pg_create_partitioned_table to create a partitioned table.`,
|
|
111
98
|
};
|
|
112
99
|
}
|
|
113
100
|
// Resolve limit: default 50, 0 = no limit
|
|
114
101
|
const limit = parsed.limit ?? 50;
|
|
115
102
|
// Build query with optional limit
|
|
116
|
-
let sql = `SELECT
|
|
103
|
+
let sql = `SELECT
|
|
117
104
|
c.relname as partition_name,
|
|
118
105
|
pg_get_expr(c.relpartbound, c.oid) as bounds,
|
|
119
106
|
pg_table_size(c.oid) as size_bytes,
|
|
@@ -161,7 +148,7 @@ function createListPartitionsTool(adapter) {
|
|
|
161
148
|
},
|
|
162
149
|
};
|
|
163
150
|
}
|
|
164
|
-
function createPartitionedTableTool(adapter) {
|
|
151
|
+
export function createPartitionedTableTool(adapter) {
|
|
165
152
|
return {
|
|
166
153
|
name: "pg_create_partitioned_table",
|
|
167
154
|
description: "Create a partitioned table. Columns: notNull, primaryKey, unique, default. Note: primaryKey/unique must include the partition key column.",
|
|
@@ -178,7 +165,9 @@ function createPartitionedTableTool(adapter) {
|
|
|
178
165
|
catch (zodError) {
|
|
179
166
|
return {
|
|
180
167
|
success: false,
|
|
181
|
-
error:
|
|
168
|
+
error: formatPostgresError(zodError, {
|
|
169
|
+
tool: "pg_create_partitioned_table",
|
|
170
|
+
}),
|
|
182
171
|
};
|
|
183
172
|
}
|
|
184
173
|
const { name, schema, columns, partitionBy, partitionKey, primaryKey } = parsed;
|
|
@@ -293,7 +282,7 @@ function createPartitionedTableTool(adapter) {
|
|
|
293
282
|
},
|
|
294
283
|
};
|
|
295
284
|
}
|
|
296
|
-
function createPartitionTool(adapter) {
|
|
285
|
+
export function createPartitionTool(adapter) {
|
|
297
286
|
return {
|
|
298
287
|
name: "pg_create_partition",
|
|
299
288
|
description: "Create a partition. Use subpartitionBy/subpartitionKey to make it sub-partitionable for multi-level partitioning.",
|
|
@@ -304,7 +293,18 @@ function createPartitionTool(adapter) {
|
|
|
304
293
|
icons: getToolIcons("partitioning", write("Create Partition")),
|
|
305
294
|
handler: async (params, _context) => {
|
|
306
295
|
// Preprocessing resolves parent from parent/parentTable/table aliases
|
|
307
|
-
|
|
296
|
+
let parsed;
|
|
297
|
+
try {
|
|
298
|
+
parsed = CreatePartitionSchema.parse(params);
|
|
299
|
+
}
|
|
300
|
+
catch (zodError) {
|
|
301
|
+
return {
|
|
302
|
+
success: false,
|
|
303
|
+
error: formatPostgresError(zodError, {
|
|
304
|
+
tool: "pg_create_partition",
|
|
305
|
+
}),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
308
|
const { parent, name, schema, forValues, subpartitionBy, subpartitionKey, } = parsed;
|
|
309
309
|
// Validate sub-partitioning parameters
|
|
310
310
|
if (subpartitionBy !== undefined && subpartitionKey === undefined) {
|
|
@@ -381,263 +381,4 @@ function createPartitionTool(adapter) {
|
|
|
381
381
|
},
|
|
382
382
|
};
|
|
383
383
|
}
|
|
384
|
-
|
|
385
|
-
return {
|
|
386
|
-
name: "pg_attach_partition",
|
|
387
|
-
description: "Attach an existing table as a partition.",
|
|
388
|
-
group: "partitioning",
|
|
389
|
-
inputSchema: AttachPartitionSchemaBase, // Base schema for MCP visibility
|
|
390
|
-
outputSchema: AttachPartitionOutputSchema,
|
|
391
|
-
annotations: write("Attach Partition"),
|
|
392
|
-
icons: getToolIcons("partitioning", write("Attach Partition")),
|
|
393
|
-
handler: async (params, _context) => {
|
|
394
|
-
const { parent, partition, forValues, schema } = AttachPartitionSchema.parse(params);
|
|
395
|
-
// Check parent table existence and partition status before SQL execution
|
|
396
|
-
const parsedParentCheck = parseSchemaTable(parent, schema);
|
|
397
|
-
const parentStatus = await checkTablePartitionStatus(adapter, parsedParentCheck.table, parsedParentCheck.schema);
|
|
398
|
-
if (parentStatus === "not_found") {
|
|
399
|
-
return {
|
|
400
|
-
success: false,
|
|
401
|
-
error: `Parent table '${parsedParentCheck.schema}.${parsedParentCheck.table}' does not exist.`,
|
|
402
|
-
};
|
|
403
|
-
}
|
|
404
|
-
if (parentStatus === "not_partitioned") {
|
|
405
|
-
return {
|
|
406
|
-
success: false,
|
|
407
|
-
error: `Parent table '${parsedParentCheck.schema}.${parsedParentCheck.table}' exists but is not partitioned.`,
|
|
408
|
-
};
|
|
409
|
-
}
|
|
410
|
-
// Check partition table exists (it must exist as a standalone table to attach)
|
|
411
|
-
const parsedPartCheck = parseSchemaTable(partition, schema);
|
|
412
|
-
const partCheckSql = `SELECT 1 FROM pg_class c JOIN pg_namespace n ON c.relnamespace = n.oid WHERE c.relname = $1 AND n.nspname = $2 AND c.relkind IN ('r', 'p')`;
|
|
413
|
-
const partCheckResult = await adapter.executeQuery(partCheckSql, [
|
|
414
|
-
parsedPartCheck.table,
|
|
415
|
-
parsedPartCheck.schema,
|
|
416
|
-
]);
|
|
417
|
-
if ((partCheckResult.rows ?? []).length === 0) {
|
|
418
|
-
return {
|
|
419
|
-
success: false,
|
|
420
|
-
error: `Partition table '${parsedPartCheck.schema}.${parsedPartCheck.table}' does not exist.`,
|
|
421
|
-
};
|
|
422
|
-
}
|
|
423
|
-
// Parse schema.table format from parent and partition (takes priority over explicit schema)
|
|
424
|
-
const parsedParent = parseSchemaTable(parent, schema);
|
|
425
|
-
const parsedPartition = parseSchemaTable(partition, schema);
|
|
426
|
-
// Use parent's schema if partition doesn't have schema prefix and no explicit schema
|
|
427
|
-
const resolvedPartitionSchema = partition.includes(".")
|
|
428
|
-
? parsedPartition.schema
|
|
429
|
-
: (schema ?? parsedParent.schema);
|
|
430
|
-
const parentName = sanitizeTableName(parsedParent.table, parsedParent.schema);
|
|
431
|
-
const partitionName = sanitizeTableName(parsedPartition.table, resolvedPartitionSchema);
|
|
432
|
-
// Handle DEFAULT partition
|
|
433
|
-
// Accept both "__DEFAULT__" (from preprocessor when isDefault: true) and explicit "DEFAULT"
|
|
434
|
-
const isDefaultPartition = forValues === "__DEFAULT__" ||
|
|
435
|
-
forValues.toUpperCase() === "DEFAULT" ||
|
|
436
|
-
forValues.toUpperCase().trim() === "DEFAULT";
|
|
437
|
-
let sql;
|
|
438
|
-
let boundsDescription;
|
|
439
|
-
if (isDefaultPartition) {
|
|
440
|
-
sql = `ALTER TABLE ${parentName} ATTACH PARTITION ${partitionName} DEFAULT`;
|
|
441
|
-
boundsDescription = "DEFAULT";
|
|
442
|
-
}
|
|
443
|
-
else {
|
|
444
|
-
sql = `ALTER TABLE ${parentName} ATTACH PARTITION ${partitionName} FOR VALUES ${forValues}`;
|
|
445
|
-
boundsDescription = forValues;
|
|
446
|
-
}
|
|
447
|
-
try {
|
|
448
|
-
await adapter.executeQuery(sql);
|
|
449
|
-
}
|
|
450
|
-
catch (error) {
|
|
451
|
-
return {
|
|
452
|
-
success: false,
|
|
453
|
-
error: formatPostgresError(error, {
|
|
454
|
-
tool: "pg_attach_partition",
|
|
455
|
-
table: parsedPartition.table,
|
|
456
|
-
}),
|
|
457
|
-
};
|
|
458
|
-
}
|
|
459
|
-
return {
|
|
460
|
-
success: true,
|
|
461
|
-
parent: parsedParent.table,
|
|
462
|
-
partition: parsedPartition.table,
|
|
463
|
-
bounds: boundsDescription,
|
|
464
|
-
};
|
|
465
|
-
},
|
|
466
|
-
};
|
|
467
|
-
}
|
|
468
|
-
function createDetachPartitionTool(adapter) {
|
|
469
|
-
return {
|
|
470
|
-
name: "pg_detach_partition",
|
|
471
|
-
description: "Detach a partition. Use concurrently: true for non-blocking. Use finalize: true only after an interrupted CONCURRENTLY detach.",
|
|
472
|
-
group: "partitioning",
|
|
473
|
-
inputSchema: DetachPartitionSchemaBase, // Base schema for MCP visibility
|
|
474
|
-
outputSchema: DetachPartitionOutputSchema,
|
|
475
|
-
annotations: destructive("Detach Partition"),
|
|
476
|
-
icons: getToolIcons("partitioning", destructive("Detach Partition")),
|
|
477
|
-
handler: async (params, _context) => {
|
|
478
|
-
const { parent, partition, concurrently, finalize, schema } = DetachPartitionSchema.parse(params);
|
|
479
|
-
// Check parent table existence and partition status before SQL execution
|
|
480
|
-
const parsedParentCheck = parseSchemaTable(parent, schema);
|
|
481
|
-
const parentStatus = await checkTablePartitionStatus(adapter, parsedParentCheck.table, parsedParentCheck.schema);
|
|
482
|
-
if (parentStatus === "not_found") {
|
|
483
|
-
return {
|
|
484
|
-
success: false,
|
|
485
|
-
error: `Parent table '${parsedParentCheck.schema}.${parsedParentCheck.table}' does not exist.`,
|
|
486
|
-
};
|
|
487
|
-
}
|
|
488
|
-
if (parentStatus === "not_partitioned") {
|
|
489
|
-
return {
|
|
490
|
-
success: false,
|
|
491
|
-
error: `Parent table '${parsedParentCheck.schema}.${parsedParentCheck.table}' exists but is not partitioned.`,
|
|
492
|
-
};
|
|
493
|
-
}
|
|
494
|
-
// Check partition table exists
|
|
495
|
-
const parsedPartCheck = parseSchemaTable(partition, schema);
|
|
496
|
-
const partCheckSql = `SELECT 1 FROM pg_class c JOIN pg_namespace n ON c.relnamespace = n.oid WHERE c.relname = $1 AND n.nspname = $2`;
|
|
497
|
-
const partCheckResult = await adapter.executeQuery(partCheckSql, [
|
|
498
|
-
parsedPartCheck.table,
|
|
499
|
-
parsedPartCheck.schema,
|
|
500
|
-
]);
|
|
501
|
-
if ((partCheckResult.rows ?? []).length === 0) {
|
|
502
|
-
return {
|
|
503
|
-
success: false,
|
|
504
|
-
error: `Partition '${parsedPartCheck.schema}.${parsedPartCheck.table}' does not exist.`,
|
|
505
|
-
};
|
|
506
|
-
}
|
|
507
|
-
// Parse schema.table format from parent and partition (takes priority over explicit schema)
|
|
508
|
-
const parsedParent = parseSchemaTable(parent, schema);
|
|
509
|
-
const parsedPartition = parseSchemaTable(partition, schema);
|
|
510
|
-
// Use parent's schema if partition doesn't have schema prefix and no explicit schema
|
|
511
|
-
const resolvedPartitionSchema = partition.includes(".")
|
|
512
|
-
? parsedPartition.schema
|
|
513
|
-
: (schema ?? parsedParent.schema);
|
|
514
|
-
const parentName = sanitizeTableName(parsedParent.table, parsedParent.schema);
|
|
515
|
-
const partitionName = sanitizeTableName(parsedPartition.table, resolvedPartitionSchema);
|
|
516
|
-
// Build the appropriate clause
|
|
517
|
-
let clause = "";
|
|
518
|
-
if (finalize === true) {
|
|
519
|
-
// FINALIZE is used to complete an interrupted CONCURRENTLY detach
|
|
520
|
-
clause = " FINALIZE";
|
|
521
|
-
}
|
|
522
|
-
else if (concurrently === true) {
|
|
523
|
-
clause = " CONCURRENTLY";
|
|
524
|
-
}
|
|
525
|
-
const sql = `ALTER TABLE ${parentName} DETACH PARTITION ${partitionName}${clause}`;
|
|
526
|
-
try {
|
|
527
|
-
await adapter.executeQuery(sql);
|
|
528
|
-
}
|
|
529
|
-
catch (error) {
|
|
530
|
-
return {
|
|
531
|
-
success: false,
|
|
532
|
-
error: formatPostgresError(error, {
|
|
533
|
-
tool: "pg_detach_partition",
|
|
534
|
-
table: parsedPartition.table,
|
|
535
|
-
}),
|
|
536
|
-
};
|
|
537
|
-
}
|
|
538
|
-
return {
|
|
539
|
-
success: true,
|
|
540
|
-
parent: parsedParent.table,
|
|
541
|
-
partition: parsedPartition.table,
|
|
542
|
-
};
|
|
543
|
-
},
|
|
544
|
-
};
|
|
545
|
-
}
|
|
546
|
-
function createPartitionInfoTool(adapter) {
|
|
547
|
-
return {
|
|
548
|
-
name: "pg_partition_info",
|
|
549
|
-
description: "Get detailed information about a partitioned table. Returns warning if table is not partitioned.",
|
|
550
|
-
group: "partitioning",
|
|
551
|
-
inputSchema: PartitionInfoSchemaBase, // Base schema for MCP visibility with alias support
|
|
552
|
-
outputSchema: PartitionInfoOutputSchema,
|
|
553
|
-
annotations: readOnly("Partition Info"),
|
|
554
|
-
icons: getToolIcons("partitioning", readOnly("Partition Info")),
|
|
555
|
-
handler: async (params, _context) => {
|
|
556
|
-
// Use preprocessed schema for alias resolution
|
|
557
|
-
const parsed = PartitionInfoSchema.parse(params);
|
|
558
|
-
// Parse schema.table format if present
|
|
559
|
-
let tableName = parsed.table;
|
|
560
|
-
let schemaName = parsed.schema ?? "public";
|
|
561
|
-
if (tableName.includes(".")) {
|
|
562
|
-
const parts = tableName.split(".");
|
|
563
|
-
schemaName = parts[0] ?? "public";
|
|
564
|
-
tableName = parts[1] ?? tableName;
|
|
565
|
-
}
|
|
566
|
-
// Check table existence and partition status
|
|
567
|
-
const resolvedTable = tableName;
|
|
568
|
-
const tableStatus = await checkTablePartitionStatus(adapter, resolvedTable, schemaName);
|
|
569
|
-
if (tableStatus === "not_found") {
|
|
570
|
-
return {
|
|
571
|
-
tableInfo: null,
|
|
572
|
-
partitions: [],
|
|
573
|
-
totalSizeBytes: 0,
|
|
574
|
-
warning: `Table '${schemaName}.${resolvedTable}' does not exist.`,
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
|
-
if (tableStatus === "not_partitioned") {
|
|
578
|
-
return {
|
|
579
|
-
tableInfo: null,
|
|
580
|
-
partitions: [],
|
|
581
|
-
totalSizeBytes: 0,
|
|
582
|
-
warning: `Table '${schemaName}.${resolvedTable}' exists but is not partitioned. Use pg_create_partitioned_table to create a partitioned table.`,
|
|
583
|
-
};
|
|
584
|
-
}
|
|
585
|
-
const partInfoSql = `SELECT
|
|
586
|
-
c.relname as table_name,
|
|
587
|
-
CASE pt.partstrat
|
|
588
|
-
WHEN 'r' THEN 'RANGE'
|
|
589
|
-
WHEN 'l' THEN 'LIST'
|
|
590
|
-
WHEN 'h' THEN 'HASH'
|
|
591
|
-
END as partition_strategy,
|
|
592
|
-
pg_get_partkeydef(c.oid) as partition_key,
|
|
593
|
-
(SELECT count(*) FROM pg_inherits WHERE inhparent = c.oid) as partition_count
|
|
594
|
-
FROM pg_class c
|
|
595
|
-
JOIN pg_partitioned_table pt ON c.oid = pt.partrelid
|
|
596
|
-
JOIN pg_namespace n ON c.relnamespace = n.oid
|
|
597
|
-
WHERE c.relname = $1 AND n.nspname = $2`;
|
|
598
|
-
const partInfo = await adapter.executeQuery(partInfoSql, [
|
|
599
|
-
resolvedTable,
|
|
600
|
-
schemaName,
|
|
601
|
-
]);
|
|
602
|
-
const partitionsSql = `SELECT
|
|
603
|
-
c.relname as partition_name,
|
|
604
|
-
pg_get_expr(c.relpartbound, c.oid) as bounds,
|
|
605
|
-
pg_table_size(c.oid) as size_bytes,
|
|
606
|
-
GREATEST(0, (SELECT reltuples::bigint FROM pg_class WHERE oid = c.oid)) as approx_rows
|
|
607
|
-
FROM pg_class c
|
|
608
|
-
JOIN pg_inherits i ON c.oid = i.inhrelid
|
|
609
|
-
WHERE i.inhparent = ($1 || '.' || $2)::regclass
|
|
610
|
-
ORDER BY c.relname`;
|
|
611
|
-
const partitionsResult = await adapter.executeQuery(partitionsSql, [
|
|
612
|
-
schemaName,
|
|
613
|
-
resolvedTable,
|
|
614
|
-
]);
|
|
615
|
-
// Calculate total size before mapping
|
|
616
|
-
const totalSizeBytes = (partitionsResult.rows ?? []).reduce((sum, row) => sum + Number(row["size_bytes"] ?? 0), 0);
|
|
617
|
-
// Format sizes consistently and coerce numeric fields
|
|
618
|
-
const partitions = (partitionsResult.rows ?? []).map((row) => {
|
|
619
|
-
const sizeBytes = Number(row["size_bytes"] ?? 0);
|
|
620
|
-
return {
|
|
621
|
-
...row,
|
|
622
|
-
size_bytes: sizeBytes,
|
|
623
|
-
size: formatBytes(sizeBytes),
|
|
624
|
-
approx_rows: Number(row["approx_rows"] ?? 0),
|
|
625
|
-
};
|
|
626
|
-
});
|
|
627
|
-
// Coerce tableInfo numeric fields
|
|
628
|
-
const tableInfoRaw = partInfo.rows?.[0];
|
|
629
|
-
const tableInfo = tableInfoRaw
|
|
630
|
-
? {
|
|
631
|
-
...tableInfoRaw,
|
|
632
|
-
partition_count: Number(tableInfoRaw["partition_count"] ?? 0),
|
|
633
|
-
}
|
|
634
|
-
: null;
|
|
635
|
-
return {
|
|
636
|
-
tableInfo,
|
|
637
|
-
partitions,
|
|
638
|
-
totalSizeBytes,
|
|
639
|
-
};
|
|
640
|
-
},
|
|
641
|
-
};
|
|
642
|
-
}
|
|
643
|
-
//# sourceMappingURL=partitioning.js.map
|
|
384
|
+
//# sourceMappingURL=management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"management.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/partitioning/management.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL pg_partman Extension Tools - Shared Helpers
|
|
3
|
+
*
|
|
4
|
+
* Common utilities used by partman operation and maintenance tools.
|
|
5
|
+
*/
|
|
6
|
+
import type { PostgresAdapter } from "../../PostgresAdapter.js";
|
|
7
|
+
/**
|
|
8
|
+
* Detect the schema where pg_partman is installed.
|
|
9
|
+
* Newer versions install to 'public' by default, older versions use 'partman'.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getPartmanSchema(adapter: PostgresAdapter): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Ensure the 'partman' schema alias exists when pg_partman is installed in 'public'.
|
|
14
|
+
*
|
|
15
|
+
* pg_partman's partition_data_time function contains a hardcoded fully-qualified
|
|
16
|
+
* call to 'partman.check_control_type(...)'. When pg_partman is installed in
|
|
17
|
+
* the 'public' schema (the default for newer versions), this fails with
|
|
18
|
+
* 'schema "partman" does not exist'. Since the reference is fully-qualified,
|
|
19
|
+
* SET search_path cannot resolve it.
|
|
20
|
+
*
|
|
21
|
+
* This function creates the 'partman' schema if needed and adds a thin wrapper
|
|
22
|
+
* function that delegates to public.check_control_type().
|
|
23
|
+
*/
|
|
24
|
+
export declare function ensurePartmanSchemaAlias(adapter: PostgresAdapter): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Execute a pg_partman PROCEDURE, ensuring schema aliases are in place.
|
|
27
|
+
*/
|
|
28
|
+
export declare function callPartmanProcedure(adapter: PostgresAdapter, partmanSchema: string, sql: string): Promise<void>;
|
|
29
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/partman/helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL pg_partman Extension Tools - Shared Helpers
|
|
3
|
+
*
|
|
4
|
+
* Common utilities used by partman operation and maintenance tools.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Detect the schema where pg_partman is installed.
|
|
8
|
+
* Newer versions install to 'public' by default, older versions use 'partman'.
|
|
9
|
+
*/
|
|
10
|
+
export async function getPartmanSchema(adapter) {
|
|
11
|
+
const result = await adapter.executeQuery(`
|
|
12
|
+
SELECT table_schema FROM information_schema.tables
|
|
13
|
+
WHERE table_name = 'part_config'
|
|
14
|
+
AND table_schema IN ('partman', 'public')
|
|
15
|
+
LIMIT 1
|
|
16
|
+
`);
|
|
17
|
+
return result.rows?.[0]?.["table_schema"] ?? "partman";
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Ensure the 'partman' schema alias exists when pg_partman is installed in 'public'.
|
|
21
|
+
*
|
|
22
|
+
* pg_partman's partition_data_time function contains a hardcoded fully-qualified
|
|
23
|
+
* call to 'partman.check_control_type(...)'. When pg_partman is installed in
|
|
24
|
+
* the 'public' schema (the default for newer versions), this fails with
|
|
25
|
+
* 'schema "partman" does not exist'. Since the reference is fully-qualified,
|
|
26
|
+
* SET search_path cannot resolve it.
|
|
27
|
+
*
|
|
28
|
+
* This function creates the 'partman' schema if needed and adds a thin wrapper
|
|
29
|
+
* function that delegates to public.check_control_type().
|
|
30
|
+
*/
|
|
31
|
+
export async function ensurePartmanSchemaAlias(adapter) {
|
|
32
|
+
try {
|
|
33
|
+
await adapter.executeQuery("CREATE SCHEMA IF NOT EXISTS partman");
|
|
34
|
+
await adapter.executeQuery(`
|
|
35
|
+
CREATE OR REPLACE FUNCTION partman.check_control_type(
|
|
36
|
+
p_parent_schema text, p_parent_tablename text, p_control text
|
|
37
|
+
) RETURNS TABLE(general_type text, exact_type text)
|
|
38
|
+
LANGUAGE sql STABLE AS $$
|
|
39
|
+
SELECT * FROM public.check_control_type(p_parent_schema, p_parent_tablename, p_control)
|
|
40
|
+
$$
|
|
41
|
+
`);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Schema creation may fail due to permissions — proceed anyway,
|
|
45
|
+
// the actual CALL will produce its own clear error
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Execute a pg_partman PROCEDURE, ensuring schema aliases are in place.
|
|
50
|
+
*/
|
|
51
|
+
export async function callPartmanProcedure(adapter, partmanSchema, sql) {
|
|
52
|
+
// When pg_partman is installed in 'public', ensure the 'partman' schema alias
|
|
53
|
+
// exists for hardcoded partman.* references inside pg_partman's functions
|
|
54
|
+
if (partmanSchema === "public") {
|
|
55
|
+
await ensurePartmanSchemaAlias(adapter);
|
|
56
|
+
}
|
|
57
|
+
await adapter.executeQuery(sql);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/partman/helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;;;;;KAKvC,CAAC,CAAC;IACL,OAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAY,IAAI,SAAS,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAwB;IAExB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,YAAY,CAAC,qCAAqC,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,YAAY,CAAC;;;;;;;KAO1B,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;QAChE,mDAAmD;IACrD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAwB,EACxB,aAAqB,EACrB,GAAW;IAEX,8EAA8E;IAC9E,0EAA0E;IAC1E,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
import type { PostgresAdapter } from "../../PostgresAdapter.js";
|
|
11
11
|
import type { ToolDefinition } from "../../../../types/index.js";
|
|
12
12
|
import { createPartmanExtensionTool, createPartmanCreateParentTool, createPartmanRunMaintenanceTool, createPartmanShowPartitionsTool, createPartmanShowConfigTool } from "./management.js";
|
|
13
|
-
import { createPartmanCheckDefaultTool, createPartmanPartitionDataTool
|
|
13
|
+
import { createPartmanCheckDefaultTool, createPartmanPartitionDataTool } from "./operations.js";
|
|
14
|
+
import { createPartmanSetRetentionTool, createPartmanUndoPartitionTool, createPartmanAnalyzeHealthTool } from "./maintenance.js";
|
|
14
15
|
/**
|
|
15
16
|
* Get all pg_partman tools
|
|
16
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/partman/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/partman/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAa1E;AAGD,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,GAC/B,CAAC"}
|
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
*/
|
|
10
10
|
// Management tools
|
|
11
11
|
import { createPartmanExtensionTool, createPartmanCreateParentTool, createPartmanRunMaintenanceTool, createPartmanShowPartitionsTool, createPartmanShowConfigTool, } from "./management.js";
|
|
12
|
-
// Operations tools
|
|
13
|
-
import { createPartmanCheckDefaultTool, createPartmanPartitionDataTool,
|
|
12
|
+
// Operations tools (check default, partition data)
|
|
13
|
+
import { createPartmanCheckDefaultTool, createPartmanPartitionDataTool, } from "./operations.js";
|
|
14
|
+
// Maintenance tools (retention, undo, analyze health)
|
|
15
|
+
import { createPartmanSetRetentionTool, createPartmanUndoPartitionTool, createPartmanAnalyzeHealthTool, } from "./maintenance.js";
|
|
14
16
|
/**
|
|
15
17
|
* Get all pg_partman tools
|
|
16
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/partman/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,mBAAmB;AACnB,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAEzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/partman/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,mBAAmB;AACnB,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAEzB,mDAAmD;AACnD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,sDAAsD;AACtD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,OAAO;QACL,0BAA0B,CAAC,OAAO,CAAC;QACnC,6BAA6B,CAAC,OAAO,CAAC;QACtC,+BAA+B,CAAC,OAAO,CAAC;QACxC,+BAA+B,CAAC,OAAO,CAAC;QACxC,2BAA2B,CAAC,OAAO,CAAC;QACpC,6BAA6B,CAAC,OAAO,CAAC;QACtC,8BAA8B,CAAC,OAAO,CAAC;QACvC,6BAA6B,CAAC,OAAO,CAAC;QACtC,8BAA8B,CAAC,OAAO,CAAC;QACvC,8BAA8B,CAAC,OAAO,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,qCAAqC;AACrC,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,GAC/B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL pg_partman Extension Tools - Maintenance
|
|
3
|
+
*
|
|
4
|
+
* Maintenance and lifecycle tools: set_retention, undo_partition, analyze_health.
|
|
5
|
+
*/
|
|
6
|
+
import type { PostgresAdapter } from "../../PostgresAdapter.js";
|
|
7
|
+
import type { ToolDefinition } from "../../../../types/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Configure retention policies
|
|
10
|
+
*/
|
|
11
|
+
export declare function createPartmanSetRetentionTool(adapter: PostgresAdapter): ToolDefinition;
|
|
12
|
+
/**
|
|
13
|
+
* Undo partitioning - convert back to regular table
|
|
14
|
+
*/
|
|
15
|
+
export declare function createPartmanUndoPartitionTool(adapter: PostgresAdapter): ToolDefinition;
|
|
16
|
+
/**
|
|
17
|
+
* Analyze partition health and provide recommendations
|
|
18
|
+
*/
|
|
19
|
+
export declare function createPartmanAnalyzeHealthTool(adapter: PostgresAdapter): ToolDefinition;
|
|
20
|
+
//# sourceMappingURL=maintenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/partman/maintenance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AAepC;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,eAAe,GACvB,cAAc,CA+IhB;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,eAAe,GACvB,cAAc,CAkIhB;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,eAAe,GACvB,cAAc,CAmUhB"}
|