@l-v-yonsama/multi-platform-database-drivers 2.0.1 → 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.
Files changed (454) hide show
  1. package/README.md +1 -0
  2. package/built/schema/log-parse-config.schema.json +4 -4
  3. package/built/src/drivers/AwsDriver.d.ts +25 -1
  4. package/built/src/drivers/AwsDriver.js +189 -0
  5. package/built/src/drivers/AwsDriver.js.map +1 -1
  6. package/built/src/drivers/BaseDriver.js.map +1 -1
  7. package/built/src/drivers/DBDriverResolver.js.map +1 -1
  8. package/built/src/drivers/KeycloakDriver.js.map +1 -1
  9. package/built/src/drivers/MqttDriver.js.map +1 -1
  10. package/built/src/drivers/MySQLDriver.d.ts +10 -1
  11. package/built/src/drivers/MySQLDriver.js +130 -0
  12. package/built/src/drivers/MySQLDriver.js.map +1 -1
  13. package/built/src/drivers/OracleDriver.d.ts +14 -1
  14. package/built/src/drivers/OracleDriver.js +217 -2
  15. package/built/src/drivers/OracleDriver.js.map +1 -1
  16. package/built/src/drivers/PostgresDriver.d.ts +9 -1
  17. package/built/src/drivers/PostgresDriver.js +90 -2
  18. package/built/src/drivers/PostgresDriver.js.map +1 -1
  19. package/built/src/drivers/RDSBaseDriver.d.ts +26 -1
  20. package/built/src/drivers/RDSBaseDriver.js +601 -0
  21. package/built/src/drivers/RDSBaseDriver.js.map +1 -1
  22. package/built/src/drivers/RedisDriver.js.map +1 -1
  23. package/built/src/drivers/SQLServerDriver.d.ts +18 -1
  24. package/built/src/drivers/SQLServerDriver.js +282 -6
  25. package/built/src/drivers/SQLServerDriver.js.map +1 -1
  26. package/built/src/drivers/SQLiteDriver.d.ts +7 -1
  27. package/built/src/drivers/SQLiteDriver.js +33 -1
  28. package/built/src/drivers/SQLiteDriver.js.map +1 -1
  29. package/built/src/drivers/aws/AwsCloudFormationServiceClient.js.map +1 -1
  30. package/built/src/drivers/aws/AwsDynamoServiceClient.d.ts +61 -5
  31. package/built/src/drivers/aws/AwsDynamoServiceClient.js +404 -108
  32. package/built/src/drivers/aws/AwsDynamoServiceClient.js.map +1 -1
  33. package/built/src/drivers/aws/AwsS3ServiceClient.js +18 -6
  34. package/built/src/drivers/aws/AwsS3ServiceClient.js.map +1 -1
  35. package/built/src/drivers/aws/AwsSQSServiceClient.js.map +1 -1
  36. package/built/src/drivers/aws/AwsSecretsManagerServiceClient.js.map +1 -1
  37. package/built/src/drivers/aws/AwsServiceClient.js.map +1 -1
  38. package/built/src/drivers/aws/AwsSsmServiceClient.js.map +1 -1
  39. package/built/src/drivers/aws/dynamoDbRdhSummary.d.ts +16 -0
  40. package/built/src/drivers/aws/dynamoDbRdhSummary.js +81 -0
  41. package/built/src/drivers/aws/dynamoDbRdhSummary.js.map +1 -0
  42. package/built/src/drivers/aws/dynamoDbResultMetadata.d.ts +9 -0
  43. package/built/src/drivers/aws/dynamoDbResultMetadata.js +71 -0
  44. package/built/src/drivers/aws/dynamoDbResultMetadata.js.map +1 -0
  45. package/built/src/drivers/index.d.ts +1 -0
  46. package/built/src/drivers/index.js +1 -0
  47. package/built/src/drivers/index.js.map +1 -1
  48. package/built/src/drivers/keycloak/resourceTreeBuilder.js.map +1 -1
  49. package/built/src/drivers/keycloak/scanResultBuilder.js.map +1 -1
  50. package/built/src/drivers/memcache/helper.js.map +1 -1
  51. package/built/src/drivers/providers/index.d.ts +3 -0
  52. package/built/src/drivers/providers/index.js +7 -0
  53. package/built/src/drivers/providers/index.js.map +1 -0
  54. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbMetricServiceAdapter.d.ts +8 -0
  55. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbMetricServiceAdapter.js +421 -0
  56. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbMetricServiceAdapter.js.map +1 -0
  57. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbOverviewMetricServiceAdapter.d.ts +7 -0
  58. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbOverviewMetricServiceAdapter.js +84 -0
  59. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbOverviewMetricServiceAdapter.js.map +1 -0
  60. package/built/src/drivers/providers/metrics/adapters/dynamodb/index.d.ts +2 -0
  61. package/built/src/drivers/providers/metrics/adapters/dynamodb/index.js +6 -0
  62. package/built/src/drivers/providers/metrics/adapters/dynamodb/index.js.map +1 -0
  63. package/built/src/drivers/providers/metrics/adapters/index.d.ts +6 -0
  64. package/built/src/drivers/providers/metrics/adapters/index.js +10 -0
  65. package/built/src/drivers/providers/metrics/adapters/index.js.map +1 -0
  66. package/built/src/drivers/providers/metrics/adapters/logs/CloudWatchLogsMetricServiceAdapter.d.ts +7 -0
  67. package/built/src/drivers/providers/metrics/adapters/logs/CloudWatchLogsMetricServiceAdapter.js +132 -0
  68. package/built/src/drivers/providers/metrics/adapters/logs/CloudWatchLogsMetricServiceAdapter.js.map +1 -0
  69. package/built/src/drivers/providers/metrics/adapters/logs/index.d.ts +1 -0
  70. package/built/src/drivers/providers/metrics/adapters/logs/index.js +5 -0
  71. package/built/src/drivers/providers/metrics/adapters/logs/index.js.map +1 -0
  72. package/built/src/drivers/providers/metrics/adapters/overview/index.d.ts +1 -0
  73. package/built/src/drivers/providers/metrics/adapters/overview/index.js +5 -0
  74. package/built/src/drivers/providers/metrics/adapters/overview/index.js.map +1 -0
  75. package/built/src/drivers/providers/metrics/adapters/overview/overviewMetricAdapterUtils.d.ts +26 -0
  76. package/built/src/drivers/providers/metrics/adapters/overview/overviewMetricAdapterUtils.js +80 -0
  77. package/built/src/drivers/providers/metrics/adapters/overview/overviewMetricAdapterUtils.js.map +1 -0
  78. package/built/src/drivers/providers/metrics/adapters/s3/S3MetricServiceAdapter.d.ts +21 -0
  79. package/built/src/drivers/providers/metrics/adapters/s3/S3MetricServiceAdapter.js +478 -0
  80. package/built/src/drivers/providers/metrics/adapters/s3/S3MetricServiceAdapter.js.map +1 -0
  81. package/built/src/drivers/providers/metrics/adapters/s3/S3OverviewMetricServiceAdapter.d.ts +13 -0
  82. package/built/src/drivers/providers/metrics/adapters/s3/S3OverviewMetricServiceAdapter.js +172 -0
  83. package/built/src/drivers/providers/metrics/adapters/s3/S3OverviewMetricServiceAdapter.js.map +1 -0
  84. package/built/src/drivers/providers/metrics/adapters/s3/index.d.ts +2 -0
  85. package/built/src/drivers/providers/metrics/adapters/s3/index.js +6 -0
  86. package/built/src/drivers/providers/metrics/adapters/s3/index.js.map +1 -0
  87. package/built/src/drivers/providers/metrics/adapters/ses/SesMetricServiceAdapter.d.ts +13 -0
  88. package/built/src/drivers/providers/metrics/adapters/ses/SesMetricServiceAdapter.js +183 -0
  89. package/built/src/drivers/providers/metrics/adapters/ses/SesMetricServiceAdapter.js.map +1 -0
  90. package/built/src/drivers/providers/metrics/adapters/ses/index.d.ts +1 -0
  91. package/built/src/drivers/providers/metrics/adapters/ses/index.js +5 -0
  92. package/built/src/drivers/providers/metrics/adapters/ses/index.js.map +1 -0
  93. package/built/src/drivers/providers/metrics/adapters/sqs/SqsMetricServiceAdapter.d.ts +7 -0
  94. package/built/src/drivers/providers/metrics/adapters/sqs/SqsMetricServiceAdapter.js +174 -0
  95. package/built/src/drivers/providers/metrics/adapters/sqs/SqsMetricServiceAdapter.js.map +1 -0
  96. package/built/src/drivers/providers/metrics/adapters/sqs/SqsOverviewMetricServiceAdapter.d.ts +7 -0
  97. package/built/src/drivers/providers/metrics/adapters/sqs/SqsOverviewMetricServiceAdapter.js +81 -0
  98. package/built/src/drivers/providers/metrics/adapters/sqs/SqsOverviewMetricServiceAdapter.js.map +1 -0
  99. package/built/src/drivers/providers/metrics/adapters/sqs/index.d.ts +2 -0
  100. package/built/src/drivers/providers/metrics/adapters/sqs/index.js +6 -0
  101. package/built/src/drivers/providers/metrics/adapters/sqs/index.js.map +1 -0
  102. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsAvailability.d.ts +23 -0
  103. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsAvailability.js +69 -0
  104. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsAvailability.js.map +1 -0
  105. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsCollector.d.ts +24 -0
  106. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsCollector.js +49 -0
  107. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsCollector.js.map +1 -0
  108. package/built/src/drivers/providers/metrics/cloudwatch/alignSeriesByTimestamp.d.ts +2 -0
  109. package/built/src/drivers/providers/metrics/cloudwatch/alignSeriesByTimestamp.js +16 -0
  110. package/built/src/drivers/providers/metrics/cloudwatch/alignSeriesByTimestamp.js.map +1 -0
  111. package/built/src/drivers/providers/metrics/cloudwatch/cloudWatchMetricsTransport.d.ts +21 -0
  112. package/built/src/drivers/providers/metrics/cloudwatch/cloudWatchMetricsTransport.js +193 -0
  113. package/built/src/drivers/providers/metrics/cloudwatch/cloudWatchMetricsTransport.js.map +1 -0
  114. package/built/src/drivers/providers/metrics/cloudwatch/collectAcrossMetricEndpoints.d.ts +6 -0
  115. package/built/src/drivers/providers/metrics/cloudwatch/collectAcrossMetricEndpoints.js +99 -0
  116. package/built/src/drivers/providers/metrics/cloudwatch/collectAcrossMetricEndpoints.js.map +1 -0
  117. package/built/src/drivers/providers/metrics/cloudwatch/deriveMetricSeries.d.ts +2 -0
  118. package/built/src/drivers/providers/metrics/cloudwatch/deriveMetricSeries.js +100 -0
  119. package/built/src/drivers/providers/metrics/cloudwatch/deriveMetricSeries.js.map +1 -0
  120. package/built/src/drivers/providers/metrics/cloudwatch/index.d.ts +7 -0
  121. package/built/src/drivers/providers/metrics/cloudwatch/index.js +11 -0
  122. package/built/src/drivers/providers/metrics/cloudwatch/index.js.map +1 -0
  123. package/built/src/drivers/providers/metrics/cloudwatch/metricPeriod.d.ts +2 -0
  124. package/built/src/drivers/providers/metrics/cloudwatch/metricPeriod.js +16 -0
  125. package/built/src/drivers/providers/metrics/cloudwatch/metricPeriod.js.map +1 -0
  126. package/built/src/drivers/providers/metrics/index.d.ts +3 -0
  127. package/built/src/drivers/providers/metrics/index.js +7 -0
  128. package/built/src/drivers/providers/metrics/index.js.map +1 -0
  129. package/built/src/drivers/providers/metrics/metricServiceAdapterRegistry.d.ts +8 -0
  130. package/built/src/drivers/providers/metrics/metricServiceAdapterRegistry.js +27 -0
  131. package/built/src/drivers/providers/metrics/metricServiceAdapterRegistry.js.map +1 -0
  132. package/built/src/drivers/providers/performance/DynamoDbPerformanceTuningProvider.d.ts +60 -0
  133. package/built/src/drivers/providers/performance/DynamoDbPerformanceTuningProvider.js +751 -0
  134. package/built/src/drivers/providers/performance/DynamoDbPerformanceTuningProvider.js.map +1 -0
  135. package/built/src/drivers/providers/performance/MySQLPerformanceTuningProvider.d.ts +29 -0
  136. package/built/src/drivers/providers/performance/MySQLPerformanceTuningProvider.js +350 -0
  137. package/built/src/drivers/providers/performance/MySQLPerformanceTuningProvider.js.map +1 -0
  138. package/built/src/drivers/providers/performance/OraclePerformanceTuningProvider.d.ts +37 -0
  139. package/built/src/drivers/providers/performance/OraclePerformanceTuningProvider.js +393 -0
  140. package/built/src/drivers/providers/performance/OraclePerformanceTuningProvider.js.map +1 -0
  141. package/built/src/drivers/providers/performance/PerformanceTuningContextProvider.d.ts +57 -0
  142. package/built/src/drivers/providers/performance/PerformanceTuningContextProvider.js +3 -0
  143. package/built/src/drivers/providers/performance/PerformanceTuningContextProvider.js.map +1 -0
  144. package/built/src/drivers/providers/performance/PostgresPerformanceTuningProvider.d.ts +24 -0
  145. package/built/src/drivers/providers/performance/PostgresPerformanceTuningProvider.js +328 -0
  146. package/built/src/drivers/providers/performance/PostgresPerformanceTuningProvider.js.map +1 -0
  147. package/built/src/drivers/providers/performance/SQLServerPerformanceTuningProvider.d.ts +29 -0
  148. package/built/src/drivers/providers/performance/SQLServerPerformanceTuningProvider.js +420 -0
  149. package/built/src/drivers/providers/performance/SQLServerPerformanceTuningProvider.js.map +1 -0
  150. package/built/src/drivers/providers/performance/dynamoDbCapacity.d.ts +38 -0
  151. package/built/src/drivers/providers/performance/dynamoDbCapacity.js +111 -0
  152. package/built/src/drivers/providers/performance/dynamoDbCapacity.js.map +1 -0
  153. package/built/src/drivers/providers/performance/dynamoDbCloudWatchMetrics.d.ts +20 -0
  154. package/built/src/drivers/providers/performance/dynamoDbCloudWatchMetrics.js +221 -0
  155. package/built/src/drivers/providers/performance/dynamoDbCloudWatchMetrics.js.map +1 -0
  156. package/built/src/drivers/providers/performance/dynamoPartiqlAccessPattern.d.ts +18 -0
  157. package/built/src/drivers/providers/performance/dynamoPartiqlAccessPattern.js +736 -0
  158. package/built/src/drivers/providers/performance/dynamoPartiqlAccessPattern.js.map +1 -0
  159. package/built/src/drivers/providers/performance/index.d.ts +23 -0
  160. package/built/src/drivers/providers/performance/index.js +27 -0
  161. package/built/src/drivers/providers/performance/index.js.map +1 -0
  162. package/built/src/drivers/providers/performance/mysqlActualPlanTextParser.d.ts +26 -0
  163. package/built/src/drivers/providers/performance/mysqlActualPlanTextParser.js +181 -0
  164. package/built/src/drivers/providers/performance/mysqlActualPlanTextParser.js.map +1 -0
  165. package/built/src/drivers/providers/performance/mysqlCatalogMapper.d.ts +11 -0
  166. package/built/src/drivers/providers/performance/mysqlCatalogMapper.js +218 -0
  167. package/built/src/drivers/providers/performance/mysqlCatalogMapper.js.map +1 -0
  168. package/built/src/drivers/providers/performance/mysqlPlanParser.d.ts +11 -0
  169. package/built/src/drivers/providers/performance/mysqlPlanParser.js +209 -0
  170. package/built/src/drivers/providers/performance/mysqlPlanParser.js.map +1 -0
  171. package/built/src/drivers/providers/performance/oracleActualPlanTextParser.d.ts +10 -0
  172. package/built/src/drivers/providers/performance/oracleActualPlanTextParser.js +245 -0
  173. package/built/src/drivers/providers/performance/oracleActualPlanTextParser.js.map +1 -0
  174. package/built/src/drivers/providers/performance/oracleCatalogMapper.d.ts +11 -0
  175. package/built/src/drivers/providers/performance/oracleCatalogMapper.js +226 -0
  176. package/built/src/drivers/providers/performance/oracleCatalogMapper.js.map +1 -0
  177. package/built/src/drivers/providers/performance/oraclePlanParser.d.ts +18 -0
  178. package/built/src/drivers/providers/performance/oraclePlanParser.js +223 -0
  179. package/built/src/drivers/providers/performance/oraclePlanParser.js.map +1 -0
  180. package/built/src/drivers/providers/performance/performanceTuningDiagnosticHelpers.d.ts +2 -0
  181. package/built/src/drivers/providers/performance/performanceTuningDiagnosticHelpers.js +13 -0
  182. package/built/src/drivers/providers/performance/performanceTuningDiagnosticHelpers.js.map +1 -0
  183. package/built/src/drivers/providers/performance/planNodeMath.d.ts +20 -0
  184. package/built/src/drivers/providers/performance/planNodeMath.js +82 -0
  185. package/built/src/drivers/providers/performance/planNodeMath.js.map +1 -0
  186. package/built/src/drivers/providers/performance/postgresCatalogMapper.d.ts +20 -0
  187. package/built/src/drivers/providers/performance/postgresCatalogMapper.js +287 -0
  188. package/built/src/drivers/providers/performance/postgresCatalogMapper.js.map +1 -0
  189. package/built/src/drivers/providers/performance/postgresPlanParser.d.ts +13 -0
  190. package/built/src/drivers/providers/performance/postgresPlanParser.js +258 -0
  191. package/built/src/drivers/providers/performance/postgresPlanParser.js.map +1 -0
  192. package/built/src/drivers/providers/performance/sqlServerActualPlanXmlParser.d.ts +10 -0
  193. package/built/src/drivers/providers/performance/sqlServerActualPlanXmlParser.js +252 -0
  194. package/built/src/drivers/providers/performance/sqlServerActualPlanXmlParser.js.map +1 -0
  195. package/built/src/drivers/providers/performance/sqlServerCatalogMapper.d.ts +20 -0
  196. package/built/src/drivers/providers/performance/sqlServerCatalogMapper.js +254 -0
  197. package/built/src/drivers/providers/performance/sqlServerCatalogMapper.js.map +1 -0
  198. package/built/src/drivers/providers/performance/sqlServerPlanParser.d.ts +10 -0
  199. package/built/src/drivers/providers/performance/sqlServerPlanParser.js +199 -0
  200. package/built/src/drivers/providers/performance/sqlServerPlanParser.js.map +1 -0
  201. package/built/src/drivers/providers/performance/vendorRowCoercion.d.ts +6 -0
  202. package/built/src/drivers/providers/performance/vendorRowCoercion.js +42 -0
  203. package/built/src/drivers/providers/performance/vendorRowCoercion.js.map +1 -0
  204. package/built/src/drivers/providers/rdbDashboard/RdbDashboardProvider.d.ts +8 -0
  205. package/built/src/drivers/providers/rdbDashboard/RdbDashboardProvider.js +3 -0
  206. package/built/src/drivers/providers/rdbDashboard/RdbDashboardProvider.js.map +1 -0
  207. package/built/src/drivers/providers/rdbDashboard/RdbSampleAccumulator.d.ts +22 -0
  208. package/built/src/drivers/providers/rdbDashboard/RdbSampleAccumulator.js +331 -0
  209. package/built/src/drivers/providers/rdbDashboard/RdbSampleAccumulator.js.map +1 -0
  210. package/built/src/drivers/providers/rdbDashboard/index.d.ts +9 -0
  211. package/built/src/drivers/providers/rdbDashboard/index.js +13 -0
  212. package/built/src/drivers/providers/rdbDashboard/index.js.map +1 -0
  213. package/built/src/drivers/providers/rdbDashboard/rdbDashboardErrors.d.ts +3 -0
  214. package/built/src/drivers/providers/rdbDashboard/rdbDashboardErrors.js +10 -0
  215. package/built/src/drivers/providers/rdbDashboard/rdbDashboardErrors.js.map +1 -0
  216. package/built/src/drivers/providers/rdbDashboard/rdbDashboardValueUtils.d.ts +7 -0
  217. package/built/src/drivers/providers/rdbDashboard/rdbDashboardValueUtils.js +31 -0
  218. package/built/src/drivers/providers/rdbDashboard/rdbDashboardValueUtils.js.map +1 -0
  219. package/built/src/drivers/providers/rdbDashboard/validateRdbDashboard.d.ts +3 -0
  220. package/built/src/drivers/providers/rdbDashboard/validateRdbDashboard.js +73 -0
  221. package/built/src/drivers/providers/rdbDashboard/validateRdbDashboard.js.map +1 -0
  222. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/MySQLRdbDashboardProvider.d.ts +16 -0
  223. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/MySQLRdbDashboardProvider.js +247 -0
  224. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/MySQLRdbDashboardProvider.js.map +1 -0
  225. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/index.d.ts +3 -0
  226. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/index.js +7 -0
  227. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/index.js.map +1 -0
  228. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardCatalog.d.ts +4 -0
  229. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardCatalog.js +279 -0
  230. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardCatalog.js.map +1 -0
  231. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardQueries.d.ts +5 -0
  232. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardQueries.js +41 -0
  233. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardQueries.js.map +1 -0
  234. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/OracleRdbDashboardProvider.d.ts +21 -0
  235. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/OracleRdbDashboardProvider.js +420 -0
  236. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/OracleRdbDashboardProvider.js.map +1 -0
  237. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/index.d.ts +3 -0
  238. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/index.js +7 -0
  239. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/index.js.map +1 -0
  240. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardCatalog.d.ts +12 -0
  241. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardCatalog.js +117 -0
  242. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardCatalog.js.map +1 -0
  243. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardQueries.d.ts +8 -0
  244. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardQueries.js +60 -0
  245. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardQueries.js.map +1 -0
  246. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/PostgresRdbDashboardProvider.d.ts +13 -0
  247. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/PostgresRdbDashboardProvider.js +216 -0
  248. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/PostgresRdbDashboardProvider.js.map +1 -0
  249. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/index.d.ts +3 -0
  250. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/index.js +7 -0
  251. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/index.js.map +1 -0
  252. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardCatalog.d.ts +4 -0
  253. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardCatalog.js +218 -0
  254. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardCatalog.js.map +1 -0
  255. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardQueries.d.ts +3 -0
  256. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardQueries.js +70 -0
  257. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardQueries.js.map +1 -0
  258. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/SQLiteRdbDashboardProvider.d.ts +20 -0
  259. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/SQLiteRdbDashboardProvider.js +259 -0
  260. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/SQLiteRdbDashboardProvider.js.map +1 -0
  261. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/index.d.ts +3 -0
  262. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/index.js +7 -0
  263. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/index.js.map +1 -0
  264. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardCatalog.d.ts +5 -0
  265. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardCatalog.js +135 -0
  266. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardCatalog.js.map +1 -0
  267. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardQueries.d.ts +4 -0
  268. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardQueries.js +14 -0
  269. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardQueries.js.map +1 -0
  270. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/SQLServerRdbDashboardProvider.d.ts +16 -0
  271. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/SQLServerRdbDashboardProvider.js +301 -0
  272. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/SQLServerRdbDashboardProvider.js.map +1 -0
  273. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/index.d.ts +3 -0
  274. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/index.js +7 -0
  275. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/index.js.map +1 -0
  276. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardCatalog.d.ts +4 -0
  277. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardCatalog.js +130 -0
  278. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardCatalog.js.map +1 -0
  279. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardQueries.d.ts +6 -0
  280. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardQueries.js +91 -0
  281. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardQueries.js.map +1 -0
  282. package/built/src/helpers/ProposalHelper.js.map +1 -1
  283. package/built/src/helpers/SQLHelper.d.ts +1 -1
  284. package/built/src/helpers/SQLHelper.js +3 -1
  285. package/built/src/helpers/SQLHelper.js.map +1 -1
  286. package/built/src/helpers/dynamoDbBillingMode.d.ts +6 -0
  287. package/built/src/helpers/dynamoDbBillingMode.js +16 -0
  288. package/built/src/helpers/dynamoDbBillingMode.js.map +1 -0
  289. package/built/src/helpers/index.d.ts +1 -0
  290. package/built/src/helpers/index.js +1 -0
  291. package/built/src/helpers/index.js.map +1 -1
  292. package/built/src/helpers/prompts/Auth0PromptHelper.js.map +1 -1
  293. package/built/src/helpers/prompts/AwsPromptHelper.js.map +1 -1
  294. package/built/src/helpers/prompts/KeycloakPromptHelper.js.map +1 -1
  295. package/built/src/helpers/prompts/MemcachePromptHelper.js.map +1 -1
  296. package/built/src/helpers/prompts/MqttPromptHelper.js.map +1 -1
  297. package/built/src/helpers/prompts/RdsPromptHelper.js.map +1 -1
  298. package/built/src/helpers/prompts/RedisPromptHelper.js.map +1 -1
  299. package/built/src/helpers/prompts/SchemaPromptHelper.js.map +1 -1
  300. package/built/src/helpers/prompts/promptFormatUtils.js.map +1 -1
  301. package/built/src/helpers/sql/mutationQuery.js.map +1 -1
  302. package/built/src/helpers/sql/parameterNormalizer.js +2 -2
  303. package/built/src/helpers/sql/parameterNormalizer.js.map +1 -1
  304. package/built/src/helpers/sql/queryParser.js +272 -48
  305. package/built/src/helpers/sql/queryParser.js.map +1 -1
  306. package/built/src/helpers/sql/quote.d.ts +2 -0
  307. package/built/src/helpers/sql/quote.js +9 -2
  308. package/built/src/helpers/sql/quote.js.map +1 -1
  309. package/built/src/helpers/sql/selectQuery.js.map +1 -1
  310. package/built/src/resource/aws.d.ts +2 -1
  311. package/built/src/resource/aws.js +76 -2
  312. package/built/src/resource/aws.js.map +1 -1
  313. package/built/src/resource/base.d.ts +2 -1
  314. package/built/src/resource/base.js.map +1 -1
  315. package/built/src/resource/fromJson.js.map +1 -1
  316. package/built/src/resource/iam.js.map +1 -1
  317. package/built/src/resource/index.js.map +1 -1
  318. package/built/src/resource/keyValue.js.map +1 -1
  319. package/built/src/types/drivers/EstimatedBindParameter.d.ts +12 -0
  320. package/built/src/types/drivers/EstimatedBindParameter.js +3 -0
  321. package/built/src/types/drivers/EstimatedBindParameter.js.map +1 -0
  322. package/built/src/types/drivers/StatementStatistics.d.ts +13 -0
  323. package/built/src/types/drivers/StatementStatistics.js +10 -0
  324. package/built/src/types/drivers/StatementStatistics.js.map +1 -0
  325. package/built/src/types/drivers/index.d.ts +5 -0
  326. package/built/src/types/drivers/index.js +5 -0
  327. package/built/src/types/drivers/index.js.map +1 -1
  328. package/built/src/types/drivers/metrics/CloudWatchMetrics.d.ts +168 -0
  329. package/built/src/types/drivers/metrics/CloudWatchMetrics.js +3 -0
  330. package/built/src/types/drivers/metrics/CloudWatchMetrics.js.map +1 -0
  331. package/built/src/types/drivers/metrics/index.d.ts +1 -0
  332. package/built/src/types/drivers/metrics/index.js +5 -0
  333. package/built/src/types/drivers/metrics/index.js.map +1 -0
  334. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningCapabilities.d.ts +12 -0
  335. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningCapabilities.js +3 -0
  336. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningCapabilities.js.map +1 -0
  337. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningContext.d.ts +302 -0
  338. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningContext.js +7 -0
  339. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningContext.js.map +1 -0
  340. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningDiagnostic.d.ts +13 -0
  341. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningDiagnostic.js +3 -0
  342. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningDiagnostic.js.map +1 -0
  343. package/built/src/types/drivers/performance/PerformanceTuningCapabilities.d.ts +17 -0
  344. package/built/src/types/drivers/performance/PerformanceTuningCapabilities.js +3 -0
  345. package/built/src/types/drivers/performance/PerformanceTuningCapabilities.js.map +1 -0
  346. package/built/src/types/drivers/performance/PerformanceTuningContext.d.ts +263 -0
  347. package/built/src/types/drivers/performance/PerformanceTuningContext.js +3 -0
  348. package/built/src/types/drivers/performance/PerformanceTuningContext.js.map +1 -0
  349. package/built/src/types/drivers/performance/PerformanceTuningDiagnostic.d.ts +28 -0
  350. package/built/src/types/drivers/performance/PerformanceTuningDiagnostic.js +3 -0
  351. package/built/src/types/drivers/performance/PerformanceTuningDiagnostic.js.map +1 -0
  352. package/built/src/types/drivers/performance/PlanNode.d.ts +37 -0
  353. package/built/src/types/drivers/performance/PlanNode.js +3 -0
  354. package/built/src/types/drivers/performance/PlanNode.js.map +1 -0
  355. package/built/src/types/drivers/performance/index.d.ts +7 -0
  356. package/built/src/types/drivers/performance/index.js +11 -0
  357. package/built/src/types/drivers/performance/index.js.map +1 -0
  358. package/built/src/types/drivers/rdbDashboard/RdbDashboardCapabilities.d.ts +30 -0
  359. package/built/src/types/drivers/rdbDashboard/RdbDashboardCapabilities.js +3 -0
  360. package/built/src/types/drivers/rdbDashboard/RdbDashboardCapabilities.js.map +1 -0
  361. package/built/src/types/drivers/rdbDashboard/RdbDashboardDefinition.d.ts +134 -0
  362. package/built/src/types/drivers/rdbDashboard/RdbDashboardDefinition.js +14 -0
  363. package/built/src/types/drivers/rdbDashboard/RdbDashboardDefinition.js.map +1 -0
  364. package/built/src/types/drivers/rdbDashboard/RdbDashboardSample.d.ts +69 -0
  365. package/built/src/types/drivers/rdbDashboard/RdbDashboardSample.js +3 -0
  366. package/built/src/types/drivers/rdbDashboard/RdbDashboardSample.js.map +1 -0
  367. package/built/src/types/drivers/rdbDashboard/index.d.ts +3 -0
  368. package/built/src/types/drivers/rdbDashboard/index.js +7 -0
  369. package/built/src/types/drivers/rdbDashboard/index.js.map +1 -0
  370. package/built/src/types/helpers/index.js.map +1 -1
  371. package/built/src/types/index.d.ts +1 -0
  372. package/built/src/types/index.js +1 -0
  373. package/built/src/types/index.js.map +1 -1
  374. package/built/src/types/observability/dashboardLaunchCapability.d.ts +11 -0
  375. package/built/src/types/observability/dashboardLaunchCapability.js +22 -0
  376. package/built/src/types/observability/dashboardLaunchCapability.js.map +1 -0
  377. package/built/src/types/observability/index.d.ts +1 -0
  378. package/built/src/types/observability/index.js +5 -0
  379. package/built/src/types/observability/index.js.map +1 -0
  380. package/built/src/types/resource/AwsCfnStackAttributes.js.map +1 -1
  381. package/built/src/types/resource/AwsDynamoTableAttributes.d.ts +13 -0
  382. package/built/src/types/resource/AwsServiceType.d.ts +1 -1
  383. package/built/src/types/resource/AwsSupplyCredentialType.js.map +1 -1
  384. package/built/src/types/resource/ConnectionSetting.js.map +1 -1
  385. package/built/src/types/resource/OracleColumnType.js.map +1 -1
  386. package/built/src/types/resource/RedisKeyType.d.ts +1 -1
  387. package/built/src/types/resource/ResourceType.js.map +1 -1
  388. package/built/src/types/resource/SQLServerColumnType.js.map +1 -1
  389. package/built/src/utils/bindParameterEstimator.d.ts +22 -0
  390. package/built/src/utils/bindParameterEstimator.js +400 -0
  391. package/built/src/utils/bindParameterEstimator.js.map +1 -0
  392. package/built/src/utils/cfn/applicationDiagram.js.map +1 -1
  393. package/built/src/utils/cfn/applicationRelations.js.map +1 -1
  394. package/built/src/utils/cfn/cfnDependencyGraphDiagram.js.map +1 -1
  395. package/built/src/utils/cfn/deploymentTopology.js.map +1 -1
  396. package/built/src/utils/cfn/diagramFileModel.js.map +1 -1
  397. package/built/src/utils/cfn/drawio/cfnDependencyGraphDiagram.js.map +1 -1
  398. package/built/src/utils/cfn/drawio/commonCells.js.map +1 -1
  399. package/built/src/utils/cfn/drawio/multiAzInfrastructureDiagram.js.map +1 -1
  400. package/built/src/utils/cfn/drawioApplicationDiagram.js.map +1 -1
  401. package/built/src/utils/cfn/drawioInfrastructureDiagrams.js.map +1 -1
  402. package/built/src/utils/cfn/drawioXml.js.map +1 -1
  403. package/built/src/utils/cfn/generateDiagram.js.map +1 -1
  404. package/built/src/utils/cfn/icons.js.map +1 -1
  405. package/built/src/utils/cfn/index.js.map +1 -1
  406. package/built/src/utils/cfn/intrinsics.js.map +1 -1
  407. package/built/src/utils/cfn/multiAzDeploymentTrafficPathsAndProtection.js.map +1 -1
  408. package/built/src/utils/cfn/multiAzDeploymentTrafficPathsAndProtectionDiagram.js.map +1 -1
  409. package/built/src/utils/cfn/naming.js.map +1 -1
  410. package/built/src/utils/cfn/resourceDependencies.js.map +1 -1
  411. package/built/src/utils/cfn/templateParsing.js.map +1 -1
  412. package/built/src/utils/cfn/viewpoints.js.map +1 -1
  413. package/built/src/utils/csv.js.map +1 -1
  414. package/built/src/utils/dbType.js.map +1 -1
  415. package/built/src/utils/diagramLayout/elkLayoutEngine.js.map +1 -1
  416. package/built/src/utils/diagramLayout/index.js.map +1 -1
  417. package/built/src/utils/diagramLayout/normalizeLayout.js.map +1 -1
  418. package/built/src/utils/drawio/drawioXml.js.map +1 -1
  419. package/built/src/utils/drawio/index.js.map +1 -1
  420. package/built/src/utils/dynamoDbPerformanceTuningContextValidator.d.ts +3 -0
  421. package/built/src/utils/dynamoDbPerformanceTuningContextValidator.js +440 -0
  422. package/built/src/utils/dynamoDbPerformanceTuningContextValidator.js.map +1 -0
  423. package/built/src/utils/er/erDiagramDrawioGenerator.js.map +1 -1
  424. package/built/src/utils/er/erDiagramDrawioGeneratorAuto.js.map +1 -1
  425. package/built/src/utils/er/erDiagramGenerator.js.map +1 -1
  426. package/built/src/utils/er/index.d.ts +1 -0
  427. package/built/src/utils/er/index.js +3 -1
  428. package/built/src/utils/er/index.js.map +1 -1
  429. package/built/src/utils/er/performanceQueryDiagram.d.ts +18 -0
  430. package/built/src/utils/er/performanceQueryDiagram.js +381 -0
  431. package/built/src/utils/er/performanceQueryDiagram.js.map +1 -0
  432. package/built/src/utils/index.d.ts +5 -0
  433. package/built/src/utils/index.js +5 -0
  434. package/built/src/utils/index.js.map +1 -1
  435. package/built/src/utils/log/buildSqlExecutions.js.map +1 -1
  436. package/built/src/utils/log/constant/base.js.map +1 -1
  437. package/built/src/utils/log/constant/logEventSplitPreset.js.map +1 -1
  438. package/built/src/utils/log/constant/sqlLogParsePreset.js.map +1 -1
  439. package/built/src/utils/log/detect/presetDetector.js.map +1 -1
  440. package/built/src/utils/log/extract/runExtractors.js.map +1 -1
  441. package/built/src/utils/log/logSummary.js.map +1 -1
  442. package/built/src/utils/log/rdh/convertExtractedSqlRdhResult.js.map +1 -1
  443. package/built/src/utils/log/sql/removeSqlComments.js.map +1 -1
  444. package/built/src/utils/log/validator.js.map +1 -1
  445. package/built/src/utils/performanceTuningContext.d.ts +45 -0
  446. package/built/src/utils/performanceTuningContext.js +149 -0
  447. package/built/src/utils/performanceTuningContext.js.map +1 -0
  448. package/built/src/utils/performanceTuningContextValidator.d.ts +3 -0
  449. package/built/src/utils/performanceTuningContextValidator.js +364 -0
  450. package/built/src/utils/performanceTuningContextValidator.js.map +1 -0
  451. package/built/src/utils/statementStatistics.d.ts +11 -0
  452. package/built/src/utils/statementStatistics.js +39 -0
  453. package/built/src/utils/statementStatistics.js.map +1 -0
  454. package/package.json +37 -31
