@neverinfamous/postgres-mcp 1.0.1
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 +21 -0
- package/README.md +515 -0
- package/dist/__tests__/mocks/adapter.d.ts +80 -0
- package/dist/__tests__/mocks/adapter.d.ts.map +1 -0
- package/dist/__tests__/mocks/adapter.js +225 -0
- package/dist/__tests__/mocks/adapter.js.map +1 -0
- package/dist/__tests__/mocks/index.d.ts +11 -0
- package/dist/__tests__/mocks/index.d.ts.map +1 -0
- package/dist/__tests__/mocks/index.js +11 -0
- package/dist/__tests__/mocks/index.js.map +1 -0
- package/dist/__tests__/mocks/pool.d.ts +43 -0
- package/dist/__tests__/mocks/pool.d.ts.map +1 -0
- package/dist/__tests__/mocks/pool.js +71 -0
- package/dist/__tests__/mocks/pool.js.map +1 -0
- package/dist/adapters/DatabaseAdapter.d.ts +139 -0
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
- package/dist/adapters/DatabaseAdapter.js +250 -0
- package/dist/adapters/DatabaseAdapter.js.map +1 -0
- package/dist/adapters/postgresql/PostgresAdapter.d.ts +119 -0
- package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -0
- package/dist/adapters/postgresql/PostgresAdapter.js +902 -0
- package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -0
- package/dist/adapters/postgresql/index.d.ts +5 -0
- package/dist/adapters/postgresql/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/index.js +5 -0
- package/dist/adapters/postgresql/index.js.map +1 -0
- package/dist/adapters/postgresql/prompts/backup.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/backup.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/backup.js +132 -0
- package/dist/adapters/postgresql/prompts/backup.js.map +1 -0
- package/dist/adapters/postgresql/prompts/citext.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/citext.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/citext.js +227 -0
- package/dist/adapters/postgresql/prompts/citext.js.map +1 -0
- package/dist/adapters/postgresql/prompts/extensionSetup.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/extensionSetup.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/extensionSetup.js +282 -0
- package/dist/adapters/postgresql/prompts/extensionSetup.js.map +1 -0
- package/dist/adapters/postgresql/prompts/health.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/health.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/health.js +118 -0
- package/dist/adapters/postgresql/prompts/health.js.map +1 -0
- package/dist/adapters/postgresql/prompts/index.d.ts +13 -0
- package/dist/adapters/postgresql/prompts/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/index.js +308 -0
- package/dist/adapters/postgresql/prompts/index.js.map +1 -0
- package/dist/adapters/postgresql/prompts/indexTuning.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/indexTuning.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/indexTuning.js +130 -0
- package/dist/adapters/postgresql/prompts/indexTuning.js.map +1 -0
- package/dist/adapters/postgresql/prompts/kcache.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/kcache.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/kcache.js +227 -0
- package/dist/adapters/postgresql/prompts/kcache.js.map +1 -0
- package/dist/adapters/postgresql/prompts/ltree.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/ltree.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/ltree.js +286 -0
- package/dist/adapters/postgresql/prompts/ltree.js.map +1 -0
- package/dist/adapters/postgresql/prompts/partman.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/partman.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/partman.js +211 -0
- package/dist/adapters/postgresql/prompts/partman.js.map +1 -0
- package/dist/adapters/postgresql/prompts/pgcron.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/pgcron.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/pgcron.js +233 -0
- package/dist/adapters/postgresql/prompts/pgcron.js.map +1 -0
- package/dist/adapters/postgresql/prompts/pgcrypto.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/pgcrypto.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/pgcrypto.js +299 -0
- package/dist/adapters/postgresql/prompts/pgcrypto.js.map +1 -0
- package/dist/adapters/postgresql/prompts/pgvector.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/pgvector.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/pgvector.js +148 -0
- package/dist/adapters/postgresql/prompts/pgvector.js.map +1 -0
- package/dist/adapters/postgresql/prompts/postgis.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/postgis.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/postgis.js +200 -0
- package/dist/adapters/postgresql/prompts/postgis.js.map +1 -0
- package/dist/adapters/postgresql/resources/activity.d.ts +9 -0
- package/dist/adapters/postgresql/resources/activity.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/activity.js +118 -0
- package/dist/adapters/postgresql/resources/activity.js.map +1 -0
- package/dist/adapters/postgresql/resources/capabilities.d.ts +9 -0
- package/dist/adapters/postgresql/resources/capabilities.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/capabilities.js +182 -0
- package/dist/adapters/postgresql/resources/capabilities.js.map +1 -0
- package/dist/adapters/postgresql/resources/cron.d.ts +9 -0
- package/dist/adapters/postgresql/resources/cron.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/cron.js +156 -0
- package/dist/adapters/postgresql/resources/cron.js.map +1 -0
- package/dist/adapters/postgresql/resources/crypto.d.ts +9 -0
- package/dist/adapters/postgresql/resources/crypto.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/crypto.js +191 -0
- package/dist/adapters/postgresql/resources/crypto.js.map +1 -0
- package/dist/adapters/postgresql/resources/extensions.d.ts +9 -0
- package/dist/adapters/postgresql/resources/extensions.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/extensions.js +85 -0
- package/dist/adapters/postgresql/resources/extensions.js.map +1 -0
- package/dist/adapters/postgresql/resources/health.d.ts +9 -0
- package/dist/adapters/postgresql/resources/health.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/health.js +185 -0
- package/dist/adapters/postgresql/resources/health.js.map +1 -0
- package/dist/adapters/postgresql/resources/index.d.ts +40 -0
- package/dist/adapters/postgresql/resources/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/index.js +87 -0
- package/dist/adapters/postgresql/resources/index.js.map +1 -0
- package/dist/adapters/postgresql/resources/indexes.d.ts +9 -0
- package/dist/adapters/postgresql/resources/indexes.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/indexes.js +130 -0
- package/dist/adapters/postgresql/resources/indexes.js.map +1 -0
- package/dist/adapters/postgresql/resources/kcache.d.ts +9 -0
- package/dist/adapters/postgresql/resources/kcache.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/kcache.js +219 -0
- package/dist/adapters/postgresql/resources/kcache.js.map +1 -0
- package/dist/adapters/postgresql/resources/locks.d.ts +9 -0
- package/dist/adapters/postgresql/resources/locks.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/locks.js +89 -0
- package/dist/adapters/postgresql/resources/locks.js.map +1 -0
- package/dist/adapters/postgresql/resources/partman.d.ts +9 -0
- package/dist/adapters/postgresql/resources/partman.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/partman.js +149 -0
- package/dist/adapters/postgresql/resources/partman.js.map +1 -0
- package/dist/adapters/postgresql/resources/performance.d.ts +9 -0
- package/dist/adapters/postgresql/resources/performance.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/performance.js +170 -0
- package/dist/adapters/postgresql/resources/performance.js.map +1 -0
- package/dist/adapters/postgresql/resources/pool.d.ts +9 -0
- package/dist/adapters/postgresql/resources/pool.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/pool.js +93 -0
- package/dist/adapters/postgresql/resources/pool.js.map +1 -0
- package/dist/adapters/postgresql/resources/postgis.d.ts +9 -0
- package/dist/adapters/postgresql/resources/postgis.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/postgis.js +232 -0
- package/dist/adapters/postgresql/resources/postgis.js.map +1 -0
- package/dist/adapters/postgresql/resources/replication.d.ts +9 -0
- package/dist/adapters/postgresql/resources/replication.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/replication.js +126 -0
- package/dist/adapters/postgresql/resources/replication.js.map +1 -0
- package/dist/adapters/postgresql/resources/schema.d.ts +10 -0
- package/dist/adapters/postgresql/resources/schema.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/schema.js +80 -0
- package/dist/adapters/postgresql/resources/schema.js.map +1 -0
- package/dist/adapters/postgresql/resources/settings.d.ts +9 -0
- package/dist/adapters/postgresql/resources/settings.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/settings.js +184 -0
- package/dist/adapters/postgresql/resources/settings.js.map +1 -0
- package/dist/adapters/postgresql/resources/stats.d.ts +10 -0
- package/dist/adapters/postgresql/resources/stats.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/stats.js +124 -0
- package/dist/adapters/postgresql/resources/stats.js.map +1 -0
- package/dist/adapters/postgresql/resources/tables.d.ts +9 -0
- package/dist/adapters/postgresql/resources/tables.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/tables.js +20 -0
- package/dist/adapters/postgresql/resources/tables.js.map +1 -0
- package/dist/adapters/postgresql/resources/vacuum.d.ts +9 -0
- package/dist/adapters/postgresql/resources/vacuum.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/vacuum.js +122 -0
- package/dist/adapters/postgresql/resources/vacuum.js.map +1 -0
- package/dist/adapters/postgresql/resources/vector.d.ts +9 -0
- package/dist/adapters/postgresql/resources/vector.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/vector.js +185 -0
- package/dist/adapters/postgresql/resources/vector.js.map +1 -0
- package/dist/adapters/postgresql/schemas/admin.d.ts +74 -0
- package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/admin.js +180 -0
- package/dist/adapters/postgresql/schemas/admin.js.map +1 -0
- package/dist/adapters/postgresql/schemas/backup.d.ts +68 -0
- package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/backup.js +114 -0
- package/dist/adapters/postgresql/schemas/backup.js.map +1 -0
- package/dist/adapters/postgresql/schemas/core.d.ts +443 -0
- package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/core.js +628 -0
- package/dist/adapters/postgresql/schemas/core.js.map +1 -0
- package/dist/adapters/postgresql/schemas/cron.d.ts +131 -0
- package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/cron.js +218 -0
- package/dist/adapters/postgresql/schemas/cron.js.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions.d.ts +403 -0
- package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions.js +600 -0
- package/dist/adapters/postgresql/schemas/extensions.js.map +1 -0
- package/dist/adapters/postgresql/schemas/index.d.ts +21 -0
- package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/index.js +72 -0
- package/dist/adapters/postgresql/schemas/index.js.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb.d.ts +94 -0
- package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb.js +198 -0
- package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -0
- package/dist/adapters/postgresql/schemas/monitoring.d.ts +28 -0
- package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/monitoring.js +45 -0
- package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -0
- package/dist/adapters/postgresql/schemas/partitioning.d.ts +152 -0
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/partitioning.js +399 -0
- package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -0
- package/dist/adapters/postgresql/schemas/partman.d.ts +94 -0
- package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/partman.js +264 -0
- package/dist/adapters/postgresql/schemas/partman.js.map +1 -0
- package/dist/adapters/postgresql/schemas/performance.d.ts +52 -0
- package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/performance.js +57 -0
- package/dist/adapters/postgresql/schemas/performance.js.map +1 -0
- package/dist/adapters/postgresql/schemas/postgis.d.ts +693 -0
- package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/postgis.js +662 -0
- package/dist/adapters/postgresql/schemas/postgis.js.map +1 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +171 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.js +235 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -0
- package/dist/adapters/postgresql/schemas/stats.d.ts +229 -0
- package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/stats.js +587 -0
- package/dist/adapters/postgresql/schemas/stats.js.map +1 -0
- package/dist/adapters/postgresql/schemas/text-search.d.ts +83 -0
- package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/text-search.js +132 -0
- package/dist/adapters/postgresql/schemas/text-search.js.map +1 -0
- package/dist/adapters/postgresql/schemas/vector.d.ts +143 -0
- package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/vector.js +123 -0
- package/dist/adapters/postgresql/schemas/vector.js.map +1 -0
- package/dist/adapters/postgresql/tools/admin.d.ts +13 -0
- package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/admin.js +417 -0
- package/dist/adapters/postgresql/tools/admin.js.map +1 -0
- package/dist/adapters/postgresql/tools/backup/dump.d.ts +12 -0
- package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/backup/dump.js +546 -0
- package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -0
- package/dist/adapters/postgresql/tools/backup/index.d.ts +16 -0
- package/dist/adapters/postgresql/tools/backup/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/backup/index.js +29 -0
- package/dist/adapters/postgresql/tools/backup/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/backup/planning.d.ts +22 -0
- package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/backup/planning.js +411 -0
- package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -0
- package/dist/adapters/postgresql/tools/citext.d.ts +18 -0
- package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/citext.js +568 -0
- package/dist/adapters/postgresql/tools/citext.js.map +1 -0
- package/dist/adapters/postgresql/tools/codemode/index.d.ts +27 -0
- package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/codemode/index.js +171 -0
- package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/convenience.d.ts +192 -0
- package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/convenience.js +617 -0
- package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/health.d.ts +20 -0
- package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/health.js +360 -0
- package/dist/adapters/postgresql/tools/core/health.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/index.d.ts +15 -0
- package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/index.js +40 -0
- package/dist/adapters/postgresql/tools/core/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/indexes.d.ts +30 -0
- package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/indexes.js +232 -0
- package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/objects.d.ts +20 -0
- package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/objects.js +361 -0
- package/dist/adapters/postgresql/tools/core/objects.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/query.d.ts +16 -0
- package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/query.js +87 -0
- package/dist/adapters/postgresql/tools/core/query.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/schemas.d.ts +135 -0
- package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/schemas.js +221 -0
- package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/tables.d.ts +24 -0
- package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/tables.js +219 -0
- package/dist/adapters/postgresql/tools/core/tables.js.map +1 -0
- package/dist/adapters/postgresql/tools/cron.d.ts +16 -0
- package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/cron.js +440 -0
- package/dist/adapters/postgresql/tools/cron.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts +33 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.js +681 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +20 -0
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/basic.js +654 -0
- package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/index.d.ts +16 -0
- package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/index.js +39 -0
- package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/kcache.d.ts +20 -0
- package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/kcache.js +574 -0
- package/dist/adapters/postgresql/tools/kcache.js.map +1 -0
- package/dist/adapters/postgresql/tools/ltree.d.ts +8 -0
- package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/ltree.js +390 -0
- package/dist/adapters/postgresql/tools/ltree.js.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring.d.ts +13 -0
- package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring.js +753 -0
- package/dist/adapters/postgresql/tools/monitoring.js.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning.d.ts +13 -0
- package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning.js +500 -0
- package/dist/adapters/postgresql/tools/partitioning.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/index.d.ts +19 -0
- package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partman/index.js +33 -0
- package/dist/adapters/postgresql/tools/partman/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/management.d.ts +28 -0
- package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partman/management.js +563 -0
- package/dist/adapters/postgresql/tools/partman/management.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/operations.d.ts +28 -0
- package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partman/operations.js +632 -0
- package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/analysis.d.ts +9 -0
- package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/analysis.js +383 -0
- package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/explain.d.ts +13 -0
- package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/explain.js +71 -0
- package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/index.d.ts +13 -0
- package/dist/adapters/postgresql/tools/performance/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/index.js +40 -0
- package/dist/adapters/postgresql/tools/performance/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts +9 -0
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/monitoring.js +122 -0
- package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/optimization.d.ts +9 -0
- package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/optimization.js +315 -0
- package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/stats.d.ts +14 -0
- package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/stats.js +559 -0
- package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -0
- package/dist/adapters/postgresql/tools/pgcrypto.d.ts +8 -0
- package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/pgcrypto.js +239 -0
- package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/advanced.d.ts +21 -0
- package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/advanced.js +383 -0
- package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/basic.d.ts +16 -0
- package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/basic.js +479 -0
- package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/index.d.ts +17 -0
- package/dist/adapters/postgresql/tools/postgis/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/index.js +46 -0
- package/dist/adapters/postgresql/tools/postgis/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/standalone.d.ts +21 -0
- package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/standalone.js +150 -0
- package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -0
- package/dist/adapters/postgresql/tools/schema.d.ts +13 -0
- package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/schema.js +515 -0
- package/dist/adapters/postgresql/tools/schema.js.map +1 -0
- package/dist/adapters/postgresql/tools/stats/advanced.d.ts +24 -0
- package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/stats/advanced.js +876 -0
- package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -0
- package/dist/adapters/postgresql/tools/stats/basic.d.ts +24 -0
- package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/stats/basic.js +501 -0
- package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/stats/index.d.ts +17 -0
- package/dist/adapters/postgresql/tools/stats/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/stats/index.js +30 -0
- package/dist/adapters/postgresql/tools/stats/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/text.d.ts +13 -0
- package/dist/adapters/postgresql/tools/text.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/text.js +708 -0
- package/dist/adapters/postgresql/tools/text.js.map +1 -0
- package/dist/adapters/postgresql/tools/transactions.d.ts +13 -0
- package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/transactions.js +201 -0
- package/dist/adapters/postgresql/tools/transactions.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/advanced.d.ts +12 -0
- package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/advanced.js +902 -0
- package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/basic.d.ts +25 -0
- package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/basic.js +1000 -0
- package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/index.d.ts +13 -0
- package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/index.js +33 -0
- package/dist/adapters/postgresql/tools/vector/index.js.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts +44 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.js +117 -0
- package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
- package/dist/auth/OAuthResourceServer.d.ts +42 -0
- package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
- package/dist/auth/OAuthResourceServer.js +80 -0
- package/dist/auth/OAuthResourceServer.js.map +1 -0
- package/dist/auth/TokenValidator.d.ts +36 -0
- package/dist/auth/TokenValidator.d.ts.map +1 -0
- package/dist/auth/TokenValidator.js +139 -0
- package/dist/auth/TokenValidator.js.map +1 -0
- package/dist/auth/errors.d.ts +63 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +102 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/index.d.ts +15 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +16 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +61 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +156 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/scopes.d.ts +65 -0
- package/dist/auth/scopes.d.ts.map +1 -0
- package/dist/auth/scopes.js +189 -0
- package/dist/auth/scopes.js.map +1 -0
- package/dist/auth/types.d.ts +208 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +8 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli/args.d.ts +34 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +308 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +341 -0
- package/dist/cli.js.map +1 -0
- package/dist/codemode/api.d.ts +62 -0
- package/dist/codemode/api.d.ts.map +1 -0
- package/dist/codemode/api.js +1505 -0
- package/dist/codemode/api.js.map +1 -0
- package/dist/codemode/index.d.ts +13 -0
- package/dist/codemode/index.d.ts.map +1 -0
- package/dist/codemode/index.js +17 -0
- package/dist/codemode/index.js.map +1 -0
- package/dist/codemode/sandbox-factory.d.ts +72 -0
- package/dist/codemode/sandbox-factory.d.ts.map +1 -0
- package/dist/codemode/sandbox-factory.js +88 -0
- package/dist/codemode/sandbox-factory.js.map +1 -0
- package/dist/codemode/sandbox.d.ts +96 -0
- package/dist/codemode/sandbox.d.ts.map +1 -0
- package/dist/codemode/sandbox.js +345 -0
- package/dist/codemode/sandbox.js.map +1 -0
- package/dist/codemode/security.d.ts +44 -0
- package/dist/codemode/security.d.ts.map +1 -0
- package/dist/codemode/security.js +149 -0
- package/dist/codemode/security.js.map +1 -0
- package/dist/codemode/types.d.ts +137 -0
- package/dist/codemode/types.d.ts.map +1 -0
- package/dist/codemode/types.js +46 -0
- package/dist/codemode/types.js.map +1 -0
- package/dist/codemode/worker-sandbox.d.ts +82 -0
- package/dist/codemode/worker-sandbox.d.ts.map +1 -0
- package/dist/codemode/worker-sandbox.js +244 -0
- package/dist/codemode/worker-sandbox.js.map +1 -0
- package/dist/codemode/worker-script.d.ts +8 -0
- package/dist/codemode/worker-script.d.ts.map +1 -0
- package/dist/codemode/worker-script.js +113 -0
- package/dist/codemode/worker-script.js.map +1 -0
- package/dist/constants/ServerInstructions.d.ts +13 -0
- package/dist/constants/ServerInstructions.d.ts.map +1 -0
- package/dist/constants/ServerInstructions.js +405 -0
- package/dist/constants/ServerInstructions.js.map +1 -0
- package/dist/filtering/ToolConstants.d.ts +43 -0
- package/dist/filtering/ToolConstants.d.ts.map +1 -0
- package/dist/filtering/ToolConstants.js +352 -0
- package/dist/filtering/ToolConstants.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +90 -0
- package/dist/filtering/ToolFilter.d.ts.map +1 -0
- package/dist/filtering/ToolFilter.js +315 -0
- package/dist/filtering/ToolFilter.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/pool/ConnectionPool.d.ts +70 -0
- package/dist/pool/ConnectionPool.d.ts.map +1 -0
- package/dist/pool/ConnectionPool.js +254 -0
- package/dist/pool/ConnectionPool.js.map +1 -0
- package/dist/server/McpServer.d.ts +50 -0
- package/dist/server/McpServer.d.ts.map +1 -0
- package/dist/server/McpServer.js +108 -0
- package/dist/server/McpServer.js.map +1 -0
- package/dist/transports/http.d.ts +126 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +303 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +8 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +7 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/types/adapters.d.ts +136 -0
- package/dist/types/adapters.d.ts.map +1 -0
- package/dist/types/adapters.js +7 -0
- package/dist/types/adapters.js.map +1 -0
- package/dist/types/database.d.ts +204 -0
- package/dist/types/database.d.ts.map +1 -0
- package/dist/types/database.js +7 -0
- package/dist/types/database.js.map +1 -0
- package/dist/types/errors.d.ts +62 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +91 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/filtering.d.ts +39 -0
- package/dist/types/filtering.d.ts.map +1 -0
- package/dist/types/filtering.js +7 -0
- package/dist/types/filtering.js.map +1 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mcp.d.ts +31 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +7 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/oauth.d.ts +65 -0
- package/dist/types/oauth.d.ts.map +1 -0
- package/dist/types/oauth.js +7 -0
- package/dist/types/oauth.js.map +1 -0
- package/dist/types/schema.d.ts +110 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +7 -0
- package/dist/types/schema.js.map +1 -0
- package/dist/utils/annotations.d.ts +42 -0
- package/dist/utils/annotations.d.ts.map +1 -0
- package/dist/utils/annotations.js +75 -0
- package/dist/utils/annotations.js.map +1 -0
- package/dist/utils/icons.d.ts +25 -0
- package/dist/utils/icons.d.ts.map +1 -0
- package/dist/utils/icons.js +212 -0
- package/dist/utils/icons.js.map +1 -0
- package/dist/utils/identifiers.d.ts +111 -0
- package/dist/utils/identifiers.d.ts.map +1 -0
- package/dist/utils/identifiers.js +270 -0
- package/dist/utils/identifiers.js.map +1 -0
- package/dist/utils/logger.d.ts +141 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +304 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/promptGenerator.d.ts +20 -0
- package/dist/utils/promptGenerator.d.ts.map +1 -0
- package/dist/utils/promptGenerator.js +81 -0
- package/dist/utils/promptGenerator.js.map +1 -0
- package/dist/utils/resourceAnnotations.d.ts +36 -0
- package/dist/utils/resourceAnnotations.d.ts.map +1 -0
- package/dist/utils/resourceAnnotations.js +57 -0
- package/dist/utils/resourceAnnotations.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL Performance Tools - Statistics
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { readOnly } from "../../../../utils/annotations.js";
|
|
6
|
+
import { getToolIcons } from "../../../../utils/icons.js";
|
|
7
|
+
// Helper to handle undefined params (allows tools to be called without {})
|
|
8
|
+
const defaultToEmpty = (val) => val ?? {};
|
|
9
|
+
// Helper to coerce string numbers to JavaScript numbers (PostgreSQL returns BIGINT as strings)
|
|
10
|
+
const toNum = (val) => val === null || val === undefined ? null : Number(val);
|
|
11
|
+
export function createIndexStatsTool(adapter) {
|
|
12
|
+
// Define schema locally with limit parameter
|
|
13
|
+
const IndexStatsSchemaLocal = z.preprocess(defaultToEmpty, z.object({
|
|
14
|
+
table: z.string().optional().describe("Table name to filter indexes"),
|
|
15
|
+
schema: z.string().optional().describe("Schema name to filter indexes"),
|
|
16
|
+
limit: z
|
|
17
|
+
.number()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("Max rows to return (default: 50, use 0 for all)"),
|
|
20
|
+
}));
|
|
21
|
+
return {
|
|
22
|
+
name: "pg_index_stats",
|
|
23
|
+
description: "Get index usage statistics.",
|
|
24
|
+
group: "performance",
|
|
25
|
+
inputSchema: IndexStatsSchemaLocal,
|
|
26
|
+
annotations: readOnly("Index Stats"),
|
|
27
|
+
icons: getToolIcons("performance", readOnly("Index Stats")),
|
|
28
|
+
handler: async (params, _context) => {
|
|
29
|
+
const parsed = IndexStatsSchemaLocal.parse(params);
|
|
30
|
+
const { table, schema } = parsed;
|
|
31
|
+
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 50);
|
|
32
|
+
let whereClause = "schemaname NOT IN ('pg_catalog', 'information_schema')";
|
|
33
|
+
if (schema)
|
|
34
|
+
whereClause += ` AND schemaname = '${schema}'`;
|
|
35
|
+
if (table)
|
|
36
|
+
whereClause += ` AND relname = '${table}'`;
|
|
37
|
+
const sql = `SELECT schemaname, relname as table_name, indexrelname as index_name,
|
|
38
|
+
idx_scan as scans, idx_tup_read as tuples_read, idx_tup_fetch as tuples_fetched,
|
|
39
|
+
pg_size_pretty(pg_relation_size(indexrelid)) as size
|
|
40
|
+
FROM pg_stat_user_indexes
|
|
41
|
+
WHERE ${whereClause}
|
|
42
|
+
ORDER BY idx_scan DESC
|
|
43
|
+
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
44
|
+
const result = await adapter.executeQuery(sql);
|
|
45
|
+
// Coerce numeric fields to JavaScript numbers
|
|
46
|
+
const indexes = (result.rows ?? []).map((row) => ({
|
|
47
|
+
...row,
|
|
48
|
+
scans: toNum(row["scans"]),
|
|
49
|
+
tuples_read: toNum(row["tuples_read"]),
|
|
50
|
+
tuples_fetched: toNum(row["tuples_fetched"]),
|
|
51
|
+
}));
|
|
52
|
+
const response = {
|
|
53
|
+
indexes,
|
|
54
|
+
count: indexes.length,
|
|
55
|
+
};
|
|
56
|
+
// Add totalCount if results were limited
|
|
57
|
+
if (limit !== null && indexes.length === limit) {
|
|
58
|
+
const countSql = `SELECT COUNT(*) as total FROM pg_stat_user_indexes WHERE ${whereClause}`;
|
|
59
|
+
const countResult = await adapter.executeQuery(countSql);
|
|
60
|
+
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
61
|
+
response["truncated"] = true;
|
|
62
|
+
}
|
|
63
|
+
return response;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function createTableStatsTool(adapter) {
|
|
68
|
+
const TableStatsSchemaLocal = z.preprocess(defaultToEmpty, z.object({
|
|
69
|
+
table: z
|
|
70
|
+
.string()
|
|
71
|
+
.optional()
|
|
72
|
+
.describe("Table name (all tables if omitted)"),
|
|
73
|
+
schema: z.string().optional().describe("Schema name"),
|
|
74
|
+
limit: z
|
|
75
|
+
.number()
|
|
76
|
+
.optional()
|
|
77
|
+
.describe("Max rows to return (default: 50, use 0 for all)"),
|
|
78
|
+
}));
|
|
79
|
+
return {
|
|
80
|
+
name: "pg_table_stats",
|
|
81
|
+
description: "Get table access statistics.",
|
|
82
|
+
group: "performance",
|
|
83
|
+
inputSchema: TableStatsSchemaLocal,
|
|
84
|
+
annotations: readOnly("Table Stats"),
|
|
85
|
+
icons: getToolIcons("performance", readOnly("Table Stats")),
|
|
86
|
+
handler: async (params, _context) => {
|
|
87
|
+
const parsed = TableStatsSchemaLocal.parse(params);
|
|
88
|
+
const { table, schema } = parsed;
|
|
89
|
+
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 50);
|
|
90
|
+
let whereClause = "schemaname NOT IN ('pg_catalog', 'information_schema')";
|
|
91
|
+
if (schema)
|
|
92
|
+
whereClause += ` AND schemaname = '${schema}'`;
|
|
93
|
+
if (table)
|
|
94
|
+
whereClause += ` AND relname = '${table}'`;
|
|
95
|
+
const sql = `SELECT schemaname, relname as table_name,
|
|
96
|
+
seq_scan, seq_tup_read, idx_scan, idx_tup_fetch,
|
|
97
|
+
n_tup_ins as inserts, n_tup_upd as updates, n_tup_del as deletes,
|
|
98
|
+
n_live_tup as live_tuples, n_dead_tup as dead_tuples,
|
|
99
|
+
last_vacuum, last_autovacuum, last_analyze, last_autoanalyze
|
|
100
|
+
FROM pg_stat_user_tables
|
|
101
|
+
WHERE ${whereClause}
|
|
102
|
+
ORDER BY seq_scan DESC
|
|
103
|
+
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
104
|
+
const result = await adapter.executeQuery(sql);
|
|
105
|
+
// Coerce numeric fields to JavaScript numbers
|
|
106
|
+
const tables = (result.rows ?? []).map((row) => ({
|
|
107
|
+
...row,
|
|
108
|
+
seq_scan: toNum(row["seq_scan"]),
|
|
109
|
+
seq_tup_read: toNum(row["seq_tup_read"]),
|
|
110
|
+
idx_scan: toNum(row["idx_scan"]),
|
|
111
|
+
idx_tup_fetch: toNum(row["idx_tup_fetch"]),
|
|
112
|
+
inserts: toNum(row["inserts"]),
|
|
113
|
+
updates: toNum(row["updates"]),
|
|
114
|
+
deletes: toNum(row["deletes"]),
|
|
115
|
+
live_tuples: toNum(row["live_tuples"]),
|
|
116
|
+
dead_tuples: toNum(row["dead_tuples"]),
|
|
117
|
+
}));
|
|
118
|
+
// Get total count if limited
|
|
119
|
+
const response = {
|
|
120
|
+
tables,
|
|
121
|
+
count: tables.length,
|
|
122
|
+
};
|
|
123
|
+
if (limit !== null && tables.length === limit) {
|
|
124
|
+
const countSql = `SELECT COUNT(*) as total FROM pg_stat_user_tables WHERE ${whereClause}`;
|
|
125
|
+
const countResult = await adapter.executeQuery(countSql);
|
|
126
|
+
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
127
|
+
response["truncated"] = true;
|
|
128
|
+
}
|
|
129
|
+
return response;
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
export function createStatStatementsTool(adapter) {
|
|
134
|
+
const StatStatementsSchema = z.preprocess(defaultToEmpty, z.object({
|
|
135
|
+
limit: z
|
|
136
|
+
.number()
|
|
137
|
+
.optional()
|
|
138
|
+
.describe("Max statements to return (default: 20, use 0 for all)"),
|
|
139
|
+
orderBy: z
|
|
140
|
+
.enum(["total_time", "calls", "mean_time", "rows"])
|
|
141
|
+
.optional()
|
|
142
|
+
.describe("Sort order (default: total_time)"),
|
|
143
|
+
}));
|
|
144
|
+
return {
|
|
145
|
+
name: "pg_stat_statements",
|
|
146
|
+
description: "Get query statistics from pg_stat_statements (requires extension).",
|
|
147
|
+
group: "performance",
|
|
148
|
+
inputSchema: StatStatementsSchema,
|
|
149
|
+
annotations: readOnly("Query Statistics"),
|
|
150
|
+
icons: getToolIcons("performance", readOnly("Query Statistics")),
|
|
151
|
+
handler: async (params, _context) => {
|
|
152
|
+
const parsed = StatStatementsSchema.parse(params);
|
|
153
|
+
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 20);
|
|
154
|
+
const orderBy = parsed.orderBy ?? "total_time";
|
|
155
|
+
const sql = `SELECT query, calls, total_exec_time as total_time,
|
|
156
|
+
mean_exec_time as mean_time, rows,
|
|
157
|
+
shared_blks_hit, shared_blks_read
|
|
158
|
+
FROM pg_stat_statements
|
|
159
|
+
ORDER BY ${orderBy === "total_time" ? "total_exec_time" : orderBy} DESC
|
|
160
|
+
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
161
|
+
const result = await adapter.executeQuery(sql);
|
|
162
|
+
// Coerce numeric fields to JavaScript numbers
|
|
163
|
+
const statements = (result.rows ?? []).map((row) => ({
|
|
164
|
+
...row,
|
|
165
|
+
calls: toNum(row["calls"]),
|
|
166
|
+
rows: toNum(row["rows"]),
|
|
167
|
+
shared_blks_hit: toNum(row["shared_blks_hit"]),
|
|
168
|
+
shared_blks_read: toNum(row["shared_blks_read"]),
|
|
169
|
+
}));
|
|
170
|
+
const response = { statements };
|
|
171
|
+
// Add totalCount if results were limited
|
|
172
|
+
if (limit !== null && statements.length === limit) {
|
|
173
|
+
const countSql = `SELECT COUNT(*) as total FROM pg_stat_statements`;
|
|
174
|
+
const countResult = await adapter.executeQuery(countSql);
|
|
175
|
+
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
176
|
+
response["truncated"] = true;
|
|
177
|
+
}
|
|
178
|
+
return response;
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
export function createStatActivityTool(adapter) {
|
|
183
|
+
const StatActivitySchema = z.preprocess(defaultToEmpty, z.object({
|
|
184
|
+
includeIdle: z.boolean().optional(),
|
|
185
|
+
}));
|
|
186
|
+
return {
|
|
187
|
+
name: "pg_stat_activity",
|
|
188
|
+
description: "Get currently running queries and connections.",
|
|
189
|
+
group: "performance",
|
|
190
|
+
inputSchema: StatActivitySchema,
|
|
191
|
+
annotations: readOnly("Activity Stats"),
|
|
192
|
+
icons: getToolIcons("performance", readOnly("Activity Stats")),
|
|
193
|
+
handler: async (params, _context) => {
|
|
194
|
+
const parsed = StatActivitySchema.parse(params);
|
|
195
|
+
const idleClause = parsed.includeIdle === true ? "" : "AND state != 'idle'";
|
|
196
|
+
const sql = `SELECT pid, usename, datname, client_addr, state,
|
|
197
|
+
query_start, state_change,
|
|
198
|
+
now() - query_start as duration,
|
|
199
|
+
query
|
|
200
|
+
FROM pg_stat_activity
|
|
201
|
+
WHERE pid != pg_backend_pid() ${idleClause}
|
|
202
|
+
ORDER BY query_start`;
|
|
203
|
+
const result = await adapter.executeQuery(sql);
|
|
204
|
+
return { connections: result.rows, count: result.rows?.length ?? 0 };
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
export function createUnusedIndexesTool(adapter) {
|
|
209
|
+
const UnusedIndexesSchema = z.preprocess(defaultToEmpty, z.object({
|
|
210
|
+
schema: z
|
|
211
|
+
.string()
|
|
212
|
+
.optional()
|
|
213
|
+
.describe("Schema to filter (default: all user schemas)"),
|
|
214
|
+
minSize: z
|
|
215
|
+
.string()
|
|
216
|
+
.optional()
|
|
217
|
+
.describe('Minimum index size to include (e.g., "1 MB")'),
|
|
218
|
+
limit: z
|
|
219
|
+
.number()
|
|
220
|
+
.optional()
|
|
221
|
+
.describe("Max indexes to return (default: 20, use 0 for all)"),
|
|
222
|
+
summary: z
|
|
223
|
+
.boolean()
|
|
224
|
+
.optional()
|
|
225
|
+
.describe("Return aggregated summary instead of full list"),
|
|
226
|
+
}));
|
|
227
|
+
return {
|
|
228
|
+
name: "pg_unused_indexes",
|
|
229
|
+
description: "Find indexes that have never been used (idx_scan = 0). Candidates for removal.",
|
|
230
|
+
group: "performance",
|
|
231
|
+
inputSchema: UnusedIndexesSchema,
|
|
232
|
+
annotations: readOnly("Unused Indexes"),
|
|
233
|
+
icons: getToolIcons("performance", readOnly("Unused Indexes")),
|
|
234
|
+
handler: async (params, _context) => {
|
|
235
|
+
const parsed = UnusedIndexesSchema.parse(params);
|
|
236
|
+
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 20);
|
|
237
|
+
let whereClause = "schemaname NOT IN ('pg_catalog', 'information_schema') AND idx_scan = 0";
|
|
238
|
+
if (parsed.schema !== undefined)
|
|
239
|
+
whereClause += ` AND schemaname = '${parsed.schema}'`;
|
|
240
|
+
// Summary mode - return aggregated stats
|
|
241
|
+
if (parsed.summary === true) {
|
|
242
|
+
const summarySql = `SELECT schemaname,
|
|
243
|
+
COUNT(*) as unused_count,
|
|
244
|
+
pg_size_pretty(SUM(pg_relation_size(indexrelid))) as total_size,
|
|
245
|
+
SUM(pg_relation_size(indexrelid)) as total_size_bytes
|
|
246
|
+
FROM pg_stat_user_indexes
|
|
247
|
+
WHERE ${whereClause}
|
|
248
|
+
${parsed.minSize !== undefined ? `AND pg_relation_size(indexrelid) >= pg_size_bytes('${parsed.minSize}')` : ""}
|
|
249
|
+
GROUP BY schemaname
|
|
250
|
+
ORDER BY SUM(pg_relation_size(indexrelid)) DESC`;
|
|
251
|
+
const summaryResult = await adapter.executeQuery(summarySql);
|
|
252
|
+
const bySchema = (summaryResult.rows ?? []).map((row) => ({
|
|
253
|
+
schema: row["schemaname"],
|
|
254
|
+
unusedCount: toNum(row["unused_count"]),
|
|
255
|
+
totalSize: row["total_size"],
|
|
256
|
+
totalSizeBytes: toNum(row["total_size_bytes"]),
|
|
257
|
+
}));
|
|
258
|
+
const totalCount = bySchema.reduce((sum, s) => sum + (s.unusedCount ?? 0), 0);
|
|
259
|
+
const totalBytes = bySchema.reduce((sum, s) => sum + (s.totalSizeBytes ?? 0), 0);
|
|
260
|
+
return {
|
|
261
|
+
summary: true,
|
|
262
|
+
bySchema,
|
|
263
|
+
totalCount,
|
|
264
|
+
totalSizeBytes: totalBytes,
|
|
265
|
+
hint: "Use summary=false or omit to see individual indexes.",
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
const sql = `SELECT schemaname, relname as table_name, indexrelname as index_name,
|
|
269
|
+
idx_scan as scans, idx_tup_read as tuples_read,
|
|
270
|
+
pg_size_pretty(pg_relation_size(indexrelid)) as size,
|
|
271
|
+
pg_relation_size(indexrelid) as size_bytes
|
|
272
|
+
FROM pg_stat_user_indexes
|
|
273
|
+
WHERE ${whereClause}
|
|
274
|
+
${parsed.minSize !== undefined ? `AND pg_relation_size(indexrelid) >= pg_size_bytes('${parsed.minSize}')` : ""}
|
|
275
|
+
ORDER BY pg_relation_size(indexrelid) DESC
|
|
276
|
+
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
277
|
+
const result = await adapter.executeQuery(sql);
|
|
278
|
+
// Coerce numeric fields to JavaScript numbers
|
|
279
|
+
const unusedIndexes = (result.rows ?? []).map((row) => ({
|
|
280
|
+
...row,
|
|
281
|
+
scans: toNum(row["scans"]),
|
|
282
|
+
tuples_read: toNum(row["tuples_read"]),
|
|
283
|
+
size_bytes: toNum(row["size_bytes"]),
|
|
284
|
+
}));
|
|
285
|
+
const response = {
|
|
286
|
+
unusedIndexes,
|
|
287
|
+
count: unusedIndexes.length,
|
|
288
|
+
hint: "These indexes have never been used. Consider removing them to save disk space and improve write performance.",
|
|
289
|
+
};
|
|
290
|
+
// Add totalCount if results were limited
|
|
291
|
+
if (limit !== null && unusedIndexes.length === limit) {
|
|
292
|
+
const countSql = `SELECT COUNT(*) as total FROM pg_stat_user_indexes WHERE ${whereClause}
|
|
293
|
+
${parsed.minSize !== undefined ? `AND pg_relation_size(indexrelid) >= pg_size_bytes('${parsed.minSize}')` : ""}`;
|
|
294
|
+
const countResult = await adapter.executeQuery(countSql);
|
|
295
|
+
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
296
|
+
response["truncated"] = true;
|
|
297
|
+
}
|
|
298
|
+
return response;
|
|
299
|
+
},
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
export function createDuplicateIndexesTool(adapter) {
|
|
303
|
+
const DuplicateIndexesSchema = z.preprocess(defaultToEmpty, z.object({
|
|
304
|
+
schema: z
|
|
305
|
+
.string()
|
|
306
|
+
.optional()
|
|
307
|
+
.describe("Schema to filter (default: all user schemas)"),
|
|
308
|
+
limit: z
|
|
309
|
+
.number()
|
|
310
|
+
.optional()
|
|
311
|
+
.describe("Max rows to return (default: 50, use 0 for all)"),
|
|
312
|
+
}));
|
|
313
|
+
return {
|
|
314
|
+
name: "pg_duplicate_indexes",
|
|
315
|
+
description: "Find duplicate or overlapping indexes (same leading columns). Candidates for consolidation.",
|
|
316
|
+
group: "performance",
|
|
317
|
+
inputSchema: DuplicateIndexesSchema,
|
|
318
|
+
annotations: readOnly("Duplicate Indexes"),
|
|
319
|
+
icons: getToolIcons("performance", readOnly("Duplicate Indexes")),
|
|
320
|
+
handler: async (params, _context) => {
|
|
321
|
+
const parsed = DuplicateIndexesSchema.parse(params);
|
|
322
|
+
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 50);
|
|
323
|
+
const schemaFilter = parsed.schema !== undefined
|
|
324
|
+
? `AND n.nspname = '${parsed.schema}'`
|
|
325
|
+
: "AND n.nspname NOT IN ('pg_catalog', 'information_schema')";
|
|
326
|
+
// Find indexes with the same leading column(s) on the same table
|
|
327
|
+
const sql = `WITH index_cols AS (
|
|
328
|
+
SELECT
|
|
329
|
+
n.nspname as schemaname,
|
|
330
|
+
t.relname as tablename,
|
|
331
|
+
i.relname as indexname,
|
|
332
|
+
array_agg(a.attname ORDER BY k.n) as columns,
|
|
333
|
+
pg_relation_size(i.oid) as size_bytes,
|
|
334
|
+
pg_size_pretty(pg_relation_size(i.oid)) as size
|
|
335
|
+
FROM pg_class t
|
|
336
|
+
JOIN pg_namespace n ON t.relnamespace = n.oid
|
|
337
|
+
JOIN pg_index idx ON t.oid = idx.indrelid
|
|
338
|
+
JOIN pg_class i ON idx.indexrelid = i.oid
|
|
339
|
+
CROSS JOIN LATERAL unnest(idx.indkey) WITH ORDINALITY AS k(attnum, n)
|
|
340
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum
|
|
341
|
+
WHERE t.relkind = 'r' ${schemaFilter}
|
|
342
|
+
GROUP BY n.nspname, t.relname, i.relname, i.oid
|
|
343
|
+
)
|
|
344
|
+
SELECT
|
|
345
|
+
a.schemaname, a.tablename,
|
|
346
|
+
a.indexname as index1, a.columns as index1_columns, a.size as index1_size,
|
|
347
|
+
b.indexname as index2, b.columns as index2_columns, b.size as index2_size,
|
|
348
|
+
CASE
|
|
349
|
+
WHEN a.columns = b.columns THEN 'EXACT_DUPLICATE'
|
|
350
|
+
WHEN a.columns[1:array_length(b.columns, 1)] = b.columns THEN 'OVERLAPPING'
|
|
351
|
+
ELSE 'SUBSET'
|
|
352
|
+
END as duplicate_type
|
|
353
|
+
FROM index_cols a
|
|
354
|
+
JOIN index_cols b ON a.schemaname = b.schemaname
|
|
355
|
+
AND a.tablename = b.tablename
|
|
356
|
+
AND a.indexname < b.indexname
|
|
357
|
+
AND (a.columns = b.columns
|
|
358
|
+
OR a.columns[1:array_length(b.columns, 1)] = b.columns
|
|
359
|
+
OR b.columns[1:array_length(a.columns, 1)] = a.columns)
|
|
360
|
+
ORDER BY a.schemaname, a.tablename, a.size_bytes DESC
|
|
361
|
+
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
362
|
+
const result = await adapter.executeQuery(sql);
|
|
363
|
+
const duplicates = result.rows ?? [];
|
|
364
|
+
const response = {
|
|
365
|
+
duplicateIndexes: duplicates,
|
|
366
|
+
count: duplicates.length,
|
|
367
|
+
hint: "EXACT_DUPLICATE: Remove one. OVERLAPPING/SUBSET: Smaller index may be redundant.",
|
|
368
|
+
};
|
|
369
|
+
// Add totalCount if results were limited
|
|
370
|
+
if (limit !== null && duplicates.length === limit) {
|
|
371
|
+
const countSql = `WITH index_cols AS (
|
|
372
|
+
SELECT
|
|
373
|
+
n.nspname as schemaname,
|
|
374
|
+
t.relname as tablename,
|
|
375
|
+
i.relname as indexname,
|
|
376
|
+
array_agg(a.attname ORDER BY k.n) as columns,
|
|
377
|
+
pg_relation_size(i.oid) as size_bytes
|
|
378
|
+
FROM pg_class t
|
|
379
|
+
JOIN pg_namespace n ON t.relnamespace = n.oid
|
|
380
|
+
JOIN pg_index idx ON t.oid = idx.indrelid
|
|
381
|
+
JOIN pg_class i ON idx.indexrelid = i.oid
|
|
382
|
+
CROSS JOIN LATERAL unnest(idx.indkey) WITH ORDINALITY AS k(attnum, n)
|
|
383
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum
|
|
384
|
+
WHERE t.relkind = 'r' ${schemaFilter}
|
|
385
|
+
GROUP BY n.nspname, t.relname, i.relname, i.oid
|
|
386
|
+
)
|
|
387
|
+
SELECT COUNT(*) as total
|
|
388
|
+
FROM index_cols a
|
|
389
|
+
JOIN index_cols b ON a.schemaname = b.schemaname
|
|
390
|
+
AND a.tablename = b.tablename
|
|
391
|
+
AND a.indexname < b.indexname
|
|
392
|
+
AND (a.columns = b.columns
|
|
393
|
+
OR a.columns[1:array_length(b.columns, 1)] = b.columns
|
|
394
|
+
OR b.columns[1:array_length(a.columns, 1)] = a.columns)`;
|
|
395
|
+
const countResult = await adapter.executeQuery(countSql);
|
|
396
|
+
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
397
|
+
response["truncated"] = true;
|
|
398
|
+
}
|
|
399
|
+
return response;
|
|
400
|
+
},
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
export function createVacuumStatsTool(adapter) {
|
|
404
|
+
const VacuumStatsSchema = z.preprocess(defaultToEmpty, z.object({
|
|
405
|
+
schema: z.string().optional().describe("Schema to filter"),
|
|
406
|
+
table: z.string().optional().describe("Table name to filter"),
|
|
407
|
+
limit: z
|
|
408
|
+
.number()
|
|
409
|
+
.optional()
|
|
410
|
+
.describe("Max rows to return (default: 50, use 0 for all)"),
|
|
411
|
+
}));
|
|
412
|
+
return {
|
|
413
|
+
name: "pg_vacuum_stats",
|
|
414
|
+
description: "Get detailed vacuum statistics including dead tuples, last vacuum times, and wraparound risk.",
|
|
415
|
+
group: "performance",
|
|
416
|
+
inputSchema: VacuumStatsSchema,
|
|
417
|
+
annotations: readOnly("Vacuum Stats"),
|
|
418
|
+
icons: getToolIcons("performance", readOnly("Vacuum Stats")),
|
|
419
|
+
handler: async (params, _context) => {
|
|
420
|
+
const parsed = VacuumStatsSchema.parse(params);
|
|
421
|
+
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 50);
|
|
422
|
+
let whereClause = "schemaname NOT IN ('pg_catalog', 'information_schema')";
|
|
423
|
+
if (parsed.schema !== undefined)
|
|
424
|
+
whereClause += ` AND schemaname = '${parsed.schema}'`;
|
|
425
|
+
if (parsed.table !== undefined)
|
|
426
|
+
whereClause += ` AND relname = '${parsed.table}'`;
|
|
427
|
+
const sql = `SELECT
|
|
428
|
+
s.schemaname, s.relname as table_name,
|
|
429
|
+
s.n_live_tup as live_tuples, s.n_dead_tup as dead_tuples,
|
|
430
|
+
CASE WHEN s.n_live_tup > 0 THEN round((100.0 * s.n_dead_tup / s.n_live_tup)::numeric, 2) ELSE 0 END as dead_pct,
|
|
431
|
+
s.last_vacuum, s.last_autovacuum,
|
|
432
|
+
s.vacuum_count, s.autovacuum_count,
|
|
433
|
+
s.last_analyze, s.last_autoanalyze,
|
|
434
|
+
s.analyze_count, s.autoanalyze_count,
|
|
435
|
+
age(c.relfrozenxid) as xid_age,
|
|
436
|
+
CASE
|
|
437
|
+
WHEN age(c.relfrozenxid) > 1000000000 THEN 'CRITICAL'
|
|
438
|
+
WHEN age(c.relfrozenxid) > 500000000 THEN 'WARNING'
|
|
439
|
+
ELSE 'OK'
|
|
440
|
+
END as wraparound_risk
|
|
441
|
+
FROM pg_stat_user_tables s
|
|
442
|
+
JOIN pg_class c ON c.relname = s.relname
|
|
443
|
+
AND c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = s.schemaname)
|
|
444
|
+
WHERE ${whereClause.replace(/schemaname/g, "s.schemaname").replace(/relname/g, "s.relname")}
|
|
445
|
+
ORDER BY s.n_dead_tup DESC
|
|
446
|
+
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
447
|
+
const result = await adapter.executeQuery(sql);
|
|
448
|
+
// Coerce numeric fields to JavaScript numbers
|
|
449
|
+
const tables = (result.rows ?? []).map((row) => ({
|
|
450
|
+
...row,
|
|
451
|
+
live_tuples: toNum(row["live_tuples"]),
|
|
452
|
+
dead_tuples: toNum(row["dead_tuples"]),
|
|
453
|
+
dead_pct: toNum(row["dead_pct"]),
|
|
454
|
+
vacuum_count: toNum(row["vacuum_count"]),
|
|
455
|
+
autovacuum_count: toNum(row["autovacuum_count"]),
|
|
456
|
+
analyze_count: toNum(row["analyze_count"]),
|
|
457
|
+
autoanalyze_count: toNum(row["autoanalyze_count"]),
|
|
458
|
+
}));
|
|
459
|
+
const response = {
|
|
460
|
+
tables,
|
|
461
|
+
count: tables.length,
|
|
462
|
+
};
|
|
463
|
+
// Add totalCount if results were limited
|
|
464
|
+
if (limit !== null && tables.length === limit) {
|
|
465
|
+
const countSql = `SELECT COUNT(*) as total FROM pg_stat_user_tables WHERE ${whereClause}`;
|
|
466
|
+
const countResult = await adapter.executeQuery(countSql);
|
|
467
|
+
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
468
|
+
response["truncated"] = true;
|
|
469
|
+
}
|
|
470
|
+
return response;
|
|
471
|
+
},
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
export function createQueryPlanStatsTool(adapter) {
|
|
475
|
+
const QueryPlanStatsSchema = z.preprocess(defaultToEmpty, z.object({
|
|
476
|
+
limit: z
|
|
477
|
+
.number()
|
|
478
|
+
.optional()
|
|
479
|
+
.describe("Number of queries to return (default: 20, use 0 for all)"),
|
|
480
|
+
truncateQuery: z
|
|
481
|
+
.number()
|
|
482
|
+
.optional()
|
|
483
|
+
.describe("Max query length in chars (default: 100, use 0 for full text)"),
|
|
484
|
+
}));
|
|
485
|
+
return {
|
|
486
|
+
name: "pg_query_plan_stats",
|
|
487
|
+
description: "Get query plan statistics showing planning time vs execution time (requires pg_stat_statements).",
|
|
488
|
+
group: "performance",
|
|
489
|
+
inputSchema: QueryPlanStatsSchema,
|
|
490
|
+
annotations: readOnly("Query Plan Stats"),
|
|
491
|
+
icons: getToolIcons("performance", readOnly("Query Plan Stats")),
|
|
492
|
+
handler: async (params, _context) => {
|
|
493
|
+
const parsed = QueryPlanStatsSchema.parse(params);
|
|
494
|
+
const limit = parsed.limit === 0 ? null : (parsed.limit ?? 20);
|
|
495
|
+
const truncateLen = parsed.truncateQuery === 0 ? null : (parsed.truncateQuery ?? 100);
|
|
496
|
+
// Check if pg_stat_statements is available with planning time columns
|
|
497
|
+
const sql = `SELECT
|
|
498
|
+
query,
|
|
499
|
+
calls,
|
|
500
|
+
total_plan_time,
|
|
501
|
+
mean_plan_time,
|
|
502
|
+
total_exec_time,
|
|
503
|
+
mean_exec_time,
|
|
504
|
+
rows,
|
|
505
|
+
CASE
|
|
506
|
+
WHEN total_plan_time + total_exec_time > 0
|
|
507
|
+
THEN round((100.0 * total_plan_time / (total_plan_time + total_exec_time))::numeric, 2)
|
|
508
|
+
ELSE 0
|
|
509
|
+
END as plan_pct,
|
|
510
|
+
shared_blks_hit,
|
|
511
|
+
shared_blks_read,
|
|
512
|
+
CASE
|
|
513
|
+
WHEN shared_blks_hit + shared_blks_read > 0
|
|
514
|
+
THEN round((100.0 * shared_blks_hit / (shared_blks_hit + shared_blks_read))::numeric, 2)
|
|
515
|
+
ELSE 100
|
|
516
|
+
END as cache_hit_pct
|
|
517
|
+
FROM pg_stat_statements
|
|
518
|
+
ORDER BY total_plan_time + total_exec_time DESC
|
|
519
|
+
${limit !== null ? `LIMIT ${String(limit)}` : ""}`;
|
|
520
|
+
const result = await adapter.executeQuery(sql);
|
|
521
|
+
// Coerce numeric fields to JavaScript numbers and optionally truncate query
|
|
522
|
+
const queryPlanStats = (result.rows ?? []).map((row) => {
|
|
523
|
+
const queryVal = row["query"];
|
|
524
|
+
const query = typeof queryVal === "string" ? queryVal : "";
|
|
525
|
+
const truncatedQuery = truncateLen !== null && query.length > truncateLen
|
|
526
|
+
? query.substring(0, truncateLen) + "..."
|
|
527
|
+
: query;
|
|
528
|
+
return {
|
|
529
|
+
query: truncatedQuery,
|
|
530
|
+
queryTruncated: truncateLen !== null && query.length > truncateLen,
|
|
531
|
+
calls: toNum(row["calls"]),
|
|
532
|
+
total_plan_time: row["total_plan_time"],
|
|
533
|
+
mean_plan_time: row["mean_plan_time"],
|
|
534
|
+
total_exec_time: row["total_exec_time"],
|
|
535
|
+
mean_exec_time: row["mean_exec_time"],
|
|
536
|
+
rows: toNum(row["rows"]),
|
|
537
|
+
plan_pct: toNum(row["plan_pct"]),
|
|
538
|
+
cache_hit_pct: toNum(row["cache_hit_pct"]),
|
|
539
|
+
shared_blks_hit: toNum(row["shared_blks_hit"]),
|
|
540
|
+
shared_blks_read: toNum(row["shared_blks_read"]),
|
|
541
|
+
};
|
|
542
|
+
});
|
|
543
|
+
const response = {
|
|
544
|
+
queryPlanStats,
|
|
545
|
+
count: queryPlanStats.length,
|
|
546
|
+
hint: "High plan_pct indicates queries spending significant time in planning. Consider prepared statements.",
|
|
547
|
+
};
|
|
548
|
+
// Add totalCount if results were limited
|
|
549
|
+
if (limit !== null && queryPlanStats.length === limit) {
|
|
550
|
+
const countSql = `SELECT COUNT(*) as total FROM pg_stat_statements`;
|
|
551
|
+
const countResult = await adapter.executeQuery(countSql);
|
|
552
|
+
response["totalCount"] = toNum(countResult.rows?.[0]?.["total"]);
|
|
553
|
+
response["truncated"] = true;
|
|
554
|
+
}
|
|
555
|
+
return response;
|
|
556
|
+
},
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/performance/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL pgcrypto Extension Tools
|
|
3
|
+
* 9 tools total.
|
|
4
|
+
*/
|
|
5
|
+
import type { PostgresAdapter } from "../PostgresAdapter.js";
|
|
6
|
+
import type { ToolDefinition } from "../../../types/index.js";
|
|
7
|
+
export declare function getPgcryptoTools(adapter: PostgresAdapter): ToolDefinition[];
|
|
8
|
+
//# sourceMappingURL=pgcrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgcrypto.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/pgcrypto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAgB9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAY3E"}
|