@dotdo/postgres 0.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 (1129) hide show
  1. package/README.md +868 -0
  2. package/dist/cdc/change-stream.d.ts +44 -0
  3. package/dist/cdc/change-stream.d.ts.map +1 -0
  4. package/dist/cdc/change-stream.js +95 -0
  5. package/dist/cdc/change-stream.js.map +1 -0
  6. package/dist/cdc/filter.d.ts +58 -0
  7. package/dist/cdc/filter.d.ts.map +1 -0
  8. package/dist/cdc/filter.js +520 -0
  9. package/dist/cdc/filter.js.map +1 -0
  10. package/dist/cdc/index.d.ts +47 -0
  11. package/dist/cdc/index.d.ts.map +1 -0
  12. package/dist/cdc/index.js +50 -0
  13. package/dist/cdc/index.js.map +1 -0
  14. package/dist/cdc/resume-token.d.ts +60 -0
  15. package/dist/cdc/resume-token.d.ts.map +1 -0
  16. package/dist/cdc/resume-token.js +228 -0
  17. package/dist/cdc/resume-token.js.map +1 -0
  18. package/dist/cdc/transport/index.d.ts +7 -0
  19. package/dist/cdc/transport/index.d.ts.map +1 -0
  20. package/dist/cdc/transport/index.js +7 -0
  21. package/dist/cdc/transport/index.js.map +1 -0
  22. package/dist/cdc/transport/sse.d.ts +120 -0
  23. package/dist/cdc/transport/sse.d.ts.map +1 -0
  24. package/dist/cdc/transport/sse.js +590 -0
  25. package/dist/cdc/transport/sse.js.map +1 -0
  26. package/dist/cdc/transport/websocket.d.ts +130 -0
  27. package/dist/cdc/transport/websocket.d.ts.map +1 -0
  28. package/dist/cdc/transport/websocket.js +688 -0
  29. package/dist/cdc/transport/websocket.js.map +1 -0
  30. package/dist/cdc/types.d.ts +306 -0
  31. package/dist/cdc/types.d.ts.map +1 -0
  32. package/dist/cdc/types.js +8 -0
  33. package/dist/cdc/types.js.map +1 -0
  34. package/dist/config/index.d.ts +25 -0
  35. package/dist/config/index.d.ts.map +1 -0
  36. package/dist/config/index.js +25 -0
  37. package/dist/config/index.js.map +1 -0
  38. package/dist/config/memory.d.ts +139 -0
  39. package/dist/config/memory.d.ts.map +1 -0
  40. package/dist/config/memory.js +157 -0
  41. package/dist/config/memory.js.map +1 -0
  42. package/dist/config/storage.d.ts +157 -0
  43. package/dist/config/storage.d.ts.map +1 -0
  44. package/dist/config/storage.js +178 -0
  45. package/dist/config/storage.js.map +1 -0
  46. package/dist/config/streaming.d.ts +117 -0
  47. package/dist/config/streaming.d.ts.map +1 -0
  48. package/dist/config/streaming.js +132 -0
  49. package/dist/config/streaming.js.map +1 -0
  50. package/dist/config/timeouts.d.ts +168 -0
  51. package/dist/config/timeouts.d.ts.map +1 -0
  52. package/dist/config/timeouts.js +192 -0
  53. package/dist/config/timeouts.js.map +1 -0
  54. package/dist/extensions/config.d.ts +89 -0
  55. package/dist/extensions/config.d.ts.map +1 -0
  56. package/dist/extensions/config.js +216 -0
  57. package/dist/extensions/config.js.map +1 -0
  58. package/dist/extensions/geo.d.ts +452 -0
  59. package/dist/extensions/geo.d.ts.map +1 -0
  60. package/dist/extensions/geo.js +583 -0
  61. package/dist/extensions/geo.js.map +1 -0
  62. package/dist/extensions/index.d.ts +167 -0
  63. package/dist/extensions/index.d.ts.map +1 -0
  64. package/dist/extensions/index.js +99 -0
  65. package/dist/extensions/index.js.map +1 -0
  66. package/dist/extensions/loader.d.ts +226 -0
  67. package/dist/extensions/loader.d.ts.map +1 -0
  68. package/dist/extensions/loader.js +456 -0
  69. package/dist/extensions/loader.js.map +1 -0
  70. package/dist/extensions/pgmq-lite.d.ts +330 -0
  71. package/dist/extensions/pgmq-lite.d.ts.map +1 -0
  72. package/dist/extensions/pgmq-lite.js +648 -0
  73. package/dist/extensions/pgmq-lite.js.map +1 -0
  74. package/dist/extensions/plugins.d.ts +260 -0
  75. package/dist/extensions/plugins.d.ts.map +1 -0
  76. package/dist/extensions/plugins.js +535 -0
  77. package/dist/extensions/plugins.js.map +1 -0
  78. package/dist/extensions/registry.d.ts +93 -0
  79. package/dist/extensions/registry.d.ts.map +1 -0
  80. package/dist/extensions/registry.js +182 -0
  81. package/dist/extensions/registry.js.map +1 -0
  82. package/dist/extensions/vector.d.ts +106 -0
  83. package/dist/extensions/vector.d.ts.map +1 -0
  84. package/dist/extensions/vector.js +129 -0
  85. package/dist/extensions/vector.js.map +1 -0
  86. package/dist/iceberg/analytics.d.ts +279 -0
  87. package/dist/iceberg/analytics.d.ts.map +1 -0
  88. package/dist/iceberg/analytics.js +448 -0
  89. package/dist/iceberg/analytics.js.map +1 -0
  90. package/dist/iceberg/catalog-api.d.ts +39 -0
  91. package/dist/iceberg/catalog-api.d.ts.map +1 -0
  92. package/dist/iceberg/catalog-api.js +388 -0
  93. package/dist/iceberg/catalog-api.js.map +1 -0
  94. package/dist/iceberg/catalog.d.ts +401 -0
  95. package/dist/iceberg/catalog.d.ts.map +1 -0
  96. package/dist/iceberg/catalog.js +677 -0
  97. package/dist/iceberg/catalog.js.map +1 -0
  98. package/dist/iceberg/duckdb-wasm.d.ts +447 -0
  99. package/dist/iceberg/duckdb-wasm.d.ts.map +1 -0
  100. package/dist/iceberg/duckdb-wasm.js +600 -0
  101. package/dist/iceberg/duckdb-wasm.js.map +1 -0
  102. package/dist/iceberg/index.d.ts +92 -0
  103. package/dist/iceberg/index.d.ts.map +1 -0
  104. package/dist/iceberg/index.js +119 -0
  105. package/dist/iceberg/index.js.map +1 -0
  106. package/dist/iceberg/metadata.d.ts +214 -0
  107. package/dist/iceberg/metadata.d.ts.map +1 -0
  108. package/dist/iceberg/metadata.js +535 -0
  109. package/dist/iceberg/metadata.js.map +1 -0
  110. package/dist/iceberg/optimizer.d.ts +296 -0
  111. package/dist/iceberg/optimizer.d.ts.map +1 -0
  112. package/dist/iceberg/optimizer.js +889 -0
  113. package/dist/iceberg/optimizer.js.map +1 -0
  114. package/dist/iceberg/parquet.d.ts +447 -0
  115. package/dist/iceberg/parquet.d.ts.map +1 -0
  116. package/dist/iceberg/parquet.js +1225 -0
  117. package/dist/iceberg/parquet.js.map +1 -0
  118. package/dist/iceberg/r2-organization.d.ts +422 -0
  119. package/dist/iceberg/r2-organization.d.ts.map +1 -0
  120. package/dist/iceberg/r2-organization.js +672 -0
  121. package/dist/iceberg/r2-organization.js.map +1 -0
  122. package/dist/iceberg/scheduler-do-example.d.ts +158 -0
  123. package/dist/iceberg/scheduler-do-example.d.ts.map +1 -0
  124. package/dist/iceberg/scheduler-do-example.js +261 -0
  125. package/dist/iceberg/scheduler-do-example.js.map +1 -0
  126. package/dist/iceberg/scheduler.d.ts +434 -0
  127. package/dist/iceberg/scheduler.d.ts.map +1 -0
  128. package/dist/iceberg/scheduler.js +818 -0
  129. package/dist/iceberg/scheduler.js.map +1 -0
  130. package/dist/iceberg/schema.d.ts +149 -0
  131. package/dist/iceberg/schema.d.ts.map +1 -0
  132. package/dist/iceberg/schema.js +525 -0
  133. package/dist/iceberg/schema.js.map +1 -0
  134. package/dist/iceberg/snapshot-manager.d.ts +406 -0
  135. package/dist/iceberg/snapshot-manager.d.ts.map +1 -0
  136. package/dist/iceberg/snapshot-manager.js +934 -0
  137. package/dist/iceberg/snapshot-manager.js.map +1 -0
  138. package/dist/iceberg/sql-router.d.ts +194 -0
  139. package/dist/iceberg/sql-router.d.ts.map +1 -0
  140. package/dist/iceberg/sql-router.js +180 -0
  141. package/dist/iceberg/sql-router.js.map +1 -0
  142. package/dist/iceberg/test-fixtures.d.ts +151 -0
  143. package/dist/iceberg/test-fixtures.d.ts.map +1 -0
  144. package/dist/iceberg/test-fixtures.js +446 -0
  145. package/dist/iceberg/test-fixtures.js.map +1 -0
  146. package/dist/iceberg/time-travel-api.d.ts +102 -0
  147. package/dist/iceberg/time-travel-api.d.ts.map +1 -0
  148. package/dist/iceberg/time-travel-api.js +437 -0
  149. package/dist/iceberg/time-travel-api.js.map +1 -0
  150. package/dist/iceberg/time-travel.d.ts +293 -0
  151. package/dist/iceberg/time-travel.d.ts.map +1 -0
  152. package/dist/iceberg/time-travel.js +689 -0
  153. package/dist/iceberg/time-travel.js.map +1 -0
  154. package/dist/iceberg/transformer.d.ts +356 -0
  155. package/dist/iceberg/transformer.d.ts.map +1 -0
  156. package/dist/iceberg/transformer.js +770 -0
  157. package/dist/iceberg/transformer.js.map +1 -0
  158. package/dist/iceberg/types.d.ts +318 -0
  159. package/dist/iceberg/types.d.ts.map +1 -0
  160. package/dist/iceberg/types.js +9 -0
  161. package/dist/iceberg/types.js.map +1 -0
  162. package/dist/iceberg/writer.d.ts +144 -0
  163. package/dist/iceberg/writer.d.ts.map +1 -0
  164. package/dist/iceberg/writer.js +452 -0
  165. package/dist/iceberg/writer.js.map +1 -0
  166. package/dist/index.d.ts +50 -0
  167. package/dist/index.d.ts.map +1 -0
  168. package/dist/index.js +69 -0
  169. package/dist/index.js.map +1 -0
  170. package/dist/lineage/index.d.ts +11 -0
  171. package/dist/lineage/index.d.ts.map +1 -0
  172. package/dist/lineage/index.js +11 -0
  173. package/dist/lineage/index.js.map +1 -0
  174. package/dist/lineage/integration.d.ts +134 -0
  175. package/dist/lineage/integration.d.ts.map +1 -0
  176. package/dist/lineage/integration.js +258 -0
  177. package/dist/lineage/integration.js.map +1 -0
  178. package/dist/lineage/tracker.d.ts +189 -0
  179. package/dist/lineage/tracker.d.ts.map +1 -0
  180. package/dist/lineage/tracker.js +1352 -0
  181. package/dist/lineage/tracker.js.map +1 -0
  182. package/dist/lineage/types.d.ts +318 -0
  183. package/dist/lineage/types.d.ts.map +1 -0
  184. package/dist/lineage/types.js +9 -0
  185. package/dist/lineage/types.js.map +1 -0
  186. package/dist/middleware/index.d.ts +11 -0
  187. package/dist/middleware/index.d.ts.map +1 -0
  188. package/dist/middleware/index.js +16 -0
  189. package/dist/middleware/index.js.map +1 -0
  190. package/dist/middleware/rate-limit.d.ts +397 -0
  191. package/dist/middleware/rate-limit.d.ts.map +1 -0
  192. package/dist/middleware/rate-limit.js +507 -0
  193. package/dist/middleware/rate-limit.js.map +1 -0
  194. package/dist/migration-tooling/external-migration.d.ts +601 -0
  195. package/dist/migration-tooling/external-migration.d.ts.map +1 -0
  196. package/dist/migration-tooling/external-migration.js +1612 -0
  197. package/dist/migration-tooling/external-migration.js.map +1 -0
  198. package/dist/migration-tooling/index.d.ts +19 -0
  199. package/dist/migration-tooling/index.d.ts.map +1 -0
  200. package/dist/migration-tooling/index.js +19 -0
  201. package/dist/migration-tooling/index.js.map +1 -0
  202. package/dist/migrations/auto-migrator.d.ts +289 -0
  203. package/dist/migrations/auto-migrator.d.ts.map +1 -0
  204. package/dist/migrations/auto-migrator.js +396 -0
  205. package/dist/migrations/auto-migrator.js.map +1 -0
  206. package/dist/migrations/bulk-orchestrator.d.ts +403 -0
  207. package/dist/migrations/bulk-orchestrator.d.ts.map +1 -0
  208. package/dist/migrations/bulk-orchestrator.js +646 -0
  209. package/dist/migrations/bulk-orchestrator.js.map +1 -0
  210. package/dist/migrations/compatibility.d.ts +216 -0
  211. package/dist/migrations/compatibility.d.ts.map +1 -0
  212. package/dist/migrations/compatibility.js +651 -0
  213. package/dist/migrations/compatibility.js.map +1 -0
  214. package/dist/migrations/do-migrations.d.ts +101 -0
  215. package/dist/migrations/do-migrations.d.ts.map +1 -0
  216. package/dist/migrations/do-migrations.js +1060 -0
  217. package/dist/migrations/do-migrations.js.map +1 -0
  218. package/dist/migrations/do-migrations.types.d.ts +550 -0
  219. package/dist/migrations/do-migrations.types.d.ts.map +1 -0
  220. package/dist/migrations/do-migrations.types.js +15 -0
  221. package/dist/migrations/do-migrations.types.js.map +1 -0
  222. package/dist/migrations/drizzle-compat.d.ts +163 -0
  223. package/dist/migrations/drizzle-compat.d.ts.map +1 -0
  224. package/dist/migrations/drizzle-compat.js +273 -0
  225. package/dist/migrations/drizzle-compat.js.map +1 -0
  226. package/dist/migrations/index.d.ts +109 -0
  227. package/dist/migrations/index.d.ts.map +1 -0
  228. package/dist/migrations/index.js +127 -0
  229. package/dist/migrations/index.js.map +1 -0
  230. package/dist/migrations/migration-api.d.ts +161 -0
  231. package/dist/migrations/migration-api.d.ts.map +1 -0
  232. package/dist/migrations/migration-api.js +499 -0
  233. package/dist/migrations/migration-api.js.map +1 -0
  234. package/dist/migrations/progress-tracker-do.d.ts +195 -0
  235. package/dist/migrations/progress-tracker-do.d.ts.map +1 -0
  236. package/dist/migrations/progress-tracker-do.js +339 -0
  237. package/dist/migrations/progress-tracker-do.js.map +1 -0
  238. package/dist/migrations/progress-tracker-kv.d.ts +103 -0
  239. package/dist/migrations/progress-tracker-kv.d.ts.map +1 -0
  240. package/dist/migrations/progress-tracker-kv.js +231 -0
  241. package/dist/migrations/progress-tracker-kv.js.map +1 -0
  242. package/dist/migrations/progress-tracker.d.ts +320 -0
  243. package/dist/migrations/progress-tracker.d.ts.map +1 -0
  244. package/dist/migrations/progress-tracker.js +443 -0
  245. package/dist/migrations/progress-tracker.js.map +1 -0
  246. package/dist/migrations/registry.d.ts +231 -0
  247. package/dist/migrations/registry.d.ts.map +1 -0
  248. package/dist/migrations/registry.js +376 -0
  249. package/dist/migrations/registry.js.map +1 -0
  250. package/dist/migrations/runner.d.ts +197 -0
  251. package/dist/migrations/runner.d.ts.map +1 -0
  252. package/dist/migrations/runner.js +1167 -0
  253. package/dist/migrations/runner.js.map +1 -0
  254. package/dist/migrations/schema-generator.d.ts +111 -0
  255. package/dist/migrations/schema-generator.d.ts.map +1 -0
  256. package/dist/migrations/schema-generator.js +335 -0
  257. package/dist/migrations/schema-generator.js.map +1 -0
  258. package/dist/migrations/testing.d.ts +321 -0
  259. package/dist/migrations/testing.d.ts.map +1 -0
  260. package/dist/migrations/testing.js +645 -0
  261. package/dist/migrations/testing.js.map +1 -0
  262. package/dist/migrations/types.d.ts +503 -0
  263. package/dist/migrations/types.d.ts.map +1 -0
  264. package/dist/migrations/types.js +11 -0
  265. package/dist/migrations/types.js.map +1 -0
  266. package/dist/migrations/validator.d.ts +215 -0
  267. package/dist/migrations/validator.d.ts.map +1 -0
  268. package/dist/migrations/validator.js +494 -0
  269. package/dist/migrations/validator.js.map +1 -0
  270. package/dist/observability/alerting.d.ts +116 -0
  271. package/dist/observability/alerting.d.ts.map +1 -0
  272. package/dist/observability/alerting.js +353 -0
  273. package/dist/observability/alerting.js.map +1 -0
  274. package/dist/observability/analytics-engine.d.ts +357 -0
  275. package/dist/observability/analytics-engine.d.ts.map +1 -0
  276. package/dist/observability/analytics-engine.js +430 -0
  277. package/dist/observability/analytics-engine.js.map +1 -0
  278. package/dist/observability/cost-metrics.d.ts +269 -0
  279. package/dist/observability/cost-metrics.d.ts.map +1 -0
  280. package/dist/observability/cost-metrics.js +560 -0
  281. package/dist/observability/cost-metrics.js.map +1 -0
  282. package/dist/observability/cross-do-tracing.d.ts +305 -0
  283. package/dist/observability/cross-do-tracing.d.ts.map +1 -0
  284. package/dist/observability/cross-do-tracing.js +431 -0
  285. package/dist/observability/cross-do-tracing.js.map +1 -0
  286. package/dist/observability/error-rate-collector.d.ts +163 -0
  287. package/dist/observability/error-rate-collector.d.ts.map +1 -0
  288. package/dist/observability/error-rate-collector.js +306 -0
  289. package/dist/observability/error-rate-collector.js.map +1 -0
  290. package/dist/observability/exporters.d.ts +231 -0
  291. package/dist/observability/exporters.d.ts.map +1 -0
  292. package/dist/observability/exporters.js +479 -0
  293. package/dist/observability/exporters.js.map +1 -0
  294. package/dist/observability/health-check.d.ts +106 -0
  295. package/dist/observability/health-check.d.ts.map +1 -0
  296. package/dist/observability/health-check.js +243 -0
  297. package/dist/observability/health-check.js.map +1 -0
  298. package/dist/observability/index.d.ts +297 -0
  299. package/dist/observability/index.d.ts.map +1 -0
  300. package/dist/observability/index.js +455 -0
  301. package/dist/observability/index.js.map +1 -0
  302. package/dist/observability/instrumentation.d.ts +222 -0
  303. package/dist/observability/instrumentation.d.ts.map +1 -0
  304. package/dist/observability/instrumentation.js +532 -0
  305. package/dist/observability/instrumentation.js.map +1 -0
  306. package/dist/observability/memory-metrics.d.ts +227 -0
  307. package/dist/observability/memory-metrics.d.ts.map +1 -0
  308. package/dist/observability/memory-metrics.js +688 -0
  309. package/dist/observability/memory-metrics.js.map +1 -0
  310. package/dist/observability/metrics-endpoint.d.ts +91 -0
  311. package/dist/observability/metrics-endpoint.d.ts.map +1 -0
  312. package/dist/observability/metrics-endpoint.js +246 -0
  313. package/dist/observability/metrics-endpoint.js.map +1 -0
  314. package/dist/observability/metrics.d.ts +88 -0
  315. package/dist/observability/metrics.d.ts.map +1 -0
  316. package/dist/observability/metrics.js +253 -0
  317. package/dist/observability/metrics.js.map +1 -0
  318. package/dist/observability/observability-features.d.ts +488 -0
  319. package/dist/observability/observability-features.d.ts.map +1 -0
  320. package/dist/observability/observability-features.js +773 -0
  321. package/dist/observability/observability-features.js.map +1 -0
  322. package/dist/observability/prometheus.d.ts +39 -0
  323. package/dist/observability/prometheus.d.ts.map +1 -0
  324. package/dist/observability/prometheus.js +120 -0
  325. package/dist/observability/prometheus.js.map +1 -0
  326. package/dist/observability/propagation.d.ts +126 -0
  327. package/dist/observability/propagation.d.ts.map +1 -0
  328. package/dist/observability/propagation.js +234 -0
  329. package/dist/observability/propagation.js.map +1 -0
  330. package/dist/observability/query-latency.d.ts +243 -0
  331. package/dist/observability/query-latency.d.ts.map +1 -0
  332. package/dist/observability/query-latency.js +292 -0
  333. package/dist/observability/query-latency.js.map +1 -0
  334. package/dist/observability/query-performance.d.ts +169 -0
  335. package/dist/observability/query-performance.d.ts.map +1 -0
  336. package/dist/observability/query-performance.js +290 -0
  337. package/dist/observability/query-performance.js.map +1 -0
  338. package/dist/observability/storage-tier-metrics.d.ts +174 -0
  339. package/dist/observability/storage-tier-metrics.d.ts.map +1 -0
  340. package/dist/observability/storage-tier-metrics.js +306 -0
  341. package/dist/observability/storage-tier-metrics.js.map +1 -0
  342. package/dist/observability/tier-cost-optimizer.d.ts +155 -0
  343. package/dist/observability/tier-cost-optimizer.d.ts.map +1 -0
  344. package/dist/observability/tier-cost-optimizer.js +536 -0
  345. package/dist/observability/tier-cost-optimizer.js.map +1 -0
  346. package/dist/observability/tracer.d.ts +149 -0
  347. package/dist/observability/tracer.d.ts.map +1 -0
  348. package/dist/observability/tracer.js +435 -0
  349. package/dist/observability/tracer.js.map +1 -0
  350. package/dist/observability/types.d.ts +402 -0
  351. package/dist/observability/types.d.ts.map +1 -0
  352. package/dist/observability/types.js +103 -0
  353. package/dist/observability/types.js.map +1 -0
  354. package/dist/pglite/workers-pglite.d.ts +138 -0
  355. package/dist/pglite/workers-pglite.d.ts.map +1 -0
  356. package/dist/pglite/workers-pglite.js +143 -0
  357. package/dist/pglite/workers-pglite.js.map +1 -0
  358. package/dist/pglite-assets/pglite.data +0 -0
  359. package/dist/pglite-assets/pglite.wasm +0 -0
  360. package/dist/playground/index.d.ts +52 -0
  361. package/dist/playground/index.d.ts.map +1 -0
  362. package/dist/playground/index.js +55 -0
  363. package/dist/playground/index.js.map +1 -0
  364. package/dist/playground/keyboard-shortcuts.d.ts +116 -0
  365. package/dist/playground/keyboard-shortcuts.d.ts.map +1 -0
  366. package/dist/playground/keyboard-shortcuts.js +588 -0
  367. package/dist/playground/keyboard-shortcuts.js.map +1 -0
  368. package/dist/playground/playground.d.ts +82 -0
  369. package/dist/playground/playground.d.ts.map +1 -0
  370. package/dist/playground/playground.js +271 -0
  371. package/dist/playground/playground.js.map +1 -0
  372. package/dist/playground/query-executor.d.ts +115 -0
  373. package/dist/playground/query-executor.d.ts.map +1 -0
  374. package/dist/playground/query-executor.js +558 -0
  375. package/dist/playground/query-executor.js.map +1 -0
  376. package/dist/playground/query-history.d.ts +92 -0
  377. package/dist/playground/query-history.d.ts.map +1 -0
  378. package/dist/playground/query-history.js +259 -0
  379. package/dist/playground/query-history.js.map +1 -0
  380. package/dist/playground/result-formatter.d.ts +59 -0
  381. package/dist/playground/result-formatter.d.ts.map +1 -0
  382. package/dist/playground/result-formatter.js +341 -0
  383. package/dist/playground/result-formatter.js.map +1 -0
  384. package/dist/playground/sample-datasets.d.ts +77 -0
  385. package/dist/playground/sample-datasets.d.ts.map +1 -0
  386. package/dist/playground/sample-datasets.js +641 -0
  387. package/dist/playground/sample-datasets.js.map +1 -0
  388. package/dist/playground/sample-queries.d.ts +73 -0
  389. package/dist/playground/sample-queries.d.ts.map +1 -0
  390. package/dist/playground/sample-queries.js +1095 -0
  391. package/dist/playground/sample-queries.js.map +1 -0
  392. package/dist/playground/schema-explorer.d.ts +55 -0
  393. package/dist/playground/schema-explorer.d.ts.map +1 -0
  394. package/dist/playground/schema-explorer.js +473 -0
  395. package/dist/playground/schema-explorer.js.map +1 -0
  396. package/dist/playground/types.d.ts +430 -0
  397. package/dist/playground/types.d.ts.map +1 -0
  398. package/dist/playground/types.js +10 -0
  399. package/dist/playground/types.js.map +1 -0
  400. package/dist/readonly/cache-reader.d.ts +145 -0
  401. package/dist/readonly/cache-reader.d.ts.map +1 -0
  402. package/dist/readonly/cache-reader.js +198 -0
  403. package/dist/readonly/cache-reader.js.map +1 -0
  404. package/dist/readonly/config.d.ts +74 -0
  405. package/dist/readonly/config.d.ts.map +1 -0
  406. package/dist/readonly/config.js +67 -0
  407. package/dist/readonly/config.js.map +1 -0
  408. package/dist/readonly/index.d.ts +22 -0
  409. package/dist/readonly/index.d.ts.map +1 -0
  410. package/dist/readonly/index.js +17 -0
  411. package/dist/readonly/index.js.map +1 -0
  412. package/dist/readonly/pglite-wrapper.d.ts +82 -0
  413. package/dist/readonly/pglite-wrapper.d.ts.map +1 -0
  414. package/dist/readonly/pglite-wrapper.js +123 -0
  415. package/dist/readonly/pglite-wrapper.js.map +1 -0
  416. package/dist/readonly/worker.d.ts +142 -0
  417. package/dist/readonly/worker.d.ts.map +1 -0
  418. package/dist/readonly/worker.js +187 -0
  419. package/dist/readonly/worker.js.map +1 -0
  420. package/dist/readonly/write-blocker.d.ts +47 -0
  421. package/dist/readonly/write-blocker.d.ts.map +1 -0
  422. package/dist/readonly/write-blocker.js +136 -0
  423. package/dist/readonly/write-blocker.js.map +1 -0
  424. package/dist/recovery/disaster-recovery.d.ts +326 -0
  425. package/dist/recovery/disaster-recovery.d.ts.map +1 -0
  426. package/dist/recovery/disaster-recovery.js +799 -0
  427. package/dist/recovery/disaster-recovery.js.map +1 -0
  428. package/dist/recovery/index.d.ts +12 -0
  429. package/dist/recovery/index.d.ts.map +1 -0
  430. package/dist/recovery/index.js +12 -0
  431. package/dist/recovery/index.js.map +1 -0
  432. package/dist/recovery/parquet-parser.d.ts +321 -0
  433. package/dist/recovery/parquet-parser.d.ts.map +1 -0
  434. package/dist/recovery/parquet-parser.js +797 -0
  435. package/dist/recovery/parquet-parser.js.map +1 -0
  436. package/dist/retention/index.d.ts +50 -0
  437. package/dist/retention/index.d.ts.map +1 -0
  438. package/dist/retention/index.js +50 -0
  439. package/dist/retention/index.js.map +1 -0
  440. package/dist/retention/policy.d.ts +344 -0
  441. package/dist/retention/policy.d.ts.map +1 -0
  442. package/dist/retention/policy.js +472 -0
  443. package/dist/retention/policy.js.map +1 -0
  444. package/dist/retention/purger.d.ts +187 -0
  445. package/dist/retention/purger.d.ts.map +1 -0
  446. package/dist/retention/purger.js +411 -0
  447. package/dist/retention/purger.js.map +1 -0
  448. package/dist/rls/auth-integration.d.ts +280 -0
  449. package/dist/rls/auth-integration.d.ts.map +1 -0
  450. package/dist/rls/auth-integration.js +399 -0
  451. package/dist/rls/auth-integration.js.map +1 -0
  452. package/dist/rls/generator.d.ts +249 -0
  453. package/dist/rls/generator.d.ts.map +1 -0
  454. package/dist/rls/generator.js +495 -0
  455. package/dist/rls/generator.js.map +1 -0
  456. package/dist/rls/index.d.ts +26 -0
  457. package/dist/rls/index.d.ts.map +1 -0
  458. package/dist/rls/index.js +58 -0
  459. package/dist/rls/index.js.map +1 -0
  460. package/dist/rls/policy.d.ts +116 -0
  461. package/dist/rls/policy.d.ts.map +1 -0
  462. package/dist/rls/policy.js +77 -0
  463. package/dist/rls/policy.js.map +1 -0
  464. package/dist/rls/validator.d.ts +155 -0
  465. package/dist/rls/validator.d.ts.map +1 -0
  466. package/dist/rls/validator.js +792 -0
  467. package/dist/rls/validator.js.map +1 -0
  468. package/dist/routing/adaptive-router.d.ts +317 -0
  469. package/dist/routing/adaptive-router.d.ts.map +1 -0
  470. package/dist/routing/adaptive-router.js +554 -0
  471. package/dist/routing/adaptive-router.js.map +1 -0
  472. package/dist/routing/circuit-breaker.d.ts +339 -0
  473. package/dist/routing/circuit-breaker.d.ts.map +1 -0
  474. package/dist/routing/circuit-breaker.js +620 -0
  475. package/dist/routing/circuit-breaker.js.map +1 -0
  476. package/dist/routing/cost-metrics.d.ts +133 -0
  477. package/dist/routing/cost-metrics.d.ts.map +1 -0
  478. package/dist/routing/cost-metrics.js +259 -0
  479. package/dist/routing/cost-metrics.js.map +1 -0
  480. package/dist/routing/do-connection-pool.d.ts +243 -0
  481. package/dist/routing/do-connection-pool.d.ts.map +1 -0
  482. package/dist/routing/do-connection-pool.js +572 -0
  483. package/dist/routing/do-connection-pool.js.map +1 -0
  484. package/dist/routing/index.d.ts +59 -0
  485. package/dist/routing/index.d.ts.map +1 -0
  486. package/dist/routing/index.js +59 -0
  487. package/dist/routing/index.js.map +1 -0
  488. package/dist/routing/query-complexity-estimator.d.ts +73 -0
  489. package/dist/routing/query-complexity-estimator.d.ts.map +1 -0
  490. package/dist/routing/query-complexity-estimator.js +327 -0
  491. package/dist/routing/query-complexity-estimator.js.map +1 -0
  492. package/dist/routing/request-coalescing.d.ts +178 -0
  493. package/dist/routing/request-coalescing.d.ts.map +1 -0
  494. package/dist/routing/request-coalescing.js +325 -0
  495. package/dist/routing/request-coalescing.js.map +1 -0
  496. package/dist/routing/runtime-router.d.ts +107 -0
  497. package/dist/routing/runtime-router.d.ts.map +1 -0
  498. package/dist/routing/runtime-router.js +246 -0
  499. package/dist/routing/runtime-router.js.map +1 -0
  500. package/dist/routing/tenant-router.d.ts +848 -0
  501. package/dist/routing/tenant-router.d.ts.map +1 -0
  502. package/dist/routing/tenant-router.js +1056 -0
  503. package/dist/routing/tenant-router.js.map +1 -0
  504. package/dist/routing/websocket-pool.d.ts +119 -0
  505. package/dist/routing/websocket-pool.d.ts.map +1 -0
  506. package/dist/routing/websocket-pool.js +436 -0
  507. package/dist/routing/websocket-pool.js.map +1 -0
  508. package/dist/storage/cache-layer.d.ts +159 -0
  509. package/dist/storage/cache-layer.d.ts.map +1 -0
  510. package/dist/storage/cache-layer.js +245 -0
  511. package/dist/storage/cache-layer.js.map +1 -0
  512. package/dist/storage/cost-aware-tiering.d.ts +258 -0
  513. package/dist/storage/cost-aware-tiering.d.ts.map +1 -0
  514. package/dist/storage/cost-aware-tiering.js +526 -0
  515. package/dist/storage/cost-aware-tiering.js.map +1 -0
  516. package/dist/storage/index.d.ts +87 -0
  517. package/dist/storage/index.d.ts.map +1 -0
  518. package/dist/storage/index.js +78 -0
  519. package/dist/storage/index.js.map +1 -0
  520. package/dist/storage/interfaces.d.ts +856 -0
  521. package/dist/storage/interfaces.d.ts.map +1 -0
  522. package/dist/storage/interfaces.js +69 -0
  523. package/dist/storage/interfaces.js.map +1 -0
  524. package/dist/storage/r2-layer.d.ts +226 -0
  525. package/dist/storage/r2-layer.d.ts.map +1 -0
  526. package/dist/storage/r2-layer.js +307 -0
  527. package/dist/storage/r2-layer.js.map +1 -0
  528. package/dist/storage/r2-overflow.d.ts +344 -0
  529. package/dist/storage/r2-overflow.d.ts.map +1 -0
  530. package/dist/storage/r2-overflow.js +730 -0
  531. package/dist/storage/r2-overflow.js.map +1 -0
  532. package/dist/storage/r2-page-vfs.d.ts +374 -0
  533. package/dist/storage/r2-page-vfs.d.ts.map +1 -0
  534. package/dist/storage/r2-page-vfs.js +754 -0
  535. package/dist/storage/r2-page-vfs.js.map +1 -0
  536. package/dist/storage/swr-cache.d.ts +181 -0
  537. package/dist/storage/swr-cache.d.ts.map +1 -0
  538. package/dist/storage/swr-cache.js +295 -0
  539. package/dist/storage/swr-cache.js.map +1 -0
  540. package/dist/storage/tiered-orchestrator.d.ts +951 -0
  541. package/dist/storage/tiered-orchestrator.d.ts.map +1 -0
  542. package/dist/storage/tiered-orchestrator.js +1731 -0
  543. package/dist/storage/tiered-orchestrator.js.map +1 -0
  544. package/dist/storage/tiered-vfs-swr.d.ts +279 -0
  545. package/dist/storage/tiered-vfs-swr.d.ts.map +1 -0
  546. package/dist/storage/tiered-vfs-swr.js +584 -0
  547. package/dist/storage/tiered-vfs-swr.js.map +1 -0
  548. package/dist/storage/tiered-vfs.d.ts +405 -0
  549. package/dist/storage/tiered-vfs.d.ts.map +1 -0
  550. package/dist/storage/tiered-vfs.js +833 -0
  551. package/dist/storage/tiered-vfs.js.map +1 -0
  552. package/dist/streaming/backpressure-controller.d.ts +173 -0
  553. package/dist/streaming/backpressure-controller.d.ts.map +1 -0
  554. package/dist/streaming/backpressure-controller.js +344 -0
  555. package/dist/streaming/backpressure-controller.js.map +1 -0
  556. package/dist/streaming/buffer-pool.d.ts +241 -0
  557. package/dist/streaming/buffer-pool.d.ts.map +1 -0
  558. package/dist/streaming/buffer-pool.js +381 -0
  559. package/dist/streaming/buffer-pool.js.map +1 -0
  560. package/dist/streaming/cdc-iceberg-connector.d.ts +272 -0
  561. package/dist/streaming/cdc-iceberg-connector.d.ts.map +1 -0
  562. package/dist/streaming/cdc-iceberg-connector.js +408 -0
  563. package/dist/streaming/cdc-iceberg-connector.js.map +1 -0
  564. package/dist/streaming/index.d.ts +111 -0
  565. package/dist/streaming/index.d.ts.map +1 -0
  566. package/dist/streaming/index.js +128 -0
  567. package/dist/streaming/index.js.map +1 -0
  568. package/dist/streaming/live-cdc-stream.d.ts +400 -0
  569. package/dist/streaming/live-cdc-stream.d.ts.map +1 -0
  570. package/dist/streaming/live-cdc-stream.js +703 -0
  571. package/dist/streaming/live-cdc-stream.js.map +1 -0
  572. package/dist/streaming/memory-bounded-stream.d.ts +207 -0
  573. package/dist/streaming/memory-bounded-stream.d.ts.map +1 -0
  574. package/dist/streaming/memory-bounded-stream.js +340 -0
  575. package/dist/streaming/memory-bounded-stream.js.map +1 -0
  576. package/dist/streaming/query-streamer.d.ts +379 -0
  577. package/dist/streaming/query-streamer.d.ts.map +1 -0
  578. package/dist/streaming/query-streamer.js +495 -0
  579. package/dist/streaming/query-streamer.js.map +1 -0
  580. package/dist/streaming/response-streaming.d.ts +203 -0
  581. package/dist/streaming/response-streaming.d.ts.map +1 -0
  582. package/dist/streaming/response-streaming.js +449 -0
  583. package/dist/streaming/response-streaming.js.map +1 -0
  584. package/dist/types/branded.d.ts +859 -0
  585. package/dist/types/branded.d.ts.map +1 -0
  586. package/dist/types/branded.js +891 -0
  587. package/dist/types/branded.js.map +1 -0
  588. package/dist/types/utilities.d.ts +757 -0
  589. package/dist/types/utilities.d.ts.map +1 -0
  590. package/dist/types/utilities.js +447 -0
  591. package/dist/types/utilities.js.map +1 -0
  592. package/dist/wal/replay-engine.d.ts +344 -0
  593. package/dist/wal/replay-engine.d.ts.map +1 -0
  594. package/dist/wal/replay-engine.js +975 -0
  595. package/dist/wal/replay-engine.js.map +1 -0
  596. package/dist/worker/__mocks__/capnweb.d.ts +13 -0
  597. package/dist/worker/__mocks__/capnweb.d.ts.map +1 -0
  598. package/dist/worker/__mocks__/capnweb.js +15 -0
  599. package/dist/worker/__mocks__/capnweb.js.map +1 -0
  600. package/dist/worker/__mocks__/cloudflare-workers.d.ts +31 -0
  601. package/dist/worker/__mocks__/cloudflare-workers.d.ts.map +1 -0
  602. package/dist/worker/__mocks__/cloudflare-workers.js +33 -0
  603. package/dist/worker/__mocks__/cloudflare-workers.js.map +1 -0
  604. package/dist/worker/__mocks__/pglite.data.d.ts +3 -0
  605. package/dist/worker/__mocks__/pglite.data.d.ts.map +1 -0
  606. package/dist/worker/__mocks__/pglite.data.js +20 -0
  607. package/dist/worker/__mocks__/pglite.data.js.map +1 -0
  608. package/dist/worker/__mocks__/pglite.wasm.d.ts +3 -0
  609. package/dist/worker/__mocks__/pglite.wasm.d.ts.map +1 -0
  610. package/dist/worker/__mocks__/pglite.wasm.js +30 -0
  611. package/dist/worker/__mocks__/pglite.wasm.js.map +1 -0
  612. package/dist/worker/auth-rate-limiter.d.ts +270 -0
  613. package/dist/worker/auth-rate-limiter.d.ts.map +1 -0
  614. package/dist/worker/auth-rate-limiter.js +332 -0
  615. package/dist/worker/auth-rate-limiter.js.map +1 -0
  616. package/dist/worker/auth.d.ts +345 -0
  617. package/dist/worker/auth.d.ts.map +1 -0
  618. package/dist/worker/auth.js +837 -0
  619. package/dist/worker/auth.js.map +1 -0
  620. package/dist/worker/cdc-backpressure.d.ts +338 -0
  621. package/dist/worker/cdc-backpressure.d.ts.map +1 -0
  622. package/dist/worker/cdc-backpressure.js +619 -0
  623. package/dist/worker/cdc-backpressure.js.map +1 -0
  624. package/dist/worker/cdc-sse.d.ts +277 -0
  625. package/dist/worker/cdc-sse.d.ts.map +1 -0
  626. package/dist/worker/cdc-sse.js +528 -0
  627. package/dist/worker/cdc-sse.js.map +1 -0
  628. package/dist/worker/cdc-websocket.d.ts +252 -0
  629. package/dist/worker/cdc-websocket.d.ts.map +1 -0
  630. package/dist/worker/cdc-websocket.js +940 -0
  631. package/dist/worker/cdc-websocket.js.map +1 -0
  632. package/dist/worker/cdc.d.ts +95 -0
  633. package/dist/worker/cdc.d.ts.map +1 -0
  634. package/dist/worker/cdc.js +211 -0
  635. package/dist/worker/cdc.js.map +1 -0
  636. package/dist/worker/concerns/auth-concern.d.ts +50 -0
  637. package/dist/worker/concerns/auth-concern.d.ts.map +1 -0
  638. package/dist/worker/concerns/auth-concern.js +131 -0
  639. package/dist/worker/concerns/auth-concern.js.map +1 -0
  640. package/dist/worker/concerns/cdc-concern.d.ts +99 -0
  641. package/dist/worker/concerns/cdc-concern.d.ts.map +1 -0
  642. package/dist/worker/concerns/cdc-concern.js +137 -0
  643. package/dist/worker/concerns/cdc-concern.js.map +1 -0
  644. package/dist/worker/concerns/index.d.ts +22 -0
  645. package/dist/worker/concerns/index.d.ts.map +1 -0
  646. package/dist/worker/concerns/index.js +13 -0
  647. package/dist/worker/concerns/index.js.map +1 -0
  648. package/dist/worker/concerns/query-execution-concern.d.ts +104 -0
  649. package/dist/worker/concerns/query-execution-concern.d.ts.map +1 -0
  650. package/dist/worker/concerns/query-execution-concern.js +95 -0
  651. package/dist/worker/concerns/query-execution-concern.js.map +1 -0
  652. package/dist/worker/concerns/storage-orchestration-concern.d.ts +78 -0
  653. package/dist/worker/concerns/storage-orchestration-concern.d.ts.map +1 -0
  654. package/dist/worker/concerns/storage-orchestration-concern.js +240 -0
  655. package/dist/worker/concerns/storage-orchestration-concern.js.map +1 -0
  656. package/dist/worker/do-auth-manager.d.ts +108 -0
  657. package/dist/worker/do-auth-manager.d.ts.map +1 -0
  658. package/dist/worker/do-auth-manager.js +212 -0
  659. package/dist/worker/do-auth-manager.js.map +1 -0
  660. package/dist/worker/do-pglite-manager.d.ts +137 -0
  661. package/dist/worker/do-pglite-manager.d.ts.map +1 -0
  662. package/dist/worker/do-pglite-manager.js +228 -0
  663. package/dist/worker/do-pglite-manager.js.map +1 -0
  664. package/dist/worker/do.d.ts +556 -0
  665. package/dist/worker/do.d.ts.map +1 -0
  666. package/dist/worker/do.js +1441 -0
  667. package/dist/worker/do.js.map +1 -0
  668. package/dist/worker/entry.d.ts +23 -0
  669. package/dist/worker/entry.d.ts.map +1 -0
  670. package/dist/worker/entry.js +362 -0
  671. package/dist/worker/entry.js.map +1 -0
  672. package/dist/worker/errors.d.ts +106 -0
  673. package/dist/worker/errors.d.ts.map +1 -0
  674. package/dist/worker/errors.js +178 -0
  675. package/dist/worker/errors.js.map +1 -0
  676. package/dist/worker/health-check-manager.d.ts +141 -0
  677. package/dist/worker/health-check-manager.d.ts.map +1 -0
  678. package/dist/worker/health-check-manager.js +145 -0
  679. package/dist/worker/health-check-manager.js.map +1 -0
  680. package/dist/worker/index.d.ts +60 -0
  681. package/dist/worker/index.d.ts.map +1 -0
  682. package/dist/worker/index.js +67 -0
  683. package/dist/worker/index.js.map +1 -0
  684. package/dist/worker/memory-pressure.d.ts +892 -0
  685. package/dist/worker/memory-pressure.d.ts.map +1 -0
  686. package/dist/worker/memory-pressure.js +1990 -0
  687. package/dist/worker/memory-pressure.js.map +1 -0
  688. package/dist/worker/migration-manager.d.ts +153 -0
  689. package/dist/worker/migration-manager.d.ts.map +1 -0
  690. package/dist/worker/migration-manager.js +461 -0
  691. package/dist/worker/migration-manager.js.map +1 -0
  692. package/dist/worker/plugin-manager.d.ts +147 -0
  693. package/dist/worker/plugin-manager.d.ts.map +1 -0
  694. package/dist/worker/plugin-manager.js +408 -0
  695. package/dist/worker/plugin-manager.js.map +1 -0
  696. package/dist/worker/proxy.d.ts +330 -0
  697. package/dist/worker/proxy.d.ts.map +1 -0
  698. package/dist/worker/proxy.js +504 -0
  699. package/dist/worker/proxy.js.map +1 -0
  700. package/dist/worker/query-execution-manager.d.ts +107 -0
  701. package/dist/worker/query-execution-manager.d.ts.map +1 -0
  702. package/dist/worker/query-execution-manager.js +155 -0
  703. package/dist/worker/query-execution-manager.js.map +1 -0
  704. package/dist/worker/query-executor.d.ts +163 -0
  705. package/dist/worker/query-executor.d.ts.map +1 -0
  706. package/dist/worker/query-executor.js +413 -0
  707. package/dist/worker/query-executor.js.map +1 -0
  708. package/dist/worker/query-stats-manager.d.ts +117 -0
  709. package/dist/worker/query-stats-manager.d.ts.map +1 -0
  710. package/dist/worker/query-stats-manager.js +162 -0
  711. package/dist/worker/query-stats-manager.js.map +1 -0
  712. package/dist/worker/result-handler.d.ts +192 -0
  713. package/dist/worker/result-handler.d.ts.map +1 -0
  714. package/dist/worker/result-handler.js +346 -0
  715. package/dist/worker/result-handler.js.map +1 -0
  716. package/dist/worker/routes.d.ts +135 -0
  717. package/dist/worker/routes.d.ts.map +1 -0
  718. package/dist/worker/routes.js +460 -0
  719. package/dist/worker/routes.js.map +1 -0
  720. package/dist/worker/rpc-methods-manager.d.ts +142 -0
  721. package/dist/worker/rpc-methods-manager.d.ts.map +1 -0
  722. package/dist/worker/rpc-methods-manager.js +195 -0
  723. package/dist/worker/rpc-methods-manager.js.map +1 -0
  724. package/dist/worker/rpc.d.ts +259 -0
  725. package/dist/worker/rpc.d.ts.map +1 -0
  726. package/dist/worker/rpc.js +398 -0
  727. package/dist/worker/rpc.js.map +1 -0
  728. package/dist/worker/schema-version.d.ts +209 -0
  729. package/dist/worker/schema-version.d.ts.map +1 -0
  730. package/dist/worker/schema-version.js +450 -0
  731. package/dist/worker/schema-version.js.map +1 -0
  732. package/dist/worker/session-manager.d.ts +282 -0
  733. package/dist/worker/session-manager.d.ts.map +1 -0
  734. package/dist/worker/session-manager.js +523 -0
  735. package/dist/worker/session-manager.js.map +1 -0
  736. package/dist/worker/shutdown-manager.d.ts +188 -0
  737. package/dist/worker/shutdown-manager.d.ts.map +1 -0
  738. package/dist/worker/shutdown-manager.js +347 -0
  739. package/dist/worker/shutdown-manager.js.map +1 -0
  740. package/dist/worker/sql-transform.d.ts +61 -0
  741. package/dist/worker/sql-transform.d.ts.map +1 -0
  742. package/dist/worker/sql-transform.js +312 -0
  743. package/dist/worker/sql-transform.js.map +1 -0
  744. package/dist/worker/types.d.ts +738 -0
  745. package/dist/worker/types.d.ts.map +1 -0
  746. package/dist/worker/types.js +6 -0
  747. package/dist/worker/types.js.map +1 -0
  748. package/dist/worker/user-routes.d.ts +76 -0
  749. package/dist/worker/user-routes.d.ts.map +1 -0
  750. package/dist/worker/user-routes.js +188 -0
  751. package/dist/worker/user-routes.js.map +1 -0
  752. package/dist/worker/wal-facade.d.ts +138 -0
  753. package/dist/worker/wal-facade.d.ts.map +1 -0
  754. package/dist/worker/wal-facade.js +184 -0
  755. package/dist/worker/wal-facade.js.map +1 -0
  756. package/dist/worker/wal-r2.d.ts +271 -0
  757. package/dist/worker/wal-r2.d.ts.map +1 -0
  758. package/dist/worker/wal-r2.js +689 -0
  759. package/dist/worker/wal-r2.js.map +1 -0
  760. package/dist/worker/wal-replay.d.ts +361 -0
  761. package/dist/worker/wal-replay.d.ts.map +1 -0
  762. package/dist/worker/wal-replay.js +628 -0
  763. package/dist/worker/wal-replay.js.map +1 -0
  764. package/dist/worker/wal-retention.d.ts +389 -0
  765. package/dist/worker/wal-retention.d.ts.map +1 -0
  766. package/dist/worker/wal-retention.js +763 -0
  767. package/dist/worker/wal-retention.js.map +1 -0
  768. package/dist/worker/wal.d.ts +278 -0
  769. package/dist/worker/wal.d.ts.map +1 -0
  770. package/dist/worker/wal.js +467 -0
  771. package/dist/worker/wal.js.map +1 -0
  772. package/dist/worker/websocket.d.ts +85 -0
  773. package/dist/worker/websocket.d.ts.map +1 -0
  774. package/dist/worker/websocket.js +227 -0
  775. package/dist/worker/websocket.js.map +1 -0
  776. package/package.json +108 -0
  777. package/src/cdc/change-stream.ts +137 -0
  778. package/src/cdc/filter.ts +646 -0
  779. package/src/cdc/index.ts +112 -0
  780. package/src/cdc/resume-token.ts +280 -0
  781. package/src/cdc/transport/index.ts +7 -0
  782. package/src/cdc/transport/sse.ts +723 -0
  783. package/src/cdc/transport/websocket.ts +873 -0
  784. package/src/cdc/types.ts +346 -0
  785. package/src/config/index.ts +25 -0
  786. package/src/config/memory.ts +177 -0
  787. package/src/config/storage.ts +204 -0
  788. package/src/config/streaming.ts +147 -0
  789. package/src/config/timeouts.ts +221 -0
  790. package/src/extensions/config.test.ts +187 -0
  791. package/src/extensions/config.ts +278 -0
  792. package/src/extensions/geo.test.ts +455 -0
  793. package/src/extensions/geo.ts +858 -0
  794. package/src/extensions/index.test.ts +259 -0
  795. package/src/extensions/index.ts +227 -0
  796. package/src/extensions/loader.test.ts +555 -0
  797. package/src/extensions/loader.ts +588 -0
  798. package/src/extensions/pgmq-lite.test.ts +727 -0
  799. package/src/extensions/pgmq-lite.ts +770 -0
  800. package/src/extensions/plugins.test.ts +528 -0
  801. package/src/extensions/plugins.ts +718 -0
  802. package/src/extensions/registry.test.ts +202 -0
  803. package/src/extensions/registry.ts +267 -0
  804. package/src/extensions/vector.test.ts +195 -0
  805. package/src/extensions/vector.ts +217 -0
  806. package/src/iceberg/SCHEDULER.md +580 -0
  807. package/src/iceberg/analytics.test.ts +703 -0
  808. package/src/iceberg/analytics.ts +727 -0
  809. package/src/iceberg/catalog-api.test.ts +838 -0
  810. package/src/iceberg/catalog-api.ts +520 -0
  811. package/src/iceberg/catalog.test.ts +680 -0
  812. package/src/iceberg/catalog.ts +1007 -0
  813. package/src/iceberg/iceberg.test.ts +705 -0
  814. package/src/iceberg/index.ts +406 -0
  815. package/src/iceberg/metadata.test.ts +632 -0
  816. package/src/iceberg/metadata.ts +649 -0
  817. package/src/iceberg/optimizer.test.ts +868 -0
  818. package/src/iceberg/optimizer.ts +1287 -0
  819. package/src/iceberg/parquet.test.ts +899 -0
  820. package/src/iceberg/parquet.ts +1640 -0
  821. package/src/iceberg/r2-organization.test.ts +615 -0
  822. package/src/iceberg/r2-organization.ts +951 -0
  823. package/src/iceberg/scheduler-do-example.ts +364 -0
  824. package/src/iceberg/scheduler.test.ts +861 -0
  825. package/src/iceberg/scheduler.ts +1201 -0
  826. package/src/iceberg/schema.test.ts +547 -0
  827. package/src/iceberg/schema.ts +616 -0
  828. package/src/iceberg/snapshot-manager.test.ts +919 -0
  829. package/src/iceberg/snapshot-manager.ts +1369 -0
  830. package/src/iceberg/sql-router.test.ts +334 -0
  831. package/src/iceberg/sql-router.ts +337 -0
  832. package/src/iceberg/test-fixtures.ts +605 -0
  833. package/src/iceberg/time-travel-api.test.ts +1029 -0
  834. package/src/iceberg/time-travel-api.ts +731 -0
  835. package/src/iceberg/time-travel.test.ts +1218 -0
  836. package/src/iceberg/time-travel.ts +1052 -0
  837. package/src/iceberg/transformer.test.ts +689 -0
  838. package/src/iceberg/transformer.ts +1029 -0
  839. package/src/iceberg/types.ts +373 -0
  840. package/src/iceberg/writer.test.ts +716 -0
  841. package/src/iceberg/writer.ts +590 -0
  842. package/src/index.ts +212 -0
  843. package/src/lineage/index.ts +42 -0
  844. package/src/lineage/integration.ts +334 -0
  845. package/src/lineage/tracker.ts +1618 -0
  846. package/src/lineage/types.ts +354 -0
  847. package/src/middleware/index.ts +36 -0
  848. package/src/middleware/rate-limit-concurrent.test.ts +794 -0
  849. package/src/middleware/rate-limit.test.ts +1568 -0
  850. package/src/middleware/rate-limit.ts +840 -0
  851. package/src/migration-tooling/external-migration.test.ts +1864 -0
  852. package/src/migration-tooling/external-migration.ts +2355 -0
  853. package/src/migration-tooling/index.ts +19 -0
  854. package/src/migrations/ARCHITECTURE.md +474 -0
  855. package/src/migrations/PROGRESS_TRACKING.md +485 -0
  856. package/src/migrations/auto-migrator.test.ts +732 -0
  857. package/src/migrations/auto-migrator.ts +531 -0
  858. package/src/migrations/bulk-orchestrator.test.ts +801 -0
  859. package/src/migrations/bulk-orchestrator.ts +1039 -0
  860. package/src/migrations/compatibility.test.ts +958 -0
  861. package/src/migrations/compatibility.ts +902 -0
  862. package/src/migrations/do-migrations.test.ts +2620 -0
  863. package/src/migrations/do-migrations.ts +1289 -0
  864. package/src/migrations/do-migrations.types.ts +715 -0
  865. package/src/migrations/drizzle-compat.test.ts +210 -0
  866. package/src/migrations/drizzle-compat.ts +337 -0
  867. package/src/migrations/index.ts +334 -0
  868. package/src/migrations/migration-api.test.ts +438 -0
  869. package/src/migrations/migration-api.ts +704 -0
  870. package/src/migrations/progress-tracker-do.ts +518 -0
  871. package/src/migrations/progress-tracker-kv.ts +305 -0
  872. package/src/migrations/progress-tracker.test.ts +937 -0
  873. package/src/migrations/progress-tracker.ts +665 -0
  874. package/src/migrations/registry.test.ts +331 -0
  875. package/src/migrations/registry.ts +468 -0
  876. package/src/migrations/rollback.test.ts +644 -0
  877. package/src/migrations/runner.test.ts +807 -0
  878. package/src/migrations/runner.test.ts.backup +759 -0
  879. package/src/migrations/runner.ts +1459 -0
  880. package/src/migrations/schema-generator.test.ts +649 -0
  881. package/src/migrations/schema-generator.ts +513 -0
  882. package/src/migrations/testing.ts +1037 -0
  883. package/src/migrations/types.ts +573 -0
  884. package/src/migrations/validator.test.ts +660 -0
  885. package/src/migrations/validator.ts +741 -0
  886. package/src/observability/alerting.test.ts +1133 -0
  887. package/src/observability/alerting.ts +455 -0
  888. package/src/observability/analytics-engine.ts +733 -0
  889. package/src/observability/cost-metrics.ts +804 -0
  890. package/src/observability/cross-do-tracing.test.ts +516 -0
  891. package/src/observability/cross-do-tracing.ts +588 -0
  892. package/src/observability/dashboards/postgres-do-overview.json +1656 -0
  893. package/src/observability/error-rate-collector.test.ts +977 -0
  894. package/src/observability/error-rate-collector.ts +518 -0
  895. package/src/observability/exporters.test.ts +365 -0
  896. package/src/observability/exporters.ts +650 -0
  897. package/src/observability/health-check.test.ts +353 -0
  898. package/src/observability/health-check.ts +341 -0
  899. package/src/observability/index.test.ts +298 -0
  900. package/src/observability/index.ts +885 -0
  901. package/src/observability/instrumentation.test.ts +428 -0
  902. package/src/observability/instrumentation.ts +788 -0
  903. package/src/observability/memory-metrics.test.ts +355 -0
  904. package/src/observability/memory-metrics.ts +990 -0
  905. package/src/observability/metrics-endpoint.test.ts +402 -0
  906. package/src/observability/metrics-endpoint.ts +374 -0
  907. package/src/observability/metrics.test.ts +291 -0
  908. package/src/observability/metrics.ts +315 -0
  909. package/src/observability/observability-features.ts +1296 -0
  910. package/src/observability/prometheus.test.ts +292 -0
  911. package/src/observability/prometheus.ts +170 -0
  912. package/src/observability/propagation.test.ts +417 -0
  913. package/src/observability/propagation.ts +294 -0
  914. package/src/observability/query-latency.ts +586 -0
  915. package/src/observability/query-performance.test.ts +406 -0
  916. package/src/observability/query-performance.ts +491 -0
  917. package/src/observability/storage-tier-metrics.test.ts +633 -0
  918. package/src/observability/storage-tier-metrics.ts +570 -0
  919. package/src/observability/tier-cost-optimizer.ts +740 -0
  920. package/src/observability/tracer.test.ts +346 -0
  921. package/src/observability/tracer.ts +585 -0
  922. package/src/observability/types.test.ts +726 -0
  923. package/src/observability/types.ts +434 -0
  924. package/src/pglite/auto-demotion.test.ts +477 -0
  925. package/src/pglite/auto-demotion.ts +385 -0
  926. package/src/pglite/auto-promotion.test.ts +824 -0
  927. package/src/pglite/auto-promotion.ts +547 -0
  928. package/src/pglite/cache-layer.test.ts +469 -0
  929. package/src/pglite/cache-layer.ts +271 -0
  930. package/src/pglite/cold-start-manager.ts +1260 -0
  931. package/src/pglite/cold-start-optimizer.test.ts +937 -0
  932. package/src/pglite/cold-start-optimizer.ts +1895 -0
  933. package/src/pglite/dovfs-adapter.ts +1122 -0
  934. package/src/pglite/dovfs.ts +1258 -0
  935. package/src/pglite/etag-cache.test.ts +844 -0
  936. package/src/pglite/etag-cache.ts +526 -0
  937. package/src/pglite/index.ts +442 -0
  938. package/src/pglite/init.test.ts +455 -0
  939. package/src/pglite/init.ts +574 -0
  940. package/src/pglite/lifecycle.test.ts +599 -0
  941. package/src/pglite/lifecycle.ts +704 -0
  942. package/src/pglite/parallel-loader.test.ts +586 -0
  943. package/src/pglite/parallel-loader.ts +481 -0
  944. package/src/pglite/production-pglite.test.ts +666 -0
  945. package/src/pglite/production-pglite.ts +537 -0
  946. package/src/pglite/query-executor.ts +614 -0
  947. package/src/pglite/r2-layer.test.ts +501 -0
  948. package/src/pglite/r2-layer.ts +322 -0
  949. package/src/pglite/tiered-init.test.ts +725 -0
  950. package/src/pglite/tiered-init.ts +556 -0
  951. package/src/pglite/tiered-vfs.test.ts +726 -0
  952. package/src/pglite/tiered-vfs.ts +33 -0
  953. package/src/pglite/tiering-stats.test.ts +531 -0
  954. package/src/pglite/tiering-stats.ts +407 -0
  955. package/src/pglite/transaction-hooks.ts +343 -0
  956. package/src/pglite/warm-loader.test.ts +1701 -0
  957. package/src/pglite/warm-loader.ts +528 -0
  958. package/src/pglite/workers-pglite.ts +224 -0
  959. package/src/pglite-assets/pglite.data +0 -0
  960. package/src/pglite-assets/pglite.wasm +0 -0
  961. package/src/pglite.d.ts +47 -0
  962. package/src/playground/index.ts +137 -0
  963. package/src/playground/keyboard-shortcuts.ts +677 -0
  964. package/src/playground/playground.ts +323 -0
  965. package/src/playground/query-executor.ts +669 -0
  966. package/src/playground/query-history.ts +328 -0
  967. package/src/playground/result-formatter.ts +420 -0
  968. package/src/playground/sample-datasets.ts +674 -0
  969. package/src/playground/sample-queries.ts +1168 -0
  970. package/src/playground/schema-explorer.ts +558 -0
  971. package/src/playground/types.ts +518 -0
  972. package/src/readonly/cache-reader.test.ts +460 -0
  973. package/src/readonly/cache-reader.ts +313 -0
  974. package/src/readonly/config.test.ts +187 -0
  975. package/src/readonly/config.ts +128 -0
  976. package/src/readonly/index.ts +50 -0
  977. package/src/readonly/pglite-wrapper.test.ts +278 -0
  978. package/src/readonly/pglite-wrapper.ts +184 -0
  979. package/src/readonly/worker.test.ts +533 -0
  980. package/src/readonly/worker.ts +341 -0
  981. package/src/readonly/write-blocker.test.ts +459 -0
  982. package/src/readonly/write-blocker.ts +175 -0
  983. package/src/recovery/disaster-recovery.test.ts +618 -0
  984. package/src/recovery/disaster-recovery.ts +1181 -0
  985. package/src/recovery/index.ts +43 -0
  986. package/src/recovery/parquet-parser.ts +974 -0
  987. package/src/retention/index.ts +74 -0
  988. package/src/retention/policy.test.ts +571 -0
  989. package/src/retention/policy.ts +774 -0
  990. package/src/retention/purger.test.ts +465 -0
  991. package/src/retention/purger.ts +558 -0
  992. package/src/rls/auth-integration.test.ts +752 -0
  993. package/src/rls/auth-integration.ts +533 -0
  994. package/src/rls/generator.test.ts +829 -0
  995. package/src/rls/generator.ts +573 -0
  996. package/src/rls/index.ts +128 -0
  997. package/src/rls/policy.ts +208 -0
  998. package/src/rls/rls.test.ts +1071 -0
  999. package/src/rls/validator.test.ts +930 -0
  1000. package/src/rls/validator.ts +895 -0
  1001. package/src/routing/adaptive-router.test.ts +884 -0
  1002. package/src/routing/adaptive-router.ts +845 -0
  1003. package/src/routing/circuit-breaker.test.ts +1505 -0
  1004. package/src/routing/circuit-breaker.ts +852 -0
  1005. package/src/routing/cost-metrics.test.ts +565 -0
  1006. package/src/routing/cost-metrics.ts +408 -0
  1007. package/src/routing/do-connection-pool.test.ts +1109 -0
  1008. package/src/routing/do-connection-pool.ts +828 -0
  1009. package/src/routing/index.ts +158 -0
  1010. package/src/routing/query-complexity-estimator.test.ts +356 -0
  1011. package/src/routing/query-complexity-estimator.ts +444 -0
  1012. package/src/routing/request-coalescing.test.ts +738 -0
  1013. package/src/routing/request-coalescing.ts +475 -0
  1014. package/src/routing/runtime-router.test.ts +436 -0
  1015. package/src/routing/runtime-router.ts +357 -0
  1016. package/src/routing/tenant-router.test.ts +2493 -0
  1017. package/src/routing/tenant-router.ts +1908 -0
  1018. package/src/routing/websocket-pool.test.ts +551 -0
  1019. package/src/routing/websocket-pool.ts +577 -0
  1020. package/src/storage/access-pattern-tracker.test.ts +874 -0
  1021. package/src/storage/cache-layer.test.ts +560 -0
  1022. package/src/storage/cache-layer.ts +328 -0
  1023. package/src/storage/cost-aware-tiering.test.ts +652 -0
  1024. package/src/storage/cost-aware-tiering.ts +794 -0
  1025. package/src/storage/do-sqlite-blobs.test.ts +937 -0
  1026. package/src/storage/index.ts +272 -0
  1027. package/src/storage/interfaces.ts +974 -0
  1028. package/src/storage/r2-layer.test.ts +653 -0
  1029. package/src/storage/r2-layer.ts +434 -0
  1030. package/src/storage/r2-overflow.ts +920 -0
  1031. package/src/storage/r2-page-vfs.test.ts +2348 -0
  1032. package/src/storage/r2-page-vfs.ts +1054 -0
  1033. package/src/storage/swr-cache.test.ts +832 -0
  1034. package/src/storage/swr-cache.ts +398 -0
  1035. package/src/storage/swr-tiered-integration.test.ts +617 -0
  1036. package/src/storage/tiered-orchestrator.test.ts +2441 -0
  1037. package/src/storage/tiered-orchestrator.ts +2081 -0
  1038. package/src/storage/tiered-vfs-swr.test.ts +736 -0
  1039. package/src/storage/tiered-vfs-swr.ts +735 -0
  1040. package/src/storage/tiered-vfs.test.ts +793 -0
  1041. package/src/storage/tiered-vfs.ts +1082 -0
  1042. package/src/streaming/backpressure-controller.ts +452 -0
  1043. package/src/streaming/buffer-pool.ts +484 -0
  1044. package/src/streaming/cdc-iceberg-connector.ts +605 -0
  1045. package/src/streaming/index.ts +225 -0
  1046. package/src/streaming/live-cdc-stream.ts +985 -0
  1047. package/src/streaming/memory-bounded-stream.ts +443 -0
  1048. package/src/streaming/query-streamer.ts +662 -0
  1049. package/src/streaming/response-streaming.ts +557 -0
  1050. package/src/types/branded.ts +1075 -0
  1051. package/src/types/branded.ts.backup +273 -0
  1052. package/src/types/utilities.ts +1023 -0
  1053. package/src/types/wasm.d.ts +30 -0
  1054. package/src/validation/typed-errors.test.ts +420 -0
  1055. package/src/wal/replay-engine.ts +1264 -0
  1056. package/src/worker/__mocks__/capnweb.ts +15 -0
  1057. package/src/worker/__mocks__/pglite.data.ts +22 -0
  1058. package/src/worker/__mocks__/pglite.wasm.ts +33 -0
  1059. package/src/worker/auth-rate-limiter.test.ts +272 -0
  1060. package/src/worker/auth-rate-limiter.ts +448 -0
  1061. package/src/worker/auth.security-red.test.ts +1236 -0
  1062. package/src/worker/auth.security.test.ts +822 -0
  1063. package/src/worker/auth.test.ts +469 -0
  1064. package/src/worker/auth.ts +1104 -0
  1065. package/src/worker/cdc-backpressure.test.ts +726 -0
  1066. package/src/worker/cdc-backpressure.ts +866 -0
  1067. package/src/worker/cdc-sse.test.ts +780 -0
  1068. package/src/worker/cdc-sse.ts +728 -0
  1069. package/src/worker/cdc-websocket.ts +1229 -0
  1070. package/src/worker/cdc-ws.test.ts +1009 -0
  1071. package/src/worker/cdc.test.ts +327 -0
  1072. package/src/worker/cdc.ts +289 -0
  1073. package/src/worker/concerns/auth-concern.ts +179 -0
  1074. package/src/worker/concerns/cdc-concern.ts +247 -0
  1075. package/src/worker/concerns/index.ts +58 -0
  1076. package/src/worker/concerns/query-execution-concern.ts +194 -0
  1077. package/src/worker/concerns/storage-orchestration-concern.ts +373 -0
  1078. package/src/worker/discriminated-types.test.ts +280 -0
  1079. package/src/worker/do-auth-manager.ts +257 -0
  1080. package/src/worker/do-decomposition.test.ts +1236 -0
  1081. package/src/worker/do-pglite-manager.ts +302 -0
  1082. package/src/worker/do.test.ts +2254 -0
  1083. package/src/worker/do.ts +1878 -0
  1084. package/src/worker/entry.ts +417 -0
  1085. package/src/worker/errors.ts +285 -0
  1086. package/src/worker/health-check-manager.test.ts +261 -0
  1087. package/src/worker/health-check-manager.ts +231 -0
  1088. package/src/worker/index.ts +389 -0
  1089. package/src/worker/memory-pressure.test.ts +1460 -0
  1090. package/src/worker/memory-pressure.ts +2650 -0
  1091. package/src/worker/migration-manager.ts +582 -0
  1092. package/src/worker/neon-compat.test.ts +332 -0
  1093. package/src/worker/plugin-manager.ts +485 -0
  1094. package/src/worker/postgres.do-rpc.d.ts +76 -0
  1095. package/src/worker/proxy.ts +694 -0
  1096. package/src/worker/query-execution-manager.test.ts +303 -0
  1097. package/src/worker/query-execution-manager.ts +219 -0
  1098. package/src/worker/query-executor.test.ts +282 -0
  1099. package/src/worker/query-executor.ts +560 -0
  1100. package/src/worker/query-stats-manager.ts +229 -0
  1101. package/src/worker/result-handler.test.ts +364 -0
  1102. package/src/worker/result-handler.ts +510 -0
  1103. package/src/worker/routes.test.ts +795 -0
  1104. package/src/worker/routes.ts +650 -0
  1105. package/src/worker/rpc-methods-manager.test.ts +326 -0
  1106. package/src/worker/rpc-methods-manager.ts +276 -0
  1107. package/src/worker/rpc.ts +524 -0
  1108. package/src/worker/schema-version.ts +605 -0
  1109. package/src/worker/session-manager.test.ts +506 -0
  1110. package/src/worker/session-manager.ts +732 -0
  1111. package/src/worker/shutdown-manager.ts +469 -0
  1112. package/src/worker/sql-transform.test.ts +286 -0
  1113. package/src/worker/sql-transform.ts +368 -0
  1114. package/src/worker/supabase-compat.test.ts +621 -0
  1115. package/src/worker/types.test.ts +292 -0
  1116. package/src/worker/types.ts +873 -0
  1117. package/src/worker/user-routes.test.ts +703 -0
  1118. package/src/worker/user-routes.ts +303 -0
  1119. package/src/worker/wal-facade.ts +235 -0
  1120. package/src/worker/wal-r2.test.ts +570 -0
  1121. package/src/worker/wal-r2.ts +930 -0
  1122. package/src/worker/wal-replay.test.ts +845 -0
  1123. package/src/worker/wal-replay.ts +897 -0
  1124. package/src/worker/wal-retention.test.ts +758 -0
  1125. package/src/worker/wal-retention.ts +1075 -0
  1126. package/src/worker/wal.test.ts +618 -0
  1127. package/src/worker/wal.ts +697 -0
  1128. package/src/worker/websocket.test.ts +296 -0
  1129. package/src/worker/websocket.ts +284 -0
