@neverinfamous/postgres-mcp 1.3.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +244 -129
- package/dist/__tests__/benchmarks/codemode.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/codemode.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/codemode.bench.js +159 -0
- package/dist/__tests__/benchmarks/codemode.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/connection-pool.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/connection-pool.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/connection-pool.bench.js +123 -0
- package/dist/__tests__/benchmarks/connection-pool.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts +11 -0
- package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/handler-dispatch.bench.js +199 -0
- package/dist/__tests__/benchmarks/handler-dispatch.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts +15 -0
- package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/logger-sanitization.bench.js +155 -0
- package/dist/__tests__/benchmarks/logger-sanitization.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.js +181 -0
- package/dist/__tests__/benchmarks/resource-prompts.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts +11 -0
- package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/schema-parsing.bench.js +209 -0
- package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts +9 -0
- package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/tool-filtering.bench.js +83 -0
- package/dist/__tests__/benchmarks/tool-filtering.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/transport-auth.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/transport-auth.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/transport-auth.bench.js +128 -0
- package/dist/__tests__/benchmarks/transport-auth.bench.js.map +1 -0
- package/dist/__tests__/benchmarks/utilities.bench.d.ts +10 -0
- package/dist/__tests__/benchmarks/utilities.bench.d.ts.map +1 -0
- package/dist/__tests__/benchmarks/utilities.bench.js +164 -0
- package/dist/__tests__/benchmarks/utilities.bench.js.map +1 -0
- package/dist/__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 -1
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
- package/dist/adapters/DatabaseAdapter.js +23 -7
- package/dist/adapters/DatabaseAdapter.js.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.d.ts +5 -22
- package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.js +30 -519
- 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 +39 -25
- package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.js +54 -25
- 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} +12 -167
- 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 +8 -7
- package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/index.js +16 -10
- package/dist/adapters/postgresql/schemas/index.js.map +1 -1
- package/dist/adapters/postgresql/schemas/introspection.d.ts +445 -0
- package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/introspection.js +481 -0
- package/dist/adapters/postgresql/schemas/introspection.js.map +1 -0
- 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 +45 -29
- package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.js +51 -18
- package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.d.ts +28 -32
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.js +82 -53
- package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partman.d.ts +78 -7
- package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partman.js +54 -41
- package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.d.ts +37 -19
- package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.js +54 -12
- package/dist/adapters/postgresql/schemas/performance.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.js → postgis/advanced.js} +4 -467
- 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/basic.js +493 -0
- 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 +50 -32
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.js +93 -26
- 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 +44 -32
- package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.js +53 -36
- 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 +12 -16
- package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
- package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/admin.js +82 -67
- 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 +119 -97
- 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} +131 -281
- 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.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/codemode/index.js +3 -12
- 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 +116 -211
- 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 +153 -128
- 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 +149 -70
- 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 +574 -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 +638 -0
- package/dist/adapters/postgresql/tools/introspection/graph.js.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/index.d.ts +19 -0
- package/dist/adapters/postgresql/tools/introspection/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/introspection/index.js +36 -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 +599 -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/read.js +543 -0
- 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} +39 -361
- 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.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/ltree.js +358 -259
- package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
- 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} +37 -361
- 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 +452 -417
- 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 +173 -654
- 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 +79 -45
- package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.js +83 -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 +441 -286
- 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 +67 -79
- 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 +30 -25
- 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 +137 -100
- 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} +91 -339
- 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 +40 -235
- 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 +45 -30
- package/dist/adapters/postgresql/tools/stats/basic.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/auth-context.d.ts +28 -0
- package/dist/auth/auth-context.d.ts.map +1 -0
- package/dist/auth/auth-context.js +37 -0
- package/dist/auth/auth-context.js.map +1 -0
- package/dist/auth/scope-map.d.ts +20 -0
- package/dist/auth/scope-map.d.ts.map +1 -0
- package/dist/auth/scope-map.js +40 -0
- package/dist/auth/scope-map.js.map +1 -0
- package/dist/auth/scopes.d.ts.map +1 -1
- package/dist/auth/scopes.js +2 -0
- package/dist/auth/scopes.js.map +1 -1
- package/dist/cli/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 +11 -5
- 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 +192 -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 +523 -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 -3
- package/dist/codemode/index.d.ts.map +1 -1
- package/dist/codemode/index.js +1 -5
- package/dist/codemode/index.js.map +1 -1
- package/dist/codemode/sandbox.d.ts +14 -1
- package/dist/codemode/sandbox.d.ts.map +1 -1
- package/dist/codemode/sandbox.js +66 -44
- package/dist/codemode/sandbox.js.map +1 -1
- package/dist/codemode/types.d.ts.map +1 -1
- package/dist/codemode/types.js +3 -0
- package/dist/codemode/types.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +5 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +91 -43
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/filtering/ToolConstants.d.ts +22 -19
- package/dist/filtering/ToolConstants.d.ts.map +1 -1
- package/dist/filtering/ToolConstants.js +48 -37
- package/dist/filtering/ToolConstants.js.map +1 -1
- package/dist/filtering/ToolFilter.d.ts.map +1 -1
- package/dist/filtering/ToolFilter.js +10 -13
- package/dist/filtering/ToolFilter.js.map +1 -1
- package/dist/pool/ConnectionPool.js +1 -1
- package/dist/pool/ConnectionPool.js.map +1 -1
- package/dist/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 +44 -10
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +327 -40
- package/dist/transports/http.js.map +1 -1
- package/dist/types/filtering.d.ts +2 -2
- package/dist/types/filtering.d.ts.map +1 -1
- package/dist/utils/icons.d.ts.map +1 -1
- package/dist/utils/icons.js +5 -0
- package/dist/utils/icons.js.map +1 -1
- package/dist/utils/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 +2 -2
- package/dist/utils/progress-utils.d.ts.map +1 -1
- package/dist/utils/progress-utils.js +2 -3
- 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 +40 -0
- package/dist/utils/where-clause.js.map +1 -1
- package/package.json +19 -14
- 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 -833
- package/dist/adapters/postgresql/schemas/extensions.d.ts.map +0 -1
- package/dist/adapters/postgresql/schemas/extensions.js +0 -1170
- package/dist/adapters/postgresql/schemas/extensions.js.map +0 -1
- package/dist/adapters/postgresql/schemas/jsonb.d.ts +0 -533
- package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +0 -1
- package/dist/adapters/postgresql/schemas/jsonb.js +0 -790
- 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/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 +0 -915
- 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 -903
- 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 -1510
- package/dist/codemode/api.js.map +0 -1
- package/dist/codemode/sandbox-factory.d.ts +0 -72
- package/dist/codemode/sandbox-factory.d.ts.map +0 -1
- package/dist/codemode/sandbox-factory.js +0 -88
- package/dist/codemode/sandbox-factory.js.map +0 -1
- package/dist/codemode/worker-sandbox.d.ts +0 -82
- package/dist/codemode/worker-sandbox.d.ts.map +0 -1
- package/dist/codemode/worker-sandbox.js +0 -244
- package/dist/codemode/worker-sandbox.js.map +0 -1
- package/dist/codemode/worker-script.d.ts +0 -8
- package/dist/codemode/worker-script.d.ts.map +0 -1
- package/dist/codemode/worker-script.js +0 -113
- package/dist/codemode/worker-script.js.map +0 -1
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* postgres-mcp - Schema Operations
|
|
3
|
+
*
|
|
4
|
+
* Standalone schema inspection functions extracted from PostgresAdapter.
|
|
5
|
+
* These handle SQL queries for table listing, table description, index retrieval,
|
|
6
|
+
* schema listing, and extension checks. Pure parsing helpers are also included.
|
|
7
|
+
*/
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Pure parsing helpers (no DB access)
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* Parse columns from PostgreSQL array format.
|
|
13
|
+
* Handles both native arrays and string representations like "{col1,col2}".
|
|
14
|
+
*/
|
|
15
|
+
export function parseColumnsArray(columns) {
|
|
16
|
+
if (Array.isArray(columns)) {
|
|
17
|
+
return columns;
|
|
18
|
+
}
|
|
19
|
+
if (typeof columns === "string") {
|
|
20
|
+
// Handle PostgreSQL array string format: "{col1,col2}"
|
|
21
|
+
const trimmed = columns.replace(/^{|}$/g, "");
|
|
22
|
+
if (trimmed === "")
|
|
23
|
+
return [];
|
|
24
|
+
return trimmed.split(",").map((c) => c.trim().replace(/^"|"$/g, ""));
|
|
25
|
+
}
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extract expression columns from index definition when column names are NULL.
|
|
30
|
+
* Expression indexes (like LOWER(name)) have attnum=0 which returns NULL from pg_attribute.
|
|
31
|
+
* This parses the index definition to extract the actual expressions.
|
|
32
|
+
*/
|
|
33
|
+
export function extractIndexColumns(columns, definition) {
|
|
34
|
+
// If no NULL columns, return as-is
|
|
35
|
+
if (!columns.some((c) => c === null || c === "NULL" || c === "")) {
|
|
36
|
+
return columns;
|
|
37
|
+
}
|
|
38
|
+
// Find the expression portion with balanced parentheses
|
|
39
|
+
// Format: CREATE [UNIQUE] INDEX name ON table USING method (col1, expr1, ...) [WHERE ...]
|
|
40
|
+
const exprPart = extractIndexExpressionPart(definition);
|
|
41
|
+
if (!exprPart) {
|
|
42
|
+
return columns;
|
|
43
|
+
}
|
|
44
|
+
// Parse the column expressions, handling nested parentheses
|
|
45
|
+
const exprs = parseIndexExpressions(exprPart);
|
|
46
|
+
// If counts don't match, something is off - return original
|
|
47
|
+
if (exprs.length !== columns.length) {
|
|
48
|
+
return columns;
|
|
49
|
+
}
|
|
50
|
+
// Replace NULL columns with the parsed expressions
|
|
51
|
+
return columns.map((col, i) => {
|
|
52
|
+
if (col === null || col === "NULL" || col === "") {
|
|
53
|
+
return exprs[i]?.trim() ?? col;
|
|
54
|
+
}
|
|
55
|
+
return col;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Extract the column expression part from an index definition, handling nested parentheses.
|
|
60
|
+
* E.g., "CREATE INDEX idx ON tbl USING btree (lower(name))" → "lower(name)"
|
|
61
|
+
*/
|
|
62
|
+
export function extractIndexExpressionPart(definition) {
|
|
63
|
+
// Find "USING method (" or just the first "(" after ON
|
|
64
|
+
const usingMatch = /USING\s+\w+\s*\(/i.exec(definition);
|
|
65
|
+
if (!usingMatch) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const startIdx = usingMatch.index + usingMatch[0].length - 1; // Position of opening paren
|
|
69
|
+
let depth = 0;
|
|
70
|
+
let endIdx = -1;
|
|
71
|
+
for (let i = startIdx; i < definition.length; i++) {
|
|
72
|
+
if (definition[i] === "(") {
|
|
73
|
+
depth++;
|
|
74
|
+
}
|
|
75
|
+
else if (definition[i] === ")") {
|
|
76
|
+
depth--;
|
|
77
|
+
if (depth === 0) {
|
|
78
|
+
endIdx = i;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (endIdx === -1) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
return definition.substring(startIdx + 1, endIdx);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Parse index expressions from the column list, handling nested parentheses.
|
|
90
|
+
* E.g., "LOWER(name), id, UPPER(TRIM(email))" → ["LOWER(name)", "id", "UPPER(TRIM(email))"]
|
|
91
|
+
*/
|
|
92
|
+
export function parseIndexExpressions(columnList) {
|
|
93
|
+
const result = [];
|
|
94
|
+
let current = "";
|
|
95
|
+
let depth = 0;
|
|
96
|
+
for (const char of columnList) {
|
|
97
|
+
if (char === "(") {
|
|
98
|
+
depth++;
|
|
99
|
+
current += char;
|
|
100
|
+
}
|
|
101
|
+
else if (char === ")") {
|
|
102
|
+
depth--;
|
|
103
|
+
current += char;
|
|
104
|
+
}
|
|
105
|
+
else if (char === "," && depth === 0) {
|
|
106
|
+
result.push(current.trim());
|
|
107
|
+
current = "";
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
current += char;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (current.trim()) {
|
|
114
|
+
result.push(current.trim());
|
|
115
|
+
}
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
// Schema query functions
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
/**
|
|
122
|
+
* Get full schema info: tables, views, materialized views, and indexes.
|
|
123
|
+
*/
|
|
124
|
+
export async function getSchemaInfo(executeQuery, cache) {
|
|
125
|
+
const tables = await queryListTables(executeQuery, cache);
|
|
126
|
+
const views = tables.filter((t) => t.type === "view");
|
|
127
|
+
const materializedViews = tables.filter((t) => t.type === "materialized_view");
|
|
128
|
+
const realTables = tables.filter((t) => t.type === "table" || t.type === "partitioned_table");
|
|
129
|
+
// Performance optimization: fetch all indexes in a single query instead of N+1
|
|
130
|
+
const indexes = await queryAllIndexes(executeQuery, cache);
|
|
131
|
+
return {
|
|
132
|
+
tables: realTables,
|
|
133
|
+
views,
|
|
134
|
+
materializedViews,
|
|
135
|
+
indexes,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get all indexes across all user tables in a single query.
|
|
140
|
+
* Performance optimization: eliminates N+1 query pattern.
|
|
141
|
+
*/
|
|
142
|
+
export async function queryAllIndexes(executeQuery, cache) {
|
|
143
|
+
// Check cache first
|
|
144
|
+
const cached = cache.getCached("all_indexes");
|
|
145
|
+
if (cached)
|
|
146
|
+
return cached;
|
|
147
|
+
const result = await executeQuery(`
|
|
148
|
+
SELECT
|
|
149
|
+
i.relname as name,
|
|
150
|
+
t.relname as table_name,
|
|
151
|
+
n.nspname as schema_name,
|
|
152
|
+
am.amname as type,
|
|
153
|
+
ix.indisunique as is_unique,
|
|
154
|
+
pg_get_indexdef(ix.indexrelid) as definition,
|
|
155
|
+
array_agg(a.attname ORDER BY x.ordinality) as columns,
|
|
156
|
+
pg_relation_size(i.oid) as size_bytes,
|
|
157
|
+
COALESCE(pg_stat_get_numscans(i.oid), 0) as num_scans,
|
|
158
|
+
COALESCE(pg_stat_get_tuples_returned(i.oid), 0) as tuples_read,
|
|
159
|
+
COALESCE(pg_stat_get_tuples_fetched(i.oid), 0) as tuples_fetched
|
|
160
|
+
FROM pg_index ix
|
|
161
|
+
JOIN pg_class t ON t.oid = ix.indrelid
|
|
162
|
+
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
163
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
164
|
+
JOIN pg_am am ON am.oid = i.relam
|
|
165
|
+
CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS x(attnum, ordinality)
|
|
166
|
+
LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = x.attnum
|
|
167
|
+
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
|
|
168
|
+
AND n.nspname !~ '^pg_toast'
|
|
169
|
+
GROUP BY i.relname, t.relname, n.nspname, am.amname, ix.indisunique, ix.indexrelid, i.oid
|
|
170
|
+
ORDER BY n.nspname, t.relname, i.relname
|
|
171
|
+
`);
|
|
172
|
+
const indexes = (result.rows ?? []).map((row) => {
|
|
173
|
+
const rawColumns = parseColumnsArray(row["columns"]);
|
|
174
|
+
const definition = row["definition"];
|
|
175
|
+
const indexType = row["type"];
|
|
176
|
+
return {
|
|
177
|
+
name: row["name"],
|
|
178
|
+
tableName: row["table_name"],
|
|
179
|
+
schemaName: row["schema_name"],
|
|
180
|
+
columns: extractIndexColumns(rawColumns, definition),
|
|
181
|
+
unique: row["is_unique"],
|
|
182
|
+
type: indexType,
|
|
183
|
+
sizeBytes: Number(row["size_bytes"]) || undefined,
|
|
184
|
+
numberOfScans: Number(row["num_scans"]) || undefined,
|
|
185
|
+
tuplesRead: Number(row["tuples_read"]) || undefined,
|
|
186
|
+
tuplesFetched: Number(row["tuples_fetched"]) || undefined,
|
|
187
|
+
};
|
|
188
|
+
});
|
|
189
|
+
cache.setCache("all_indexes", indexes);
|
|
190
|
+
return indexes;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* List all user tables, views, and materialized views.
|
|
194
|
+
*/
|
|
195
|
+
export async function queryListTables(executeQuery, cache) {
|
|
196
|
+
// Performance optimization: return cached result if within TTL
|
|
197
|
+
const cached = cache.getCached("list_tables");
|
|
198
|
+
if (cached)
|
|
199
|
+
return cached;
|
|
200
|
+
const result = await executeQuery(`
|
|
201
|
+
SELECT
|
|
202
|
+
c.relname as name,
|
|
203
|
+
n.nspname as schema,
|
|
204
|
+
CASE c.relkind
|
|
205
|
+
WHEN 'r' THEN 'table'
|
|
206
|
+
WHEN 'v' THEN 'view'
|
|
207
|
+
WHEN 'm' THEN 'materialized_view'
|
|
208
|
+
WHEN 'f' THEN 'foreign_table'
|
|
209
|
+
WHEN 'p' THEN 'partitioned_table'
|
|
210
|
+
END as type,
|
|
211
|
+
pg_catalog.pg_get_userbyid(c.relowner) as owner,
|
|
212
|
+
CASE WHEN c.reltuples = -1 THEN NULL ELSE c.reltuples END::bigint as row_count,
|
|
213
|
+
COALESCE(s.n_live_tup, 0)::bigint as live_row_estimate,
|
|
214
|
+
(c.reltuples = -1) as stats_stale,
|
|
215
|
+
pg_catalog.pg_table_size(c.oid) as size_bytes,
|
|
216
|
+
pg_catalog.pg_total_relation_size(c.oid) as total_size_bytes,
|
|
217
|
+
obj_description(c.oid, 'pg_class') as comment
|
|
218
|
+
FROM pg_catalog.pg_class c
|
|
219
|
+
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
|
|
220
|
+
LEFT JOIN pg_stat_user_tables s ON s.relid = c.oid
|
|
221
|
+
WHERE c.relkind IN ('r', 'v', 'm', 'f', 'p')
|
|
222
|
+
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
|
|
223
|
+
AND n.nspname !~ '^pg_toast'
|
|
224
|
+
ORDER BY n.nspname, c.relname
|
|
225
|
+
`);
|
|
226
|
+
const tables = (result.rows ?? []).map((row) => {
|
|
227
|
+
const rowCount = row["row_count"];
|
|
228
|
+
const liveRowEstimate = Number(row["live_row_estimate"]) || 0;
|
|
229
|
+
const statsStale = row["stats_stale"] === true;
|
|
230
|
+
// Use live_row_estimate as fallback when stats are stale
|
|
231
|
+
const effectiveRowCount = rowCount !== null ? Number(rowCount) : liveRowEstimate;
|
|
232
|
+
return {
|
|
233
|
+
name: row["name"],
|
|
234
|
+
schema: row["schema"],
|
|
235
|
+
type: row["type"],
|
|
236
|
+
owner: row["owner"],
|
|
237
|
+
rowCount: effectiveRowCount,
|
|
238
|
+
sizeBytes: Number(row["size_bytes"]) || undefined,
|
|
239
|
+
totalSizeBytes: Number(row["total_size_bytes"]) || undefined,
|
|
240
|
+
comment: row["comment"],
|
|
241
|
+
statsStale,
|
|
242
|
+
};
|
|
243
|
+
});
|
|
244
|
+
cache.setCache("list_tables", tables);
|
|
245
|
+
return tables;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Describe a single table with columns, indexes, constraints, and foreign keys.
|
|
249
|
+
*/
|
|
250
|
+
export async function queryDescribeTable(executeQuery, cache, tableName, schemaName = "public") {
|
|
251
|
+
// Performance optimization: return cached result if within TTL
|
|
252
|
+
const cacheKey = `describe:${schemaName}.${tableName}`;
|
|
253
|
+
const cached = cache.getCached(cacheKey);
|
|
254
|
+
if (cached)
|
|
255
|
+
return cached;
|
|
256
|
+
// Get column information including foreign key references
|
|
257
|
+
const columnsResult = await executeQuery(`
|
|
258
|
+
SELECT
|
|
259
|
+
a.attname as name,
|
|
260
|
+
pg_catalog.format_type(a.atttypid, a.atttypmod) as type,
|
|
261
|
+
NOT a.attnotnull as nullable,
|
|
262
|
+
COALESCE(
|
|
263
|
+
(SELECT true FROM pg_constraint c
|
|
264
|
+
WHERE c.conrelid = a.attrelid
|
|
265
|
+
AND a.attnum = ANY(c.conkey)
|
|
266
|
+
AND c.contype = 'p'),
|
|
267
|
+
false
|
|
268
|
+
) as primary_key,
|
|
269
|
+
pg_get_expr(d.adbin, d.adrelid) as default_value,
|
|
270
|
+
a.attgenerated != '' as is_generated,
|
|
271
|
+
pg_get_expr(d.adbin, d.adrelid) as generated_expression,
|
|
272
|
+
col_description(a.attrelid, a.attnum) as comment,
|
|
273
|
+
-- Foreign key reference for this column
|
|
274
|
+
(SELECT json_build_object(
|
|
275
|
+
'table', ref_t.relname,
|
|
276
|
+
'schema', ref_n.nspname,
|
|
277
|
+
'column', ref_a.attname
|
|
278
|
+
)
|
|
279
|
+
FROM pg_constraint c
|
|
280
|
+
JOIN pg_class ref_t ON ref_t.oid = c.confrelid
|
|
281
|
+
JOIN pg_namespace ref_n ON ref_n.oid = ref_t.relnamespace
|
|
282
|
+
JOIN pg_attribute ref_a ON ref_a.attrelid = ref_t.oid
|
|
283
|
+
AND ref_a.attnum = c.confkey[array_position(c.conkey, a.attnum)]
|
|
284
|
+
WHERE c.conrelid = a.attrelid
|
|
285
|
+
AND a.attnum = ANY(c.conkey)
|
|
286
|
+
AND c.contype = 'f'
|
|
287
|
+
LIMIT 1
|
|
288
|
+
) as foreign_key
|
|
289
|
+
FROM pg_catalog.pg_attribute a
|
|
290
|
+
LEFT JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum) = (d.adrelid, d.adnum)
|
|
291
|
+
WHERE a.attrelid = ($1 || '.' || $2)::regclass
|
|
292
|
+
AND a.attnum > 0
|
|
293
|
+
AND NOT a.attisdropped
|
|
294
|
+
ORDER BY a.attnum
|
|
295
|
+
`, [schemaName, tableName]);
|
|
296
|
+
const columns = (columnsResult.rows ?? []).map((row) => {
|
|
297
|
+
const isGenerated = row["is_generated"];
|
|
298
|
+
const fkRef = row["foreign_key"];
|
|
299
|
+
const nullable = row["nullable"];
|
|
300
|
+
return {
|
|
301
|
+
name: row["name"],
|
|
302
|
+
type: row["type"],
|
|
303
|
+
nullable,
|
|
304
|
+
notNull: !nullable, // Alias for consistency with createTable API
|
|
305
|
+
primaryKey: row["primary_key"],
|
|
306
|
+
defaultValue: row["default_value"],
|
|
307
|
+
isGenerated,
|
|
308
|
+
// Only set generatedExpression for actual generated columns
|
|
309
|
+
generatedExpression: isGenerated
|
|
310
|
+
? row["generated_expression"]
|
|
311
|
+
: undefined,
|
|
312
|
+
comment: row["comment"],
|
|
313
|
+
// Include foreign key reference if present
|
|
314
|
+
foreignKey: fkRef
|
|
315
|
+
? {
|
|
316
|
+
table: fkRef.table,
|
|
317
|
+
schema: fkRef.schema,
|
|
318
|
+
column: fkRef.column,
|
|
319
|
+
}
|
|
320
|
+
: undefined,
|
|
321
|
+
};
|
|
322
|
+
});
|
|
323
|
+
// Get table info
|
|
324
|
+
const tableResult = await executeQuery(`
|
|
325
|
+
SELECT
|
|
326
|
+
CASE c.relkind
|
|
327
|
+
WHEN 'r' THEN 'table'
|
|
328
|
+
WHEN 'v' THEN 'view'
|
|
329
|
+
WHEN 'm' THEN 'materialized_view'
|
|
330
|
+
WHEN 'f' THEN 'foreign_table'
|
|
331
|
+
WHEN 'p' THEN 'partitioned_table'
|
|
332
|
+
END as type,
|
|
333
|
+
pg_catalog.pg_get_userbyid(c.relowner) as owner,
|
|
334
|
+
CASE WHEN c.reltuples = -1 THEN NULL ELSE c.reltuples END::bigint as row_count,
|
|
335
|
+
COALESCE(s.n_live_tup, 0)::bigint as live_row_estimate,
|
|
336
|
+
(c.reltuples = -1) as stats_stale,
|
|
337
|
+
obj_description(c.oid, 'pg_class') as comment,
|
|
338
|
+
c.relkind = 'p' as is_partitioned,
|
|
339
|
+
pg_get_partkeydef(c.oid) as partition_key
|
|
340
|
+
FROM pg_catalog.pg_class c
|
|
341
|
+
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
|
|
342
|
+
LEFT JOIN pg_stat_user_tables s ON s.relid = c.oid
|
|
343
|
+
WHERE c.relname = $1
|
|
344
|
+
AND n.nspname = $2
|
|
345
|
+
`, [tableName, schemaName]);
|
|
346
|
+
const tableRow = tableResult.rows?.[0];
|
|
347
|
+
// Get indexes for this table
|
|
348
|
+
const indexesResult = await executeQuery(`
|
|
349
|
+
SELECT
|
|
350
|
+
i.relname as name,
|
|
351
|
+
am.amname as type,
|
|
352
|
+
ix.indisunique as is_unique,
|
|
353
|
+
ix.indisprimary as is_primary,
|
|
354
|
+
pg_get_indexdef(ix.indexrelid) as definition,
|
|
355
|
+
array_agg(a.attname ORDER BY x.ordinality) as columns
|
|
356
|
+
FROM pg_index ix
|
|
357
|
+
JOIN pg_class t ON t.oid = ix.indrelid
|
|
358
|
+
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
359
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
360
|
+
JOIN pg_am am ON am.oid = i.relam
|
|
361
|
+
CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS x(attnum, ordinality)
|
|
362
|
+
LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = x.attnum
|
|
363
|
+
WHERE t.relname = $1 AND n.nspname = $2
|
|
364
|
+
GROUP BY i.relname, am.amname, ix.indisunique, ix.indisprimary, ix.indexrelid
|
|
365
|
+
ORDER BY i.relname
|
|
366
|
+
`, [tableName, schemaName]);
|
|
367
|
+
const indexes = (indexesResult.rows ?? []).map((row) => {
|
|
368
|
+
const rawColumns = parseColumnsArray(row["columns"]);
|
|
369
|
+
const definition = row["definition"];
|
|
370
|
+
return {
|
|
371
|
+
name: row["name"],
|
|
372
|
+
type: row["type"],
|
|
373
|
+
isUnique: row["is_unique"],
|
|
374
|
+
isPrimary: row["is_primary"],
|
|
375
|
+
columns: extractIndexColumns(rawColumns, definition),
|
|
376
|
+
definition,
|
|
377
|
+
};
|
|
378
|
+
});
|
|
379
|
+
// Get constraints (CHECK, UNIQUE, PRIMARY KEY, EXCLUSION - FK handled separately)
|
|
380
|
+
const constraintsResult = await executeQuery(`
|
|
381
|
+
SELECT
|
|
382
|
+
c.conname as name,
|
|
383
|
+
CASE c.contype
|
|
384
|
+
WHEN 'p' THEN 'primary_key'
|
|
385
|
+
WHEN 'c' THEN 'check'
|
|
386
|
+
WHEN 'u' THEN 'unique'
|
|
387
|
+
WHEN 'x' THEN 'exclusion'
|
|
388
|
+
END as type,
|
|
389
|
+
pg_get_constraintdef(c.oid) as definition,
|
|
390
|
+
array_agg(a.attname ORDER BY x.ordinality) FILTER (WHERE a.attname IS NOT NULL) as columns
|
|
391
|
+
FROM pg_constraint c
|
|
392
|
+
JOIN pg_class t ON t.oid = c.conrelid
|
|
393
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
394
|
+
LEFT JOIN LATERAL unnest(c.conkey) WITH ORDINALITY AS x(attnum, ordinality) ON true
|
|
395
|
+
LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = x.attnum
|
|
396
|
+
WHERE t.relname = $1
|
|
397
|
+
AND n.nspname = $2
|
|
398
|
+
AND c.contype IN ('p', 'c', 'u', 'x')
|
|
399
|
+
GROUP BY c.conname, c.contype, c.oid
|
|
400
|
+
ORDER BY
|
|
401
|
+
CASE c.contype WHEN 'p' THEN 0 WHEN 'u' THEN 1 WHEN 'c' THEN 2 ELSE 3 END,
|
|
402
|
+
c.conname
|
|
403
|
+
`, [tableName, schemaName]);
|
|
404
|
+
const constraints = (constraintsResult.rows ?? []).map((row) => ({
|
|
405
|
+
name: row["name"],
|
|
406
|
+
type: row["type"],
|
|
407
|
+
definition: row["definition"],
|
|
408
|
+
columns: parseColumnsArray(row["columns"]),
|
|
409
|
+
}));
|
|
410
|
+
// Add NOT NULL "constraints" from column info (synthetic constraint entries)
|
|
411
|
+
const notNullConstraints = [];
|
|
412
|
+
for (const col of columns) {
|
|
413
|
+
if (!col.nullable && !col.primaryKey) {
|
|
414
|
+
// Skip primary key columns as they have inherent NOT NULL
|
|
415
|
+
notNullConstraints.push({
|
|
416
|
+
name: `${col.name}_not_null`,
|
|
417
|
+
type: "not_null",
|
|
418
|
+
definition: `NOT NULL`,
|
|
419
|
+
columns: [col.name],
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
// Get foreign keys
|
|
424
|
+
const foreignKeysResult = await executeQuery(`
|
|
425
|
+
SELECT
|
|
426
|
+
c.conname as name,
|
|
427
|
+
a.attname as column,
|
|
428
|
+
ref_t.relname as referenced_table,
|
|
429
|
+
ref_n.nspname as referenced_schema,
|
|
430
|
+
ref_a.attname as referenced_column,
|
|
431
|
+
CASE c.confupdtype
|
|
432
|
+
WHEN 'a' THEN 'NO ACTION'
|
|
433
|
+
WHEN 'r' THEN 'RESTRICT'
|
|
434
|
+
WHEN 'c' THEN 'CASCADE'
|
|
435
|
+
WHEN 'n' THEN 'SET NULL'
|
|
436
|
+
WHEN 'd' THEN 'SET DEFAULT'
|
|
437
|
+
END as on_update,
|
|
438
|
+
CASE c.confdeltype
|
|
439
|
+
WHEN 'a' THEN 'NO ACTION'
|
|
440
|
+
WHEN 'r' THEN 'RESTRICT'
|
|
441
|
+
WHEN 'c' THEN 'CASCADE'
|
|
442
|
+
WHEN 'n' THEN 'SET NULL'
|
|
443
|
+
WHEN 'd' THEN 'SET DEFAULT'
|
|
444
|
+
END as on_delete
|
|
445
|
+
FROM pg_constraint c
|
|
446
|
+
JOIN pg_class t ON t.oid = c.conrelid
|
|
447
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
448
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
|
|
449
|
+
JOIN pg_class ref_t ON ref_t.oid = c.confrelid
|
|
450
|
+
JOIN pg_namespace ref_n ON ref_n.oid = ref_t.relnamespace
|
|
451
|
+
JOIN pg_attribute ref_a ON ref_a.attrelid = ref_t.oid AND ref_a.attnum = ANY(c.confkey)
|
|
452
|
+
WHERE t.relname = $1
|
|
453
|
+
AND n.nspname = $2
|
|
454
|
+
AND c.contype = 'f'
|
|
455
|
+
ORDER BY c.conname
|
|
456
|
+
`, [tableName, schemaName]);
|
|
457
|
+
const foreignKeys = (foreignKeysResult.rows ?? []).map((row) => ({
|
|
458
|
+
name: row["name"],
|
|
459
|
+
column: row["column"],
|
|
460
|
+
referencedTable: row["referenced_table"],
|
|
461
|
+
referencedSchema: row["referenced_schema"],
|
|
462
|
+
referencedColumn: row["referenced_column"],
|
|
463
|
+
onUpdate: row["on_update"],
|
|
464
|
+
onDelete: row["on_delete"],
|
|
465
|
+
}));
|
|
466
|
+
// Extract primary key columns from constraints for convenience
|
|
467
|
+
const pkConstraint = constraints.find((c) => c.type === "primary_key");
|
|
468
|
+
const primaryKey = pkConstraint?.columns ?? null;
|
|
469
|
+
const tableInfo = {
|
|
470
|
+
name: tableName,
|
|
471
|
+
schema: schemaName,
|
|
472
|
+
type: tableRow?.["type"] ?? "table",
|
|
473
|
+
owner: tableRow?.["owner"],
|
|
474
|
+
rowCount: (() => {
|
|
475
|
+
const rc = tableRow?.["row_count"];
|
|
476
|
+
const liveEst = Number(tableRow?.["live_row_estimate"]) || 0;
|
|
477
|
+
return rc !== null && rc !== undefined ? Number(rc) : liveEst;
|
|
478
|
+
})(),
|
|
479
|
+
comment: tableRow?.["comment"],
|
|
480
|
+
isPartitioned: tableRow?.["is_partitioned"],
|
|
481
|
+
partitionKey: tableRow?.["partition_key"],
|
|
482
|
+
columns,
|
|
483
|
+
primaryKey,
|
|
484
|
+
indexes,
|
|
485
|
+
constraints: [...constraints, ...notNullConstraints],
|
|
486
|
+
foreignKeys,
|
|
487
|
+
};
|
|
488
|
+
cache.setCache(cacheKey, tableInfo);
|
|
489
|
+
return tableInfo;
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* List all user schemas.
|
|
493
|
+
*/
|
|
494
|
+
export async function queryListSchemas(executeQuery) {
|
|
495
|
+
const result = await executeQuery(`
|
|
496
|
+
SELECT nspname
|
|
497
|
+
FROM pg_catalog.pg_namespace
|
|
498
|
+
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
|
|
499
|
+
AND nspname !~ '^pg_toast'
|
|
500
|
+
AND nspname !~ '^pg_temp'
|
|
501
|
+
ORDER BY nspname
|
|
502
|
+
`);
|
|
503
|
+
return (result.rows ?? []).map((row) => row["nspname"]);
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Get indexes for a specific table.
|
|
507
|
+
*/
|
|
508
|
+
export async function queryTableIndexes(executeQuery, tableName, schemaName = "public") {
|
|
509
|
+
const result = await executeQuery(`
|
|
510
|
+
SELECT
|
|
511
|
+
i.relname as name,
|
|
512
|
+
am.amname as type,
|
|
513
|
+
ix.indisunique as is_unique,
|
|
514
|
+
pg_get_indexdef(ix.indexrelid) as definition,
|
|
515
|
+
array_agg(a.attname ORDER BY x.ordinality) as columns,
|
|
516
|
+
pg_relation_size(i.oid) as size_bytes,
|
|
517
|
+
COALESCE(pg_stat_get_numscans(i.oid), 0) as num_scans,
|
|
518
|
+
COALESCE(pg_stat_get_tuples_returned(i.oid), 0) as tuples_read,
|
|
519
|
+
COALESCE(pg_stat_get_tuples_fetched(i.oid), 0) as tuples_fetched
|
|
520
|
+
FROM pg_index ix
|
|
521
|
+
JOIN pg_class t ON t.oid = ix.indrelid
|
|
522
|
+
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
523
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
524
|
+
JOIN pg_am am ON am.oid = i.relam
|
|
525
|
+
CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS x(attnum, ordinality)
|
|
526
|
+
LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = x.attnum
|
|
527
|
+
WHERE t.relname = $1
|
|
528
|
+
AND n.nspname = $2
|
|
529
|
+
GROUP BY i.relname, am.amname, ix.indisunique, ix.indexrelid, i.oid
|
|
530
|
+
ORDER BY i.relname
|
|
531
|
+
`, [tableName, schemaName]);
|
|
532
|
+
return (result.rows ?? []).map((row) => {
|
|
533
|
+
const rawColumns = parseColumnsArray(row["columns"]);
|
|
534
|
+
const definition = row["definition"];
|
|
535
|
+
const indexType = row["type"];
|
|
536
|
+
return {
|
|
537
|
+
name: row["name"],
|
|
538
|
+
tableName,
|
|
539
|
+
schemaName,
|
|
540
|
+
columns: extractIndexColumns(rawColumns, definition),
|
|
541
|
+
unique: row["is_unique"],
|
|
542
|
+
type: indexType,
|
|
543
|
+
sizeBytes: Number(row["size_bytes"]) || undefined,
|
|
544
|
+
numberOfScans: Number(row["num_scans"]) || undefined,
|
|
545
|
+
tuplesRead: Number(row["tuples_read"]) || undefined,
|
|
546
|
+
tuplesFetched: Number(row["tuples_fetched"]) || undefined,
|
|
547
|
+
};
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Check if a PostgreSQL extension is installed.
|
|
552
|
+
*/
|
|
553
|
+
export async function queryIsExtensionAvailable(executeQuery, extensionName) {
|
|
554
|
+
const result = await executeQuery(`
|
|
555
|
+
SELECT EXISTS(
|
|
556
|
+
SELECT 1 FROM pg_extension WHERE extname = $1
|
|
557
|
+
) as available
|
|
558
|
+
`, [extensionName]);
|
|
559
|
+
return result.rows?.[0]?.["available"] ?? false;
|
|
560
|
+
}
|
|
561
|
+
//# sourceMappingURL=schema-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-operations.js","sourceRoot":"","sources":["../../../src/adapters/postgresql/schema-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,15 +66,15 @@ export declare const ReindexSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>,
|
|
|
66
66
|
concurrently: z.ZodOptional<z.ZodBoolean>;
|
|
67
67
|
}, z.core.$strip>>;
|
|
68
68
|
export declare const TerminateBackendSchemaBase: z.ZodObject<{
|
|
69
|
-
pid: z.ZodOptional<z.
|
|
70
|
-
processId: z.ZodOptional<z.
|
|
69
|
+
pid: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
70
|
+
processId: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
71
71
|
}, z.core.$strip>;
|
|
72
72
|
export declare const TerminateBackendSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
|
|
73
73
|
pid: z.ZodNumber;
|
|
74
74
|
}, z.core.$strip>>;
|
|
75
75
|
export declare const CancelBackendSchemaBase: z.ZodObject<{
|
|
76
|
-
pid: z.ZodOptional<z.
|
|
77
|
-
processId: z.ZodOptional<z.
|
|
76
|
+
pid: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
77
|
+
processId: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
78
78
|
}, z.core.$strip>;
|
|
79
79
|
export declare const CancelBackendSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
|
|
80
80
|
pid: z.ZodNumber;
|
|
@@ -170,8 +170,8 @@ function preprocessPidParams(input) {
|
|
|
170
170
|
}
|
|
171
171
|
// Base schema for MCP visibility (shows pid and alias)
|
|
172
172
|
export const TerminateBackendSchemaBase = z.object({
|
|
173
|
-
pid: z.number().optional().describe("Process ID to terminate"),
|
|
174
|
-
processId: z.number().optional().describe("Alias for pid"),
|
|
173
|
+
pid: z.coerce.number().optional().describe("Process ID to terminate"),
|
|
174
|
+
processId: z.coerce.number().optional().describe("Alias for pid"),
|
|
175
175
|
});
|
|
176
176
|
// Preprocess schema for handlers
|
|
177
177
|
export const TerminateBackendSchema = z.preprocess(preprocessPidParams, z.object({
|
|
@@ -179,8 +179,8 @@ export const TerminateBackendSchema = z.preprocess(preprocessPidParams, z.object
|
|
|
179
179
|
}));
|
|
180
180
|
// Base schema for MCP visibility (shows pid and alias)
|
|
181
181
|
export const CancelBackendSchemaBase = z.object({
|
|
182
|
-
pid: z.number().optional().describe("Process ID to cancel"),
|
|
183
|
-
processId: z.number().optional().describe("Alias for pid"),
|
|
182
|
+
pid: z.coerce.number().optional().describe("Process ID to cancel"),
|
|
183
|
+
processId: z.coerce.number().optional().describe("Alias for pid"),
|
|
184
184
|
});
|
|
185
185
|
// Preprocess schema for handlers
|
|
186
186
|
export const CancelBackendSchema = z.preprocess(preprocessPidParams, z.object({
|