@@ -7,10 +7,27 @@ const helpers_1 = require("../helpers");
7
7
  const resource_1 = require("../resource");
8
8
  const utils_1 = require("../utils");
9
9
  const BaseSQLSupportDriver_1 = require("./BaseSQLSupportDriver");
10
+ const providers_1 = require("./providers");
10
11
  class RDSBaseDriver extends BaseSQLSupportDriver_1.BaseSQLSupportDriver {
11
12
  constructor(conRes) {
12
13
  super(conRes);
13
14
  }
15
+ assertSessionStateAvailable(operation) {
16
+ if (this.exclusiveSessionStateOperation) {
17
+ throw new Error(`Cannot ${operation} while ${this.exclusiveSessionStateOperation} is in progress`);
18
+ }
19
+ }
20
+ beginExclusiveSessionStateOperation(operation) {
21
+ this.assertSessionStateAvailable(operation);
22
+ this.exclusiveSessionStateOperation = operation;
23
+ let released = false;
24
+ return () => {
25
+ if (!released) {
26
+ released = true;
27
+ this.exclusiveSessionStateOperation = undefined;
28
+ }
29
+ };
30
+ }
14
31
  getSqlLang() {
15
32
  return 'sql';
16
33
  }
@@ -69,6 +86,7 @@ class RDSBaseDriver extends BaseSQLSupportDriver_1.BaseSQLSupportDriver {
69
86
  requestSql(params) {
70
87
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
71
88
  var _a, _b, _c;
89
+ this.assertSessionStateAvailable('run a query');
72
90
  const { sql, conditions, prepare } = params;
73
91
  let qst = undefined;
74
92
  let dbTable = undefined;
@@ -114,6 +132,7 @@ class RDSBaseDriver extends BaseSQLSupportDriver_1.BaseSQLSupportDriver {
114
132
  }
115
133
  explainSql(params) {
116
134
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
135
+ this.assertSessionStateAvailable('retrieve an execution plan');
117
136
  const { sql, prepare } = params;
118
137
  const ast = (0, helpers_1.parseQuery)(sql);
119
138
  const dbTable = this.getDbTable(ast);
@@ -135,9 +154,591 @@ class RDSBaseDriver extends BaseSQLSupportDriver_1.BaseSQLSupportDriver {
135
154
  return rdb.build();
136
155
  });
137
156
  }
157
+ getRdbDashboardProvider() {
158
+ return undefined;
159
+ }
160
+ supportsRdbDashboard() {
161
+ return this.getRdbDashboardProvider() !== undefined;
162
+ }
163
+ checkRdbDashboardAvailability(target, options) {
164
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
165
+ const provider = this.getRdbDashboardProvider();
166
+ const effectiveOptions = this.normalizeRdbDashboardCallOptions(options);
167
+ const invalid = this.validateRdbDashboardTarget(target);
168
+ if (!provider) {
169
+ return { ok: false, message: 'RDB dashboard is not supported for this database.' };
170
+ }
171
+ if (invalid) {
172
+ return { ok: false, message: invalid };
173
+ }
174
+ const result = yield this.callRdbDashboardProvider(() => provider.checkCapabilities(target, effectiveOptions), effectiveOptions, 'capability check');
175
+ if (result.ok && result.result) {
176
+ const validationError = (0, providers_1.validateRdbDashboardCapabilities)(result.result, provider.providerId);
177
+ if (validationError) {
178
+ return { ok: false, message: validationError };
179
+ }
180
+ }
181
+ return result;
182
+ });
183
+ }
184
+ resolveRdbDashboard(target, selection, options) {
185
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
186
+ const provider = this.getRdbDashboardProvider();
187
+ const effectiveOptions = this.normalizeRdbDashboardCallOptions(options);
188
+ const invalid = this.validateRdbDashboardTarget(target);
189
+ if (!provider) {
190
+ return { ok: false, message: 'RDB dashboard is not supported for this database.' };
191
+ }
192
+ if (invalid) {
193
+ return { ok: false, message: invalid };
194
+ }
195
+ if (!this.isValidRdbDashboardSelection(selection)) {
196
+ return { ok: false, message: 'RDB dashboard selection is invalid.' };
197
+ }
198
+ const result = yield this.callRdbDashboardProvider(() => provider.resolveDashboard(target, selection, effectiveOptions), effectiveOptions, 'definition resolution');
199
+ if (result.ok && result.result) {
200
+ const validationError = (0, providers_1.validateResolvedRdbDashboard)(result.result, provider.providerId);
201
+ if (validationError) {
202
+ return { ok: false, message: validationError };
203
+ }
204
+ }
205
+ return result;
206
+ });
207
+ }
208
+ collectRdbDashboardSample(request, options) {
209
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
210
+ const provider = this.getRdbDashboardProvider();
211
+ const effectiveOptions = this.normalizeRdbDashboardCallOptions(options);
212
+ const invalid = this.validateRdbDashboardTarget(request === null || request === void 0 ? void 0 : request.target);
213
+ if (!provider) {
214
+ return { ok: false, message: 'RDB dashboard is not supported for this database.' };
215
+ }
216
+ if (invalid ||
217
+ !(request === null || request === void 0 ? void 0 : request.sampleSessionId) ||
218
+ !Number.isInteger(request.definitionVersion) ||
219
+ request.definitionVersion < 0 ||
220
+ !Number.isInteger(request.sequence) ||
221
+ request.sequence < 0 ||
222
+ !this.isValidRdbDashboardSelection(request.selection) ||
223
+ !Array.isArray(request.metricIds) ||
224
+ request.metricIds.length === 0 ||
225
+ request.metricIds.length > 200 ||
226
+ request.metricIds.some((id) => typeof id !== 'string' || !id || id.length > 128) ||
227
+ new Set(request.metricIds).size !== request.metricIds.length) {
228
+ return { ok: false, message: invalid !== null && invalid !== void 0 ? invalid : 'RDB dashboard sample request is invalid.' };
229
+ }
230
+ const result = yield this.callRdbDashboardProvider(() => provider.collectSample(request, effectiveOptions), effectiveOptions, 'sample collection');
231
+ if (!result.ok || !result.result) {
232
+ return result;
233
+ }
234
+ const batch = result.result;
235
+ const allowedMetrics = new Set(request.metricIds);
236
+ if (batch.sampleSessionId !== request.sampleSessionId ||
237
+ batch.definitionVersion !== request.definitionVersion ||
238
+ batch.sequence !== request.sequence ||
239
+ !Array.isArray(batch.observations) ||
240
+ batch.observations.some((it) => !allowedMetrics.has(it.metricId))) {
241
+ return { ok: false, message: 'RDB dashboard provider returned a mismatched sample.' };
242
+ }
243
+ this.enforceRdbDashboardSampleBudget(batch, 2000000);
244
+ return result;
245
+ });
246
+ }
247
+ validateRdbDashboardTarget(target) {
248
+ if (!(target === null || target === void 0 ? void 0 : target.resourceKey) || target.resourceKey.length > 256) {
249
+ return 'RDB dashboard resourceKey is required.';
250
+ }
251
+ if (!target.databaseName || target.databaseName.length > 256) {
252
+ return 'RDB dashboard databaseName is required.';
253
+ }
254
+ if (target.dbType !== this.conRes.dbType) {
255
+ return 'RDB dashboard target database type does not match this driver.';
256
+ }
257
+ return undefined;
258
+ }
259
+ isValidRdbDashboardSelection(selection) {
260
+ if (!selection || typeof selection !== 'object' || Array.isArray(selection)) {
261
+ return false;
262
+ }
263
+ const entries = Object.entries(selection);
264
+ return (entries.length <= 20 &&
265
+ entries.every(([key, value]) => key.length > 0 && key.length <= 128 && typeof value === 'string' && value.length <= 256));
266
+ }
267
+ normalizeRdbDashboardCallOptions(options) {
268
+ var _a;
269
+ return {
270
+ signal: options === null || options === void 0 ? void 0 : options.signal,
271
+ timeoutMs: Math.max(100, Math.min((_a = options === null || options === void 0 ? void 0 : options.timeoutMs) !== null && _a !== void 0 ? _a : 3000, 30000)),
272
+ };
273
+ }
274
+ callRdbDashboardProvider(fn, options, stage) {
275
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
276
+ var _a, _b;
277
+ if ((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {
278
+ return { ok: false, message: providers_1.RDB_DASHBOARD_CANCELLED_MESSAGE };
279
+ }
280
+ const timeoutMs = (_b = options === null || options === void 0 ? void 0 : options.timeoutMs) !== null && _b !== void 0 ? _b : 3000;
281
+ return new Promise((resolve) => {
282
+ var _a;
283
+ let settled = false;
284
+ const settle = (value) => {
285
+ var _a;
286
+ if (settled)
287
+ return;
288
+ settled = true;
289
+ clearTimeout(timer);
290
+ (_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.removeEventListener('abort', onAbort);
291
+ resolve(value);
292
+ };
293
+ const onAbort = () => settle({ ok: false, message: providers_1.RDB_DASHBOARD_CANCELLED_MESSAGE });
294
+ const timer = setTimeout(() => settle({ ok: false, message: (0, providers_1.rdbDashboardTimeoutMessage)(stage, timeoutMs) }), timeoutMs);
295
+ (_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.addEventListener('abort', onAbort);
296
+ Promise.resolve()
297
+ .then(fn)
298
+ .then((result) => {
299
+ if (!result || typeof result.ok !== 'boolean') {
300
+ settle({ ok: false, message: providers_1.RDB_DASHBOARD_UNEXPECTED_ERROR_MESSAGE });
301
+ return;
302
+ }
303
+ settle(result);
304
+ })
305
+ .catch((error) => {
306
+ console.error(`[rdbDashboard:${stage}] Provider failed:`, error);
307
+ settle({ ok: false, message: providers_1.RDB_DASHBOARD_UNEXPECTED_ERROR_MESSAGE });
308
+ });
309
+ });
310
+ });
311
+ }
312
+ enforceRdbDashboardSampleBudget(batch, maxBytes) {
313
+ const size = () => Buffer.byteLength(JSON.stringify(batch), 'utf8');
314
+ let truncated = false;
315
+ while (batch.observations.length > 0 && size() > maxBytes) {
316
+ batch.observations.pop();
317
+ truncated = true;
318
+ }
319
+ if (truncated) {
320
+ batch.diagnostics.push({
321
+ sectionId: 'dashboard',
322
+ severity: 'warning',
323
+ code: 'payload-truncated',
324
+ message: 'Some observations were omitted to stay within the payload limit.',
325
+ });
326
+ }
327
+ }
328
+ getPerformanceTuningContextProvider() {
329
+ return undefined;
330
+ }
331
+ supportsGetPerformanceTuningContext() {
332
+ return this.getPerformanceTuningContextProvider() !== undefined;
333
+ }
334
+ checkPerformanceTuningContextAvailability(params, options) {
335
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
336
+ var _a;
337
+ const provider = this.getPerformanceTuningContextProvider();
338
+ if (!provider) {
339
+ return {
340
+ ok: false,
341
+ message: 'Performance tuning context is not supported for this database.',
342
+ };
343
+ }
344
+ if (!params || !params.databaseName) {
345
+ return { ok: false, message: 'databaseName is required.' };
346
+ }
347
+ if ((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {
348
+ return { ok: false, message: 'Performance tuning context collection was cancelled.' };
349
+ }
350
+ try {
351
+ return yield provider.checkCapabilities(params, options);
352
+ }
353
+ catch (e) {
354
+ return this.toPerformanceTuningContextErrorResult(e, 'checkCapabilities');
355
+ }
356
+ });
357
+ }
358
+ toPerformanceTuningContextErrorResult(e, stage) {
359
+ console.error(`[getPerformanceTuningContext:${stage}] Provider threw an unexpected error:`, e);
360
+ return {
361
+ ok: false,
362
+ message: 'Performance tuning context collection failed unexpectedly. Check the extension/driver logs for details.',
363
+ };
364
+ }
365
+ safeCollect(fn, stage) {
366
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
367
+ try {
368
+ return yield fn();
369
+ }
370
+ catch (e) {
371
+ return this.toPerformanceTuningContextErrorResult(e, stage);
372
+ }
373
+ });
374
+ }
375
+ withDeadline(fn, deadline, stage) {
376
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
377
+ var _a;
378
+ if ((_a = deadline.signal) === null || _a === void 0 ? void 0 : _a.aborted) {
379
+ return { ok: false, message: 'Performance tuning context collection was cancelled.' };
380
+ }
381
+ return new Promise((resolve) => {
382
+ var _a;
383
+ let settled = false;
384
+ const cleanup = () => {
385
+ var _a;
386
+ clearTimeout(timer);
387
+ (_a = deadline.signal) === null || _a === void 0 ? void 0 : _a.removeEventListener('abort', onAbort);
388
+ };
389
+ const settle = (result) => {
390
+ if (settled) {
391
+ return;
392
+ }
393
+ settled = true;
394
+ cleanup();
395
+ resolve(result);
396
+ };
397
+ const onAbort = () => {
398
+ settle({ ok: false, message: 'Performance tuning context collection was cancelled.' });
399
+ };
400
+ const timer = setTimeout(() => {
401
+ settle({ ok: false, message: `${stage} timed out after ${deadline.timeoutMs}ms.` });
402
+ }, deadline.timeoutMs);
403
+ (_a = deadline.signal) === null || _a === void 0 ? void 0 : _a.addEventListener('abort', onAbort);
404
+ this.safeCollect(fn, stage).then(settle);
405
+ });
406
+ });
407
+ }
408
+ enforcePayloadBudget(context, maxPayloadBytes) {
409
+ const payloadSize = () => Buffer.byteLength(JSON.stringify(context), 'utf8');
410
+ if (payloadSize() <= maxPayloadBytes) {
411
+ return false;
412
+ }
413
+ let truncated = false;
414
+ while (context.tables.length > 0 && payloadSize() > maxPayloadBytes) {
415
+ const dropped = context.tables.pop();
416
+ if (!dropped) {
417
+ break;
418
+ }
419
+ truncated = true;
420
+ for (const section of [
421
+ 'tableDefinition',
422
+ 'tableStatistics',
423
+ 'columnStatistics',
424
+ 'physicalHealth',
425
+ ]) {
426
+ context.collection.unavailableSections.push({
427
+ section,
428
+ schemaName: dropped.schemaName,
429
+ tableName: dropped.tableName,
430
+ reason: 'Dropped to keep the result within maxPayloadBytes.',
431
+ });
432
+ }
433
+ }
434
+ if (payloadSize() > maxPayloadBytes && context.executionPlan.vendorPlan !== undefined) {
435
+ truncated = true;
436
+ context.executionPlan.vendorPlan = undefined;
437
+ context.executionPlan.normalizedPlan = undefined;
438
+ context.executionPlan.dominantCostPlanNode = undefined;
439
+ context.collection.unavailableSections.push({
440
+ section: 'executionPlan',
441
+ reason: 'The raw and normalized plan were omitted to keep the result within maxPayloadBytes.',
442
+ });
443
+ }
444
+ if (payloadSize() > maxPayloadBytes) {
445
+ context.collection.diagnostics.push({
446
+ code: 'COLLECTION_TRUNCATED',
447
+ severity: 'warning',
448
+ affectsCompleteness: true,
449
+ scope: 'collection',
450
+ message: `Result still exceeds maxPayloadBytes (${maxPayloadBytes} bytes) after truncation.`,
451
+ });
452
+ }
453
+ else if (truncated) {
454
+ context.collection.diagnostics.push({
455
+ code: 'COLLECTION_TRUNCATED',
456
+ severity: 'warning',
457
+ affectsCompleteness: true,
458
+ scope: 'collection',
459
+ message: 'Result was truncated to satisfy maxPayloadBytes.',
460
+ });
461
+ }
462
+ if (truncated) {
463
+ context.collection.status = 'partial';
464
+ }
465
+ return payloadSize() > maxPayloadBytes;
466
+ }
467
+ getPerformanceTuningContext(params, options) {
468
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
469
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
470
+ try {
471
+ this.assertSessionStateAvailable('collect a performance tuning context');
472
+ }
473
+ catch (_q) {
474
+ return {
475
+ ok: false,
476
+ message: 'An actual-plan capture is still restoring its session state. Retry shortly.',
477
+ };
478
+ }
479
+ const provider = this.getPerformanceTuningContextProvider();
480
+ if (!provider) {
481
+ return {
482
+ ok: false,
483
+ message: 'Performance tuning context is not supported for this database.',
484
+ };
485
+ }
486
+ const errors = (0, utils_1.validatePerformanceTuningContextParams)(params);
487
+ if (errors.length > 0) {
488
+ return { ok: false, message: errors.join(' ') };
489
+ }
490
+ if ((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {
491
+ return { ok: false, message: 'Performance tuning context collection was cancelled.' };
492
+ }
493
+ const normalized = (0, utils_1.normalizePerformanceTuningContextParams)(params);
494
+ try {
495
+ const planResult = yield this.withDeadline(() => provider.collectExecutionPlan(params, {
496
+ signal: options === null || options === void 0 ? void 0 : options.signal,
497
+ timeoutMs: normalized.plan.timeoutMs,
498
+ }), { signal: options === null || options === void 0 ? void 0 : options.signal, timeoutMs: normalized.plan.timeoutMs }, 'collectExecutionPlan');
499
+ if (!planResult.ok) {
500
+ return { ok: false, message: planResult.message || 'Failed to retrieve the execution plan.' };
501
+ }
502
+ const vendorPlan = planResult.result;
503
+ const rawPlanTableMappings = (_b = vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.planTableMappings) !== null && _b !== void 0 ? _b : [];
504
+ const tableAliasMap = (_c = normalized.tableAliasMap) !== null && _c !== void 0 ? _c : {};
505
+ const planTableMappings = rawPlanTableMappings.map((mapping) => {
506
+ const hit = tableAliasMap[mapping.tableName.toLowerCase()];
507
+ if (!hit || hit.tableName.toLowerCase() === mapping.tableName.toLowerCase()) {
508
+ return mapping;
509
+ }
510
+ return Object.assign(Object.assign({}, mapping), { schemaName: hit.schemaName, tableName: hit.tableName });
511
+ });
512
+ const tableKeyOf = (t) => { var _a; return `${(_a = t.schemaName) !== null && _a !== void 0 ? _a : ''}.${t.tableName}`; };
513
+ const resolvedTables = new Map();
514
+ for (const mapping of planTableMappings) {
515
+ const key = tableKeyOf(mapping);
516
+ if (!resolvedTables.has(key)) {
517
+ resolvedTables.set(key, { schemaName: mapping.schemaName, tableName: mapping.tableName });
518
+ }
519
+ }
520
+ const isSameTable = (a, b) => {
521
+ if (a.tableName.toLowerCase() !== b.tableName.toLowerCase()) {
522
+ return false;
523
+ }
524
+ return a.schemaName && b.schemaName ? a.schemaName.toLowerCase() === b.schemaName.toLowerCase() : true;
525
+ };
526
+ for (const target of (_d = normalized.targetTables) !== null && _d !== void 0 ? _d : []) {
527
+ const alreadyResolved = [...resolvedTables.values()].some((existing) => isSameTable(existing, target));
528
+ if (!alreadyResolved) {
529
+ const key = tableKeyOf(target);
530
+ resolvedTables.set(key, { schemaName: target.schemaName, tableName: target.tableName });
531
+ }
532
+ }
533
+ const unavailableSections = [];
534
+ const diagnostics = [...((_e = vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.diagnostics) !== null && _e !== void 0 ? _e : [])];
535
+ const allResolvedTables = [...resolvedTables.values()];
536
+ const tablesToCollect = allResolvedTables.slice(0, normalized.limits.maxTables);
537
+ if (allResolvedTables.length > tablesToCollect.length) {
538
+ diagnostics.push({
539
+ code: 'COLLECTION_TRUNCATED',
540
+ severity: 'warning',
541
+ affectsCompleteness: true,
542
+ scope: 'collection',
543
+ message: `Table collection truncated to ${normalized.limits.maxTables} of ${allResolvedTables.length} resolved tables.`,
544
+ });
545
+ }
546
+ const relevantColumnsByTable = new Map();
547
+ for (const mapping of planTableMappings) {
548
+ const key = tableKeyOf(mapping);
549
+ const set = (_f = relevantColumnsByTable.get(key)) !== null && _f !== void 0 ? _f : new Set();
550
+ for (const col of [
551
+ ...((_g = mapping.filterColumns) !== null && _g !== void 0 ? _g : []),
552
+ ...((_h = mapping.joinColumns) !== null && _h !== void 0 ? _h : []),
553
+ ...((_j = mapping.groupColumns) !== null && _j !== void 0 ? _j : []),
554
+ ...((_k = mapping.sortColumns) !== null && _k !== void 0 ? _k : []),
555
+ ]) {
556
+ set.add(col);
557
+ }
558
+ relevantColumnsByTable.set(key, set);
559
+ }
560
+ const collectionOptions = {
561
+ signal: options === null || options === void 0 ? void 0 : options.signal,
562
+ limits: normalized.limits,
563
+ timeoutMs: normalized.plan.timeoutMs,
564
+ };
565
+ const deadline = { signal: options === null || options === void 0 ? void 0 : options.signal, timeoutMs: normalized.plan.timeoutMs };
566
+ const tables = yield Promise.all(tablesToCollect.map((_a) => tslib_1.__awaiter(this, [_a], void 0, function* ({ schemaName, tableName }) {
567
+ var _b, _c;
568
+ const tableTarget = { databaseName: normalized.databaseName, schemaName, tableName };
569
+ const columnNames = [...((_b = relevantColumnsByTable.get(tableKeyOf(tableTarget))) !== null && _b !== void 0 ? _b : [])];
570
+ const pushTableDiagnostic = (code, section, message) => {
571
+ diagnostics.push({
572
+ code,
573
+ severity: 'warning',
574
+ affectsCompleteness: true,
575
+ scope: section,
576
+ message,
577
+ schemaName,
578
+ tableName,
579
+ section,
580
+ });
581
+ };
582
+ const [definitionResult, statisticsResult, columnStatsResult, physicalHealthResult] = yield Promise.all([
583
+ this.withDeadline(() => provider.collectTableDefinition(tableTarget, collectionOptions), deadline, 'collectTableDefinition'),
584
+ this.withDeadline(() => provider.collectTableStatistics(tableTarget, collectionOptions), deadline, 'collectTableStatistics'),
585
+ this.withDeadline(() => provider.collectColumnStatistics(Object.assign(Object.assign({}, tableTarget), { columnNames }), collectionOptions), deadline, 'collectColumnStatistics'),
586
+ this.withDeadline(() => provider.collectPhysicalHealth(tableTarget, collectionOptions), deadline, 'collectPhysicalHealth'),
587
+ ]);
588
+ const unavailable = (section, reason) => {
589
+ unavailableSections.push({ section, schemaName, tableName, reason });
590
+ };
591
+ let definition;
592
+ if (definitionResult.ok && definitionResult.result) {
593
+ definition = definitionResult.result;
594
+ if (definitionResult.message) {
595
+ pushTableDiagnostic('SECTION_COLLECTION_FAILED', 'tableDefinition', definitionResult.message);
596
+ }
597
+ const { columns, indexes } = definition;
598
+ if (columns.length > normalized.limits.maxColumnsPerTable) {
599
+ definition.columns = columns.slice(0, normalized.limits.maxColumnsPerTable);
600
+ pushTableDiagnostic('COLLECTION_TRUNCATED', 'tableDefinition', `Columns truncated to ${normalized.limits.maxColumnsPerTable} of ${columns.length}.`);
601
+ }
602
+ if (indexes.length > normalized.limits.maxIndexesPerTable) {
603
+ definition.indexes = indexes.slice(0, normalized.limits.maxIndexesPerTable);
604
+ pushTableDiagnostic('COLLECTION_TRUNCATED', 'tableDefinition', `Indexes truncated to ${normalized.limits.maxIndexesPerTable} of ${indexes.length}.`);
605
+ }
606
+ }
607
+ else {
608
+ unavailable('tableDefinition', definitionResult.message || 'Table definition unavailable.');
609
+ }
610
+ let statistics;
611
+ if (statisticsResult.ok && statisticsResult.result) {
612
+ statistics = Object.assign(Object.assign({}, statisticsResult.result), { columns: [] });
613
+ if (statisticsResult.message) {
614
+ pushTableDiagnostic('SECTION_COLLECTION_FAILED', 'tableStatistics', statisticsResult.message);
615
+ }
616
+ }
617
+ else {
618
+ unavailable('tableStatistics', statisticsResult.message || 'Table statistics unavailable.');
619
+ }
620
+ if (columnStatsResult.ok) {
621
+ statistics !== null && statistics !== void 0 ? statistics : (statistics = { columns: [] });
622
+ statistics.columns = (_c = columnStatsResult.result) !== null && _c !== void 0 ? _c : [];
623
+ if (columnStatsResult.message) {
624
+ pushTableDiagnostic('SECTION_COLLECTION_FAILED', 'columnStatistics', columnStatsResult.message);
625
+ }
626
+ }
627
+ else {
628
+ unavailable('columnStatistics', columnStatsResult.message || 'Column statistics unavailable.');
629
+ }
630
+ let physicalHealth;
631
+ if (physicalHealthResult.ok && physicalHealthResult.result) {
632
+ physicalHealth = { provider: this.conRes.dbType, metrics: physicalHealthResult.result.metrics };
633
+ if (physicalHealthResult.message) {
634
+ pushTableDiagnostic('SECTION_COLLECTION_FAILED', 'physicalHealth', physicalHealthResult.message);
635
+ }
636
+ }
637
+ else {
638
+ unavailable('physicalHealth', physicalHealthResult.message || 'Physical health unavailable.');
639
+ }
640
+ return { schemaName, tableName, definition, statistics, physicalHealth };
641
+ })));
642
+ const tableStatsByKey = new Map();
643
+ for (const t of tables) {
644
+ tableStatsByKey.set(tableKeyOf(t), (_l = t.statistics) === null || _l === void 0 ? void 0 : _l.estimatedRowCount);
645
+ }
646
+ const planTableMappingsWithSelectivity = planTableMappings.map((mapping) => (Object.assign(Object.assign({}, mapping), { tableAccessFraction: (0, providers_1.computeTableAccessFraction)(mapping.tableAccessRows, tableStatsByKey.get(tableKeyOf(mapping))), predicateFilterSelectivity: (0, providers_1.computePredicateFilterSelectivity)(mapping.predicateFilterInputRows, mapping.predicateFilterOutputRows) })));
647
+ for (const mapping of planTableMappingsWithSelectivity) {
648
+ const ratio = mapping.rowEstimateRatio;
649
+ if (mapping.estimatedRows === undefined ||
650
+ mapping.actualRows === undefined ||
651
+ ratio === undefined ||
652
+ (ratio < 10 && ratio > 0.1)) {
653
+ continue;
654
+ }
655
+ const candidatePredicateColumns = [
656
+ ...((_m = mapping.filterColumns) !== null && _m !== void 0 ? _m : []),
657
+ ...((_o = mapping.joinColumns) !== null && _o !== void 0 ? _o : []),
658
+ ];
659
+ diagnostics.push({
660
+ code: 'CARDINALITY_MISESTIMATE',
661
+ severity: 'info',
662
+ affectsCompleteness: false,
663
+ scope: 'executionPlan',
664
+ message: `Actual rows (${mapping.actualRows}) differ materially from estimated rows (${mapping.estimatedRows}) for ${mapping.tableName}.`,
665
+ schemaName: mapping.schemaName,
666
+ tableName: mapping.tableName,
667
+ cardinality: {
668
+ estimatedRows: mapping.estimatedRows,
669
+ actualRows: mapping.actualRows,
670
+ actualToEstimatedRatio: ratio,
671
+ candidatePredicateColumns: [...new Set(candidatePredicateColumns)],
672
+ },
673
+ });
674
+ }
675
+ let version;
676
+ try {
677
+ version = yield this.getVersion();
678
+ }
679
+ catch (_r) {
680
+ diagnostics.push({
681
+ code: 'DATABASE_VERSION_UNAVAILABLE',
682
+ severity: 'warning',
683
+ affectsCompleteness: true,
684
+ scope: 'collection',
685
+ message: 'Failed to retrieve the database version.',
686
+ });
687
+ }
688
+ const context = {
689
+ formatVersion: 1,
690
+ database: {
691
+ vendor: this.conRes.dbType,
692
+ version,
693
+ databaseName: normalized.databaseName,
694
+ schemaName: normalized.schemaName,
695
+ environment: this.conRes.environment,
696
+ },
697
+ statement: Object.assign(Object.assign({ sql: normalized.statement.sql, source: normalized.statement.source }, (0, utils_1.classifyPerformanceTuningStatement)(normalized.statement.sql)), { bindMetadata: normalized.plan.bindMetadata }),
698
+ workload: normalized.statement.statistics,
699
+ executionPlan: {
700
+ mode: normalized.plan.mode,
701
+ format: 'json',
702
+ vendorPlan: vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.raw,
703
+ normalizedPlan: vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.normalizedPlan,
704
+ planningTimeMs: vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.planningTimeMs,
705
+ executionTimeMs: vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.executionTimeMs,
706
+ actualPlan: vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.actualPlan,
707
+ runtimeObservations: vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.runtimeObservations,
708
+ dominantCostPlanNode: (_p = vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.dominantCostPlanNode) !== null && _p !== void 0 ? _p : (0, providers_1.findDominantCostPlanNode)(vendorPlan === null || vendorPlan === void 0 ? void 0 : vendorPlan.normalizedPlan),
709
+ },
710
+ tables,
711
+ planTableMappings: planTableMappingsWithSelectivity,
712
+ collection: {
713
+ collectedAt: new Date().toISOString(),
714
+ status: unavailableSections.length > 0 || diagnostics.some((d) => d.affectsCompleteness)
715
+ ? 'partial'
716
+ : 'complete',
717
+ diagnostics,
718
+ unavailableSections,
719
+ },
720
+ };
721
+ const stillOverBudget = this.enforcePayloadBudget(context, normalized.limits.maxPayloadBytes);
722
+ if (stillOverBudget) {
723
+ return {
724
+ ok: false,
725
+ message: `Result exceeds maxPayloadBytes (${normalized.limits.maxPayloadBytes} bytes) even after dropping every table and the execution plan.`,
726
+ };
727
+ }
728
+ return { ok: true, message: '', result: context };
729
+ }
730
+ catch (e) {
731
+ return this.toPerformanceTuningContextErrorResult(e, 'getPerformanceTuningContext');
732
+ }
733
+ });
734
+ }
138
735
  explainAnalyzeSql(params) {
139
736
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
737
+ this.assertSessionStateAvailable('run explain analyze');
140
738
  const { sql, prepare } = params;
739
+ if (!(0, utils_1.isSingleSelectStatement)(sql)) {
740
+ throw new Error('Explain analyze is limited to a single SELECT statement');
741
+ }
141
742
  const ast = (0, helpers_1.parseQuery)(sql);
142
743
  const dbTable = this.getDbTable(ast);
143
744
  if (prepare && prepare.useDatabaseName) {