@@ -0,0 +1,1168 @@
1
+ /**
2
+ * Sample Queries for Playground
3
+ *
4
+ * Provides pre-built sample queries for common SQL operations,
5
+ * organized by category for easy discovery and learning.
6
+ *
7
+ * @module playground/sample-queries
8
+ */
9
+
10
+ /**
11
+ * A sample query with metadata
12
+ */
13
+ export interface SampleQuery {
14
+ /** Unique identifier for the query */
15
+ id: string
16
+ /** Display name/title */
17
+ name: string
18
+ /** Category for grouping */
19
+ category: SampleQueryCategory
20
+ /** Brief description of what the query does */
21
+ description: string
22
+ /** The SQL query */
23
+ sql: string
24
+ /** Optional parameters for parameterized queries */
25
+ params?: unknown[]
26
+ /** Tags for filtering/searching */
27
+ tags?: string[]
28
+ /** Difficulty level */
29
+ difficulty?: 'beginner' | 'intermediate' | 'advanced'
30
+ /** Whether this query requires sample data to be loaded first */
31
+ requiresSampleData?: boolean
32
+ }
33
+
34
+ /**
35
+ * Categories for organizing sample queries
36
+ */
37
+ export type SampleQueryCategory =
38
+ | 'basic-select'
39
+ | 'filtering'
40
+ | 'aggregation'
41
+ | 'joins'
42
+ | 'subqueries'
43
+ | 'data-modification'
44
+ | 'ddl'
45
+ | 'window-functions'
46
+ | 'json'
47
+ | 'text-search'
48
+ | 'date-time'
49
+ | 'advanced'
50
+
51
+ /**
52
+ * Category metadata for display
53
+ */
54
+ export interface SampleQueryCategoryInfo {
55
+ id: SampleQueryCategory
56
+ name: string
57
+ description: string
58
+ icon?: string
59
+ }
60
+
61
+ /**
62
+ * Category information
63
+ */
64
+ export const SAMPLE_QUERY_CATEGORIES: SampleQueryCategoryInfo[] = [
65
+ {
66
+ id: 'basic-select',
67
+ name: 'Basic SELECT',
68
+ description: 'Fundamental SELECT queries to retrieve data',
69
+ },
70
+ {
71
+ id: 'filtering',
72
+ name: 'Filtering & Sorting',
73
+ description: 'WHERE clauses, ORDER BY, and LIMIT',
74
+ },
75
+ {
76
+ id: 'aggregation',
77
+ name: 'Aggregation',
78
+ description: 'GROUP BY, COUNT, SUM, AVG, and other aggregate functions',
79
+ },
80
+ {
81
+ id: 'joins',
82
+ name: 'Joins',
83
+ description: 'INNER JOIN, LEFT JOIN, and other join types',
84
+ },
85
+ {
86
+ id: 'subqueries',
87
+ name: 'Subqueries',
88
+ description: 'Nested queries, CTEs, and derived tables',
89
+ },
90
+ {
91
+ id: 'data-modification',
92
+ name: 'Data Modification',
93
+ description: 'INSERT, UPDATE, DELETE operations',
94
+ },
95
+ {
96
+ id: 'ddl',
97
+ name: 'Schema (DDL)',
98
+ description: 'CREATE, ALTER, DROP tables and indexes',
99
+ },
100
+ {
101
+ id: 'window-functions',
102
+ name: 'Window Functions',
103
+ description: 'ROW_NUMBER, RANK, LAG, LEAD, and partitioning',
104
+ },
105
+ {
106
+ id: 'json',
107
+ name: 'JSON Operations',
108
+ description: 'JSONB queries, operators, and functions',
109
+ },
110
+ {
111
+ id: 'text-search',
112
+ name: 'Text & Search',
113
+ description: 'LIKE, ILIKE, pattern matching, and full-text search',
114
+ },
115
+ {
116
+ id: 'date-time',
117
+ name: 'Date & Time',
118
+ description: 'Date/time functions, intervals, and formatting',
119
+ },
120
+ {
121
+ id: 'advanced',
122
+ name: 'Advanced',
123
+ description: 'Complex queries and PostgreSQL-specific features',
124
+ },
125
+ ]
126
+
127
+ /**
128
+ * All sample queries
129
+ */
130
+ export const SAMPLE_QUERIES: SampleQuery[] = [
131
+ // ============================================================================
132
+ // Basic SELECT
133
+ // ============================================================================
134
+ {
135
+ id: 'basic-select-all',
136
+ name: 'Select All Rows',
137
+ category: 'basic-select',
138
+ description: 'Retrieve all columns and rows from a table',
139
+ sql: 'SELECT * FROM users;',
140
+ difficulty: 'beginner',
141
+ requiresSampleData: true,
142
+ tags: ['select', 'basic'],
143
+ },
144
+ {
145
+ id: 'basic-select-columns',
146
+ name: 'Select Specific Columns',
147
+ category: 'basic-select',
148
+ description: 'Retrieve only specific columns from a table',
149
+ sql: 'SELECT name, email FROM users;',
150
+ difficulty: 'beginner',
151
+ requiresSampleData: true,
152
+ tags: ['select', 'columns'],
153
+ },
154
+ {
155
+ id: 'basic-select-alias',
156
+ name: 'Column Aliases',
157
+ category: 'basic-select',
158
+ description: 'Rename columns in the result using AS',
159
+ sql: `SELECT
160
+ name AS user_name,
161
+ email AS contact_email,
162
+ created_at AS joined_date
163
+ FROM users;`,
164
+ difficulty: 'beginner',
165
+ requiresSampleData: true,
166
+ tags: ['select', 'alias', 'as'],
167
+ },
168
+ {
169
+ id: 'basic-select-distinct',
170
+ name: 'Select Distinct Values',
171
+ category: 'basic-select',
172
+ description: 'Remove duplicate rows from results',
173
+ sql: `SELECT DISTINCT user_id
174
+ FROM posts
175
+ ORDER BY user_id;`,
176
+ difficulty: 'beginner',
177
+ requiresSampleData: true,
178
+ tags: ['select', 'distinct', 'unique'],
179
+ },
180
+ {
181
+ id: 'basic-select-expression',
182
+ name: 'Calculated Columns',
183
+ category: 'basic-select',
184
+ description: 'Create computed values in SELECT',
185
+ sql: `SELECT
186
+ 1 + 1 AS addition,
187
+ 10 * 5 AS multiplication,
188
+ UPPER('hello') AS uppercase,
189
+ NOW() AS current_time;`,
190
+ difficulty: 'beginner',
191
+ tags: ['select', 'expression', 'computed'],
192
+ },
193
+
194
+ // ============================================================================
195
+ // Filtering & Sorting
196
+ // ============================================================================
197
+ {
198
+ id: 'filter-where-equals',
199
+ name: 'Simple WHERE Clause',
200
+ category: 'filtering',
201
+ description: 'Filter rows with exact match',
202
+ sql: `SELECT * FROM users
203
+ WHERE name = 'Alice Johnson';`,
204
+ difficulty: 'beginner',
205
+ requiresSampleData: true,
206
+ tags: ['where', 'filter', 'equals'],
207
+ },
208
+ {
209
+ id: 'filter-where-multiple',
210
+ name: 'Multiple Conditions (AND/OR)',
211
+ category: 'filtering',
212
+ description: 'Combine conditions with AND/OR',
213
+ sql: `SELECT * FROM posts
214
+ WHERE published = true
215
+ AND user_id = 1;`,
216
+ difficulty: 'beginner',
217
+ requiresSampleData: true,
218
+ tags: ['where', 'and', 'or', 'filter'],
219
+ },
220
+ {
221
+ id: 'filter-where-in',
222
+ name: 'IN Operator',
223
+ category: 'filtering',
224
+ description: 'Match against a list of values',
225
+ sql: `SELECT * FROM users
226
+ WHERE id IN (1, 2, 3);`,
227
+ difficulty: 'beginner',
228
+ requiresSampleData: true,
229
+ tags: ['where', 'in', 'list'],
230
+ },
231
+ {
232
+ id: 'filter-where-between',
233
+ name: 'BETWEEN Range',
234
+ category: 'filtering',
235
+ description: 'Filter values within a range',
236
+ sql: `SELECT * FROM users
237
+ WHERE id BETWEEN 2 AND 4;`,
238
+ difficulty: 'beginner',
239
+ requiresSampleData: true,
240
+ tags: ['where', 'between', 'range'],
241
+ },
242
+ {
243
+ id: 'filter-where-null',
244
+ name: 'NULL Checks',
245
+ category: 'filtering',
246
+ description: 'Check for NULL or NOT NULL values',
247
+ sql: `-- Find posts with no body
248
+ SELECT * FROM posts
249
+ WHERE body IS NULL;
250
+
251
+ -- Find posts with body
252
+ SELECT * FROM posts
253
+ WHERE body IS NOT NULL;`,
254
+ difficulty: 'beginner',
255
+ requiresSampleData: true,
256
+ tags: ['where', 'null', 'is null'],
257
+ },
258
+ {
259
+ id: 'filter-order-by',
260
+ name: 'Sorting Results',
261
+ category: 'filtering',
262
+ description: 'Order results by one or more columns',
263
+ sql: `SELECT * FROM users
264
+ ORDER BY name ASC;
265
+
266
+ -- Multiple columns, mixed direction
267
+ SELECT * FROM posts
268
+ ORDER BY user_id ASC, created_at DESC;`,
269
+ difficulty: 'beginner',
270
+ requiresSampleData: true,
271
+ tags: ['order by', 'sort', 'asc', 'desc'],
272
+ },
273
+ {
274
+ id: 'filter-limit-offset',
275
+ name: 'Pagination with LIMIT/OFFSET',
276
+ category: 'filtering',
277
+ description: 'Limit results and skip rows for pagination',
278
+ sql: `-- First page (5 results)
279
+ SELECT * FROM posts
280
+ ORDER BY id
281
+ LIMIT 5;
282
+
283
+ -- Second page (skip first 5)
284
+ SELECT * FROM posts
285
+ ORDER BY id
286
+ LIMIT 5 OFFSET 5;`,
287
+ difficulty: 'beginner',
288
+ requiresSampleData: true,
289
+ tags: ['limit', 'offset', 'pagination'],
290
+ },
291
+
292
+ // ============================================================================
293
+ // Aggregation
294
+ // ============================================================================
295
+ {
296
+ id: 'agg-count',
297
+ name: 'COUNT Rows',
298
+ category: 'aggregation',
299
+ description: 'Count total rows or non-null values',
300
+ sql: `-- Total users
301
+ SELECT COUNT(*) AS total_users FROM users;
302
+
303
+ -- Count non-null values
304
+ SELECT COUNT(email) AS users_with_email FROM users;`,
305
+ difficulty: 'beginner',
306
+ requiresSampleData: true,
307
+ tags: ['count', 'aggregate'],
308
+ },
309
+ {
310
+ id: 'agg-sum-avg',
311
+ name: 'SUM and AVG',
312
+ category: 'aggregation',
313
+ description: 'Calculate sum and average of numeric columns',
314
+ sql: `SELECT
315
+ COUNT(*) AS total_posts,
316
+ SUM(CASE WHEN published THEN 1 ELSE 0 END) AS published_count,
317
+ AVG(CASE WHEN published THEN 1 ELSE 0 END) * 100 AS published_pct
318
+ FROM posts;`,
319
+ difficulty: 'intermediate',
320
+ requiresSampleData: true,
321
+ tags: ['sum', 'avg', 'average', 'aggregate'],
322
+ },
323
+ {
324
+ id: 'agg-min-max',
325
+ name: 'MIN and MAX',
326
+ category: 'aggregation',
327
+ description: 'Find minimum and maximum values',
328
+ sql: `SELECT
329
+ MIN(created_at) AS first_user,
330
+ MAX(created_at) AS latest_user
331
+ FROM users;`,
332
+ difficulty: 'beginner',
333
+ requiresSampleData: true,
334
+ tags: ['min', 'max', 'aggregate'],
335
+ },
336
+ {
337
+ id: 'agg-group-by',
338
+ name: 'GROUP BY',
339
+ category: 'aggregation',
340
+ description: 'Group rows and calculate aggregates per group',
341
+ sql: `SELECT
342
+ user_id,
343
+ COUNT(*) AS post_count,
344
+ SUM(CASE WHEN published THEN 1 ELSE 0 END) AS published
345
+ FROM posts
346
+ GROUP BY user_id
347
+ ORDER BY post_count DESC;`,
348
+ difficulty: 'intermediate',
349
+ requiresSampleData: true,
350
+ tags: ['group by', 'aggregate', 'grouping'],
351
+ },
352
+ {
353
+ id: 'agg-having',
354
+ name: 'HAVING Clause',
355
+ category: 'aggregation',
356
+ description: 'Filter groups after aggregation',
357
+ sql: `SELECT
358
+ user_id,
359
+ COUNT(*) AS post_count
360
+ FROM posts
361
+ GROUP BY user_id
362
+ HAVING COUNT(*) > 2
363
+ ORDER BY post_count DESC;`,
364
+ difficulty: 'intermediate',
365
+ requiresSampleData: true,
366
+ tags: ['having', 'group by', 'filter'],
367
+ },
368
+
369
+ // ============================================================================
370
+ // Joins
371
+ // ============================================================================
372
+ {
373
+ id: 'join-inner',
374
+ name: 'INNER JOIN',
375
+ category: 'joins',
376
+ description: 'Combine rows from two tables where keys match',
377
+ sql: `SELECT
378
+ u.name AS author,
379
+ p.title,
380
+ p.published
381
+ FROM posts p
382
+ INNER JOIN users u ON u.id = p.user_id
383
+ ORDER BY u.name, p.title;`,
384
+ difficulty: 'intermediate',
385
+ requiresSampleData: true,
386
+ tags: ['join', 'inner join'],
387
+ },
388
+ {
389
+ id: 'join-left',
390
+ name: 'LEFT JOIN',
391
+ category: 'joins',
392
+ description: 'Include all rows from left table, match from right',
393
+ sql: `SELECT
394
+ u.name,
395
+ COUNT(p.id) AS post_count
396
+ FROM users u
397
+ LEFT JOIN posts p ON p.user_id = u.id
398
+ GROUP BY u.id, u.name
399
+ ORDER BY post_count DESC;`,
400
+ difficulty: 'intermediate',
401
+ requiresSampleData: true,
402
+ tags: ['join', 'left join', 'outer'],
403
+ },
404
+ {
405
+ id: 'join-multiple',
406
+ name: 'Multiple Joins',
407
+ category: 'joins',
408
+ description: 'Join three or more tables',
409
+ sql: `SELECT
410
+ u.name AS commenter,
411
+ p.title AS post_title,
412
+ c.content AS comment
413
+ FROM comments c
414
+ JOIN users u ON u.id = c.user_id
415
+ JOIN posts p ON p.id = c.post_id
416
+ ORDER BY c.created_at DESC
417
+ LIMIT 10;`,
418
+ difficulty: 'intermediate',
419
+ requiresSampleData: true,
420
+ tags: ['join', 'multiple', 'three tables'],
421
+ },
422
+ {
423
+ id: 'join-self',
424
+ name: 'Self Join',
425
+ category: 'joins',
426
+ description: 'Join a table to itself',
427
+ sql: `-- Find users who joined on the same day
428
+ SELECT
429
+ u1.name AS user1,
430
+ u2.name AS user2,
431
+ DATE(u1.created_at) AS joined_date
432
+ FROM users u1
433
+ JOIN users u2 ON DATE(u1.created_at) = DATE(u2.created_at)
434
+ AND u1.id < u2.id
435
+ ORDER BY joined_date;`,
436
+ difficulty: 'advanced',
437
+ requiresSampleData: true,
438
+ tags: ['join', 'self join'],
439
+ },
440
+
441
+ // ============================================================================
442
+ // Subqueries
443
+ // ============================================================================
444
+ {
445
+ id: 'subquery-where',
446
+ name: 'Subquery in WHERE',
447
+ category: 'subqueries',
448
+ description: 'Use a subquery to filter results',
449
+ sql: `SELECT * FROM posts
450
+ WHERE user_id IN (
451
+ SELECT id FROM users
452
+ WHERE name LIKE 'A%'
453
+ );`,
454
+ difficulty: 'intermediate',
455
+ requiresSampleData: true,
456
+ tags: ['subquery', 'nested', 'where'],
457
+ },
458
+ {
459
+ id: 'subquery-exists',
460
+ name: 'EXISTS Subquery',
461
+ category: 'subqueries',
462
+ description: 'Check if subquery returns any rows',
463
+ sql: `-- Users who have written at least one post
464
+ SELECT * FROM users u
465
+ WHERE EXISTS (
466
+ SELECT 1 FROM posts p
467
+ WHERE p.user_id = u.id
468
+ );`,
469
+ difficulty: 'intermediate',
470
+ requiresSampleData: true,
471
+ tags: ['subquery', 'exists', 'correlated'],
472
+ },
473
+ {
474
+ id: 'subquery-cte',
475
+ name: 'Common Table Expression (CTE)',
476
+ category: 'subqueries',
477
+ description: 'Use WITH clause for readable subqueries',
478
+ sql: `WITH user_post_counts AS (
479
+ SELECT
480
+ user_id,
481
+ COUNT(*) AS post_count
482
+ FROM posts
483
+ GROUP BY user_id
484
+ )
485
+ SELECT
486
+ u.name,
487
+ COALESCE(upc.post_count, 0) AS posts
488
+ FROM users u
489
+ LEFT JOIN user_post_counts upc ON upc.user_id = u.id
490
+ ORDER BY posts DESC;`,
491
+ difficulty: 'intermediate',
492
+ requiresSampleData: true,
493
+ tags: ['cte', 'with', 'common table expression'],
494
+ },
495
+ {
496
+ id: 'subquery-derived-table',
497
+ name: 'Derived Table (FROM Subquery)',
498
+ category: 'subqueries',
499
+ description: 'Use a subquery as a table in FROM',
500
+ sql: `SELECT
501
+ stats.user_id,
502
+ u.name,
503
+ stats.total_posts,
504
+ stats.published_posts
505
+ FROM (
506
+ SELECT
507
+ user_id,
508
+ COUNT(*) AS total_posts,
509
+ SUM(CASE WHEN published THEN 1 ELSE 0 END) AS published_posts
510
+ FROM posts
511
+ GROUP BY user_id
512
+ ) AS stats
513
+ JOIN users u ON u.id = stats.user_id
514
+ ORDER BY stats.total_posts DESC;`,
515
+ difficulty: 'intermediate',
516
+ requiresSampleData: true,
517
+ tags: ['subquery', 'derived table', 'from'],
518
+ },
519
+
520
+ // ============================================================================
521
+ // Data Modification
522
+ // ============================================================================
523
+ {
524
+ id: 'dml-insert-single',
525
+ name: 'INSERT Single Row',
526
+ category: 'data-modification',
527
+ description: 'Insert a single row into a table',
528
+ sql: `INSERT INTO users (name, email)
529
+ VALUES ('New User', 'newuser@example.com')
530
+ RETURNING *;`,
531
+ difficulty: 'beginner',
532
+ requiresSampleData: true,
533
+ tags: ['insert', 'dml', 'returning'],
534
+ },
535
+ {
536
+ id: 'dml-insert-multiple',
537
+ name: 'INSERT Multiple Rows',
538
+ category: 'data-modification',
539
+ description: 'Insert several rows at once',
540
+ sql: `INSERT INTO users (name, email) VALUES
541
+ ('User A', 'usera@example.com'),
542
+ ('User B', 'userb@example.com'),
543
+ ('User C', 'userc@example.com')
544
+ RETURNING id, name;`,
545
+ difficulty: 'beginner',
546
+ requiresSampleData: true,
547
+ tags: ['insert', 'bulk', 'multiple'],
548
+ },
549
+ {
550
+ id: 'dml-update',
551
+ name: 'UPDATE Rows',
552
+ category: 'data-modification',
553
+ description: 'Update existing rows',
554
+ sql: `UPDATE posts
555
+ SET published = true
556
+ WHERE user_id = 1 AND published = false
557
+ RETURNING id, title, published;`,
558
+ difficulty: 'beginner',
559
+ requiresSampleData: true,
560
+ tags: ['update', 'dml', 'modify'],
561
+ },
562
+ {
563
+ id: 'dml-delete',
564
+ name: 'DELETE Rows',
565
+ category: 'data-modification',
566
+ description: 'Remove rows from a table',
567
+ sql: `-- Delete unpublished posts (example - be careful!)
568
+ DELETE FROM posts
569
+ WHERE published = false
570
+ RETURNING id, title;`,
571
+ difficulty: 'beginner',
572
+ requiresSampleData: true,
573
+ tags: ['delete', 'dml', 'remove'],
574
+ },
575
+ {
576
+ id: 'dml-upsert',
577
+ name: 'UPSERT (INSERT ON CONFLICT)',
578
+ category: 'data-modification',
579
+ description: 'Insert or update on conflict',
580
+ sql: `INSERT INTO users (name, email)
581
+ VALUES ('Alice Johnson', 'alice@example.com')
582
+ ON CONFLICT (email)
583
+ DO UPDATE SET name = EXCLUDED.name
584
+ RETURNING *;`,
585
+ difficulty: 'intermediate',
586
+ requiresSampleData: true,
587
+ tags: ['upsert', 'on conflict', 'merge'],
588
+ },
589
+
590
+ // ============================================================================
591
+ // DDL (Schema)
592
+ // ============================================================================
593
+ {
594
+ id: 'ddl-create-table',
595
+ name: 'CREATE TABLE',
596
+ category: 'ddl',
597
+ description: 'Create a new table with various column types',
598
+ sql: `CREATE TABLE IF NOT EXISTS products (
599
+ id SERIAL PRIMARY KEY,
600
+ name TEXT NOT NULL,
601
+ description TEXT,
602
+ price DECIMAL(10, 2) NOT NULL,
603
+ quantity INTEGER DEFAULT 0,
604
+ category TEXT,
605
+ created_at TIMESTAMP DEFAULT NOW(),
606
+ updated_at TIMESTAMP DEFAULT NOW()
607
+ );`,
608
+ difficulty: 'beginner',
609
+ tags: ['create', 'table', 'ddl'],
610
+ },
611
+ {
612
+ id: 'ddl-alter-table',
613
+ name: 'ALTER TABLE',
614
+ category: 'ddl',
615
+ description: 'Modify table structure',
616
+ sql: `-- Add a column
617
+ ALTER TABLE products ADD COLUMN sku TEXT UNIQUE;
618
+
619
+ -- Drop a column
620
+ -- ALTER TABLE products DROP COLUMN sku;
621
+
622
+ -- Add a constraint
623
+ ALTER TABLE products
624
+ ADD CONSTRAINT price_positive CHECK (price >= 0);`,
625
+ difficulty: 'intermediate',
626
+ tags: ['alter', 'table', 'ddl', 'modify'],
627
+ },
628
+ {
629
+ id: 'ddl-create-index',
630
+ name: 'CREATE INDEX',
631
+ category: 'ddl',
632
+ description: 'Create indexes for better query performance',
633
+ sql: `-- Simple index
634
+ CREATE INDEX IF NOT EXISTS idx_posts_user_id
635
+ ON posts(user_id);
636
+
637
+ -- Composite index
638
+ CREATE INDEX IF NOT EXISTS idx_posts_user_published
639
+ ON posts(user_id, published);
640
+
641
+ -- Partial index
642
+ CREATE INDEX IF NOT EXISTS idx_posts_published_only
643
+ ON posts(created_at)
644
+ WHERE published = true;`,
645
+ difficulty: 'intermediate',
646
+ requiresSampleData: true,
647
+ tags: ['index', 'ddl', 'performance'],
648
+ },
649
+ {
650
+ id: 'ddl-create-view',
651
+ name: 'CREATE VIEW',
652
+ category: 'ddl',
653
+ description: 'Create a virtual table from a query',
654
+ sql: `CREATE OR REPLACE VIEW user_post_summary AS
655
+ SELECT
656
+ u.id AS user_id,
657
+ u.name,
658
+ COUNT(p.id) AS total_posts,
659
+ SUM(CASE WHEN p.published THEN 1 ELSE 0 END) AS published_posts
660
+ FROM users u
661
+ LEFT JOIN posts p ON p.user_id = u.id
662
+ GROUP BY u.id, u.name;
663
+
664
+ -- Query the view
665
+ SELECT * FROM user_post_summary;`,
666
+ difficulty: 'intermediate',
667
+ requiresSampleData: true,
668
+ tags: ['view', 'ddl', 'virtual table'],
669
+ },
670
+
671
+ // ============================================================================
672
+ // Window Functions
673
+ // ============================================================================
674
+ {
675
+ id: 'window-row-number',
676
+ name: 'ROW_NUMBER',
677
+ category: 'window-functions',
678
+ description: 'Assign sequential numbers to rows',
679
+ sql: `SELECT
680
+ ROW_NUMBER() OVER (ORDER BY created_at) AS row_num,
681
+ name,
682
+ created_at
683
+ FROM users;`,
684
+ difficulty: 'intermediate',
685
+ requiresSampleData: true,
686
+ tags: ['window', 'row_number', 'ranking'],
687
+ },
688
+ {
689
+ id: 'window-rank',
690
+ name: 'RANK and DENSE_RANK',
691
+ category: 'window-functions',
692
+ description: 'Rank rows with ties handling',
693
+ sql: `WITH post_counts AS (
694
+ SELECT
695
+ user_id,
696
+ COUNT(*) AS post_count
697
+ FROM posts
698
+ GROUP BY user_id
699
+ )
700
+ SELECT
701
+ u.name,
702
+ pc.post_count,
703
+ RANK() OVER (ORDER BY pc.post_count DESC) AS rank,
704
+ DENSE_RANK() OVER (ORDER BY pc.post_count DESC) AS dense_rank
705
+ FROM post_counts pc
706
+ JOIN users u ON u.id = pc.user_id;`,
707
+ difficulty: 'intermediate',
708
+ requiresSampleData: true,
709
+ tags: ['window', 'rank', 'dense_rank', 'ranking'],
710
+ },
711
+ {
712
+ id: 'window-partition',
713
+ name: 'PARTITION BY',
714
+ category: 'window-functions',
715
+ description: 'Apply window function within groups',
716
+ sql: `SELECT
717
+ u.name AS author,
718
+ p.title,
719
+ p.created_at,
720
+ ROW_NUMBER() OVER (
721
+ PARTITION BY p.user_id
722
+ ORDER BY p.created_at
723
+ ) AS post_number
724
+ FROM posts p
725
+ JOIN users u ON u.id = p.user_id
726
+ ORDER BY u.name, post_number;`,
727
+ difficulty: 'intermediate',
728
+ requiresSampleData: true,
729
+ tags: ['window', 'partition', 'grouping'],
730
+ },
731
+ {
732
+ id: 'window-lag-lead',
733
+ name: 'LAG and LEAD',
734
+ category: 'window-functions',
735
+ description: 'Access previous/next row values',
736
+ sql: `SELECT
737
+ name,
738
+ created_at,
739
+ LAG(name) OVER (ORDER BY created_at) AS prev_user,
740
+ LEAD(name) OVER (ORDER BY created_at) AS next_user
741
+ FROM users
742
+ ORDER BY created_at;`,
743
+ difficulty: 'advanced',
744
+ requiresSampleData: true,
745
+ tags: ['window', 'lag', 'lead', 'previous', 'next'],
746
+ },
747
+ {
748
+ id: 'window-running-total',
749
+ name: 'Running Total',
750
+ category: 'window-functions',
751
+ description: 'Calculate cumulative sum',
752
+ sql: `SELECT
753
+ id,
754
+ title,
755
+ created_at,
756
+ COUNT(*) OVER (ORDER BY created_at) AS running_count,
757
+ SUM(CASE WHEN published THEN 1 ELSE 0 END) OVER (
758
+ ORDER BY created_at
759
+ ) AS running_published
760
+ FROM posts
761
+ ORDER BY created_at;`,
762
+ difficulty: 'advanced',
763
+ requiresSampleData: true,
764
+ tags: ['window', 'running total', 'cumulative'],
765
+ },
766
+
767
+ // ============================================================================
768
+ // JSON Operations
769
+ // ============================================================================
770
+ {
771
+ id: 'json-create',
772
+ name: 'Create JSON Data',
773
+ category: 'json',
774
+ description: 'Build JSON objects and arrays',
775
+ sql: `SELECT
776
+ jsonb_build_object(
777
+ 'name', 'Alice',
778
+ 'age', 30,
779
+ 'active', true
780
+ ) AS json_object,
781
+ jsonb_build_array(1, 2, 3, 'four') AS json_array,
782
+ to_jsonb(ROW('hello', 42)) AS row_to_json;`,
783
+ difficulty: 'intermediate',
784
+ tags: ['json', 'jsonb', 'create'],
785
+ },
786
+ {
787
+ id: 'json-query',
788
+ name: 'Query JSON Fields',
789
+ category: 'json',
790
+ description: 'Extract values from JSON columns',
791
+ sql: `-- Create a table with JSON
792
+ CREATE TABLE IF NOT EXISTS json_demo (
793
+ id SERIAL PRIMARY KEY,
794
+ data JSONB
795
+ );
796
+
797
+ INSERT INTO json_demo (data) VALUES
798
+ ('{"name": "Alice", "tags": ["admin", "user"], "meta": {"age": 30}}'),
799
+ ('{"name": "Bob", "tags": ["user"], "meta": {"age": 25}}')
800
+ ON CONFLICT DO NOTHING;
801
+
802
+ -- Query JSON fields
803
+ SELECT
804
+ data->>'name' AS name,
805
+ data->'meta'->>'age' AS age,
806
+ data->'tags' AS tags,
807
+ jsonb_array_length(data->'tags') AS tag_count
808
+ FROM json_demo;`,
809
+ difficulty: 'intermediate',
810
+ tags: ['json', 'jsonb', 'query', 'extract'],
811
+ },
812
+ {
813
+ id: 'json-filter',
814
+ name: 'Filter by JSON Values',
815
+ category: 'json',
816
+ description: 'Use JSON operators in WHERE clauses',
817
+ sql: `-- Filter by JSON field value
818
+ SELECT * FROM json_demo
819
+ WHERE data->>'name' = 'Alice';
820
+
821
+ -- Check if array contains value
822
+ SELECT * FROM json_demo
823
+ WHERE data->'tags' ? 'admin';
824
+
825
+ -- Check nested value
826
+ SELECT * FROM json_demo
827
+ WHERE (data->'meta'->>'age')::int > 25;`,
828
+ difficulty: 'intermediate',
829
+ tags: ['json', 'jsonb', 'filter', 'where'],
830
+ },
831
+ {
832
+ id: 'json-modify',
833
+ name: 'Modify JSON Data',
834
+ category: 'json',
835
+ description: 'Update JSON values and merge objects',
836
+ sql: `-- Update a JSON field
837
+ UPDATE json_demo
838
+ SET data = jsonb_set(data, '{meta,active}', 'true')
839
+ WHERE data->>'name' = 'Alice'
840
+ RETURNING *;
841
+
842
+ -- Merge JSON objects
843
+ SELECT
844
+ data || '{"status": "verified"}'::jsonb AS merged
845
+ FROM json_demo;`,
846
+ difficulty: 'advanced',
847
+ tags: ['json', 'jsonb', 'update', 'modify'],
848
+ },
849
+
850
+ // ============================================================================
851
+ // Text & Search
852
+ // ============================================================================
853
+ {
854
+ id: 'text-like',
855
+ name: 'LIKE Pattern Matching',
856
+ category: 'text-search',
857
+ description: 'Search with wildcards',
858
+ sql: `-- Starts with
859
+ SELECT * FROM users WHERE name LIKE 'A%';
860
+
861
+ -- Contains
862
+ SELECT * FROM users WHERE email LIKE '%example%';
863
+
864
+ -- Case-insensitive
865
+ SELECT * FROM users WHERE name ILIKE '%alice%';`,
866
+ difficulty: 'beginner',
867
+ requiresSampleData: true,
868
+ tags: ['like', 'ilike', 'pattern', 'search'],
869
+ },
870
+ {
871
+ id: 'text-regex',
872
+ name: 'Regular Expressions',
873
+ category: 'text-search',
874
+ description: 'Use regex for pattern matching',
875
+ sql: `-- Match pattern
876
+ SELECT * FROM users
877
+ WHERE email ~ '^[a-z]+@example\\.com$';
878
+
879
+ -- Case-insensitive regex
880
+ SELECT * FROM users
881
+ WHERE name ~* '^(alice|bob)';`,
882
+ difficulty: 'intermediate',
883
+ requiresSampleData: true,
884
+ tags: ['regex', 'pattern', 'search', 'regular expression'],
885
+ },
886
+ {
887
+ id: 'text-functions',
888
+ name: 'String Functions',
889
+ category: 'text-search',
890
+ description: 'Common string manipulation functions',
891
+ sql: `SELECT
892
+ name,
893
+ UPPER(name) AS upper_name,
894
+ LOWER(name) AS lower_name,
895
+ LENGTH(name) AS name_length,
896
+ SUBSTRING(name, 1, 5) AS first_five,
897
+ REPLACE(email, '@', ' [at] ') AS obfuscated_email,
898
+ TRIM(' hello ') AS trimmed,
899
+ CONCAT(name, ' <', email, '>') AS formatted
900
+ FROM users;`,
901
+ difficulty: 'beginner',
902
+ requiresSampleData: true,
903
+ tags: ['string', 'text', 'functions'],
904
+ },
905
+ {
906
+ id: 'text-fulltext',
907
+ name: 'Full-Text Search',
908
+ category: 'text-search',
909
+ description: 'PostgreSQL full-text search capabilities',
910
+ sql: `-- Simple text search
911
+ SELECT title, body
912
+ FROM posts
913
+ WHERE to_tsvector('english', title || ' ' || COALESCE(body, ''))
914
+ @@ to_tsquery('english', 'post');
915
+
916
+ -- Ranked search results
917
+ SELECT
918
+ title,
919
+ ts_rank(
920
+ to_tsvector('english', title || ' ' || COALESCE(body, '')),
921
+ to_tsquery('english', 'post')
922
+ ) AS rank
923
+ FROM posts
924
+ WHERE to_tsvector('english', title || ' ' || COALESCE(body, ''))
925
+ @@ to_tsquery('english', 'post')
926
+ ORDER BY rank DESC;`,
927
+ difficulty: 'advanced',
928
+ requiresSampleData: true,
929
+ tags: ['full-text', 'search', 'tsvector', 'tsquery'],
930
+ },
931
+
932
+ // ============================================================================
933
+ // Date & Time
934
+ // ============================================================================
935
+ {
936
+ id: 'date-current',
937
+ name: 'Current Date/Time',
938
+ category: 'date-time',
939
+ description: 'Get current date and time values',
940
+ sql: `SELECT
941
+ NOW() AS now,
942
+ CURRENT_TIMESTAMP AS current_timestamp,
943
+ CURRENT_DATE AS today,
944
+ CURRENT_TIME AS current_time,
945
+ LOCALTIME AS local_time,
946
+ LOCALTIMESTAMP AS local_timestamp;`,
947
+ difficulty: 'beginner',
948
+ tags: ['date', 'time', 'now', 'current'],
949
+ },
950
+ {
951
+ id: 'date-extract',
952
+ name: 'Extract Date Parts',
953
+ category: 'date-time',
954
+ description: 'Get year, month, day, etc. from dates',
955
+ sql: `SELECT
956
+ created_at,
957
+ EXTRACT(YEAR FROM created_at) AS year,
958
+ EXTRACT(MONTH FROM created_at) AS month,
959
+ EXTRACT(DAY FROM created_at) AS day,
960
+ EXTRACT(DOW FROM created_at) AS day_of_week,
961
+ EXTRACT(HOUR FROM created_at) AS hour
962
+ FROM users;`,
963
+ difficulty: 'beginner',
964
+ requiresSampleData: true,
965
+ tags: ['date', 'extract', 'year', 'month', 'day'],
966
+ },
967
+ {
968
+ id: 'date-interval',
969
+ name: 'Date Arithmetic',
970
+ category: 'date-time',
971
+ description: 'Add and subtract time intervals',
972
+ sql: `SELECT
973
+ NOW() AS now,
974
+ NOW() + INTERVAL '1 day' AS tomorrow,
975
+ NOW() - INTERVAL '1 week' AS last_week,
976
+ NOW() + INTERVAL '3 months' AS in_3_months,
977
+ NOW() - INTERVAL '1 year' AS last_year,
978
+ AGE(NOW(), '2020-01-01'::timestamp) AS time_since_2020;`,
979
+ difficulty: 'intermediate',
980
+ tags: ['date', 'interval', 'arithmetic', 'add', 'subtract'],
981
+ },
982
+ {
983
+ id: 'date-format',
984
+ name: 'Format Dates',
985
+ category: 'date-time',
986
+ description: 'Convert dates to formatted strings',
987
+ sql: `SELECT
988
+ created_at,
989
+ TO_CHAR(created_at, 'YYYY-MM-DD') AS iso_date,
990
+ TO_CHAR(created_at, 'Month DD, YYYY') AS full_date,
991
+ TO_CHAR(created_at, 'Day') AS day_name,
992
+ TO_CHAR(created_at, 'HH24:MI:SS') AS time_24h,
993
+ TO_CHAR(created_at, 'HH:MI AM') AS time_12h
994
+ FROM users;`,
995
+ difficulty: 'intermediate',
996
+ requiresSampleData: true,
997
+ tags: ['date', 'format', 'to_char'],
998
+ },
999
+ {
1000
+ id: 'date-truncate',
1001
+ name: 'Truncate Dates',
1002
+ category: 'date-time',
1003
+ description: 'Round dates to specific precision',
1004
+ sql: `SELECT
1005
+ created_at,
1006
+ DATE_TRUNC('year', created_at) AS year_start,
1007
+ DATE_TRUNC('month', created_at) AS month_start,
1008
+ DATE_TRUNC('week', created_at) AS week_start,
1009
+ DATE_TRUNC('day', created_at) AS day_start,
1010
+ DATE_TRUNC('hour', created_at) AS hour_start
1011
+ FROM users;`,
1012
+ difficulty: 'intermediate',
1013
+ requiresSampleData: true,
1014
+ tags: ['date', 'truncate', 'round'],
1015
+ },
1016
+
1017
+ // ============================================================================
1018
+ // Advanced
1019
+ // ============================================================================
1020
+ {
1021
+ id: 'adv-generate-series',
1022
+ name: 'Generate Series',
1023
+ category: 'advanced',
1024
+ description: 'Generate sequences of numbers or dates',
1025
+ sql: `-- Number sequence
1026
+ SELECT generate_series(1, 10) AS num;
1027
+
1028
+ -- Date sequence (one row per day)
1029
+ SELECT generate_series(
1030
+ '2024-01-01'::date,
1031
+ '2024-01-07'::date,
1032
+ '1 day'::interval
1033
+ )::date AS date;
1034
+
1035
+ -- Time slots (hourly)
1036
+ SELECT generate_series(
1037
+ '2024-01-01 09:00'::timestamp,
1038
+ '2024-01-01 17:00'::timestamp,
1039
+ '1 hour'::interval
1040
+ ) AS time_slot;`,
1041
+ difficulty: 'intermediate',
1042
+ tags: ['generate_series', 'sequence', 'numbers', 'dates'],
1043
+ },
1044
+ {
1045
+ id: 'adv-recursive-cte',
1046
+ name: 'Recursive CTE',
1047
+ category: 'advanced',
1048
+ description: 'Create hierarchical or iterative queries',
1049
+ sql: `-- Fibonacci sequence
1050
+ WITH RECURSIVE fib(n, a, b) AS (
1051
+ SELECT 1, 0::bigint, 1::bigint
1052
+ UNION ALL
1053
+ SELECT n + 1, b, a + b
1054
+ FROM fib
1055
+ WHERE n < 20
1056
+ )
1057
+ SELECT n, a AS fibonacci
1058
+ FROM fib;
1059
+
1060
+ -- Number sequence (alternative to generate_series)
1061
+ WITH RECURSIVE nums(n) AS (
1062
+ SELECT 1
1063
+ UNION ALL
1064
+ SELECT n + 1 FROM nums WHERE n < 10
1065
+ )
1066
+ SELECT * FROM nums;`,
1067
+ difficulty: 'advanced',
1068
+ tags: ['recursive', 'cte', 'hierarchy', 'iteration'],
1069
+ },
1070
+ {
1071
+ id: 'adv-lateral-join',
1072
+ name: 'LATERAL Join',
1073
+ category: 'advanced',
1074
+ description: 'Reference outer query in subquery',
1075
+ sql: `-- Get top 2 posts per user
1076
+ SELECT
1077
+ u.name,
1078
+ top_posts.title,
1079
+ top_posts.created_at
1080
+ FROM users u
1081
+ CROSS JOIN LATERAL (
1082
+ SELECT title, created_at
1083
+ FROM posts p
1084
+ WHERE p.user_id = u.id
1085
+ ORDER BY created_at DESC
1086
+ LIMIT 2
1087
+ ) AS top_posts;`,
1088
+ difficulty: 'advanced',
1089
+ requiresSampleData: true,
1090
+ tags: ['lateral', 'join', 'correlated', 'top-n'],
1091
+ },
1092
+ {
1093
+ id: 'adv-array-agg',
1094
+ name: 'Array Aggregation',
1095
+ category: 'advanced',
1096
+ description: 'Combine values into arrays',
1097
+ sql: `SELECT
1098
+ u.name,
1099
+ ARRAY_AGG(p.title ORDER BY p.created_at) AS post_titles,
1100
+ STRING_AGG(p.title, ', ' ORDER BY p.created_at) AS titles_csv
1101
+ FROM users u
1102
+ LEFT JOIN posts p ON p.user_id = u.id
1103
+ GROUP BY u.id, u.name
1104
+ ORDER BY u.name;`,
1105
+ difficulty: 'advanced',
1106
+ requiresSampleData: true,
1107
+ tags: ['array_agg', 'string_agg', 'aggregate', 'array'],
1108
+ },
1109
+ {
1110
+ id: 'adv-explain-analyze',
1111
+ name: 'EXPLAIN ANALYZE',
1112
+ category: 'advanced',
1113
+ description: 'Analyze query execution plan',
1114
+ sql: `EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
1115
+ SELECT u.name, COUNT(p.id) AS post_count
1116
+ FROM users u
1117
+ LEFT JOIN posts p ON p.user_id = u.id
1118
+ GROUP BY u.id, u.name
1119
+ ORDER BY post_count DESC;`,
1120
+ difficulty: 'advanced',
1121
+ requiresSampleData: true,
1122
+ tags: ['explain', 'analyze', 'performance', 'plan'],
1123
+ },
1124
+ ]
1125
+
1126
+ /**
1127
+ * Get sample queries by category
1128
+ */
1129
+ export function getQueriesByCategory(category: SampleQueryCategory): SampleQuery[] {
1130
+ return SAMPLE_QUERIES.filter((q) => q.category === category)
1131
+ }
1132
+
1133
+ /**
1134
+ * Get sample queries by difficulty
1135
+ */
1136
+ export function getQueriesByDifficulty(
1137
+ difficulty: 'beginner' | 'intermediate' | 'advanced'
1138
+ ): SampleQuery[] {
1139
+ return SAMPLE_QUERIES.filter((q) => q.difficulty === difficulty)
1140
+ }
1141
+
1142
+ /**
1143
+ * Get sample queries that don't require sample data
1144
+ */
1145
+ export function getStandaloneQueries(): SampleQuery[] {
1146
+ return SAMPLE_QUERIES.filter((q) => !q.requiresSampleData)
1147
+ }
1148
+
1149
+ /**
1150
+ * Search sample queries by keyword
1151
+ */
1152
+ export function searchQueries(keyword: string): SampleQuery[] {
1153
+ const lower = keyword.toLowerCase()
1154
+ return SAMPLE_QUERIES.filter(
1155
+ (q) =>
1156
+ q.name.toLowerCase().includes(lower) ||
1157
+ q.description.toLowerCase().includes(lower) ||
1158
+ q.sql.toLowerCase().includes(lower) ||
1159
+ q.tags?.some((t) => t.toLowerCase().includes(lower))
1160
+ )
1161
+ }
1162
+
1163
+ /**
1164
+ * Get a sample query by ID
1165
+ */
1166
+ export function getQueryById(id: string): SampleQuery | undefined {
1167
+ return SAMPLE_QUERIES.find((q) => q.id === id)
1168
+ }