@rocicorp/zero 0.25.0-canary.1 → 0.25.0-canary.3

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 (416) hide show
  1. package/out/analyze-query/src/bin-analyze.js +27 -38
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/ast-to-zql/src/bin.js.map +1 -1
  4. package/out/{chunk-ZZXMKAAG.js → chunk-5H7WNLPK.js} +2 -2
  5. package/out/chunk-HYS7YLNL.js +575 -0
  6. package/out/chunk-HYS7YLNL.js.map +7 -0
  7. package/out/{chunk-AIPM77UE.js → chunk-IWL6EEA6.js} +10418 -10217
  8. package/out/chunk-IWL6EEA6.js.map +7 -0
  9. package/out/{chunk-TJFNGO7E.js → chunk-JKP7HDC6.js} +15 -53
  10. package/out/chunk-JKP7HDC6.js.map +7 -0
  11. package/out/{chunk-ECUMGQGC.js → chunk-RYFBHAD4.js} +17 -4
  12. package/out/chunk-RYFBHAD4.js.map +7 -0
  13. package/out/chunk-SRLXXPNB.js +495 -0
  14. package/out/chunk-SRLXXPNB.js.map +7 -0
  15. package/out/{chunk-EZM3XBAB.js → chunk-U2KJIWVC.js} +47 -2
  16. package/out/chunk-U2KJIWVC.js.map +7 -0
  17. package/out/expo-sqlite.js +4 -4
  18. package/out/{inspector-IU2HG74I.js → inspector-GP3CBZRU.js} +1 -1
  19. package/out/inspector-GP3CBZRU.js.map +7 -0
  20. package/out/{lazy-inspector-OXIFYSSQ.js → lazy-inspector-4CO3DXP5.js} +9 -8
  21. package/out/lazy-inspector-4CO3DXP5.js.map +7 -0
  22. package/out/op-sqlite.js +3 -3
  23. package/out/react-native.js +4 -4
  24. package/out/react.js +63 -49
  25. package/out/react.js.map +2 -2
  26. package/out/replicache/src/kv/sqlite-store.d.ts +7 -1
  27. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  28. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  29. package/out/replicache/src/replicache-options.d.ts +3 -2
  30. package/out/replicache/src/replicache-options.d.ts.map +1 -1
  31. package/out/replicache/src/sqlite.d.ts +1 -1
  32. package/out/replicache/src/sqlite.d.ts.map +1 -1
  33. package/out/shared/src/error.d.ts +4 -0
  34. package/out/shared/src/error.d.ts.map +1 -0
  35. package/out/shared/src/error.js +70 -0
  36. package/out/shared/src/error.js.map +1 -0
  37. package/out/solid.js +52 -24
  38. package/out/solid.js.map +2 -2
  39. package/out/sqlite.js +5 -3
  40. package/out/z2s/src/compiler.d.ts +2 -2
  41. package/out/z2s/src/compiler.d.ts.map +1 -1
  42. package/out/z2s/src/compiler.js.map +1 -1
  43. package/out/z2s/src/sql.d.ts +1 -1
  44. package/out/z2s/src/sql.d.ts.map +1 -1
  45. package/out/zero/package.json +5 -3
  46. package/out/zero/src/zero-out.d.ts +3 -0
  47. package/out/zero/src/zero-out.d.ts.map +1 -0
  48. package/out/zero/src/zero-out.js +13 -0
  49. package/out/zero/src/zero-out.js.map +1 -0
  50. package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
  51. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  52. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  53. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  54. package/out/zero-cache/src/auth/write-authorizer.js +36 -12
  55. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  56. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  57. package/out/zero-cache/src/custom/fetch.js +8 -7
  58. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  59. package/out/zero-cache/src/custom-queries/transform-query.d.ts +3 -3
  60. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  61. package/out/zero-cache/src/custom-queries/transform-query.js +6 -7
  62. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  63. package/out/zero-cache/src/scripts/decommission.d.ts +50 -0
  64. package/out/zero-cache/src/scripts/decommission.d.ts.map +1 -0
  65. package/out/zero-cache/src/scripts/decommission.js +51 -0
  66. package/out/zero-cache/src/scripts/decommission.js.map +1 -0
  67. package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
  68. package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
  69. package/out/zero-cache/src/scripts/permissions.js +2 -2
  70. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  71. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  72. package/out/zero-cache/src/server/change-streamer.js +7 -10
  73. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  74. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
  75. package/out/zero-cache/src/server/inspector-delegate.js +2 -1
  76. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  77. package/out/zero-cache/src/services/analyze.d.ts +2 -6
  78. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  79. package/out/zero-cache/src/services/analyze.js +4 -3
  80. package/out/zero-cache/src/services/analyze.js.map +1 -1
  81. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
  82. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
  83. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +15 -15
  84. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  85. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
  86. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
  87. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +52 -0
  88. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
  89. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  90. package/out/zero-cache/src/services/change-streamer/storer.js +15 -1
  91. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  92. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -2
  93. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  94. package/out/zero-cache/src/services/change-streamer/subscriber.js +16 -11
  95. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  96. package/out/zero-cache/src/services/mutagen/pusher.d.ts +19 -21
  97. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  98. package/out/zero-cache/src/services/mutagen/pusher.js +11 -12
  99. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  100. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  101. package/out/zero-cache/src/services/run-ast.js +1 -0
  102. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  103. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  104. package/out/zero-cache/src/services/view-syncer/cvr-store.js +41 -14
  105. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  106. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  107. package/out/zero-cache/src/services/view-syncer/cvr.js +5 -4
  108. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  109. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +1 -0
  110. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
  111. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +5 -0
  112. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  113. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +1 -1
  114. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  115. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +81 -2
  116. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  117. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  118. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +24 -2
  119. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  120. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  121. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +4 -2
  122. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  123. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  124. package/out/zero-cache/src/services/view-syncer/schema/init.js +25 -0
  125. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  126. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +7 -0
  127. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  128. package/out/zero-cache/src/services/view-syncer/view-syncer.js +54 -6
  129. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  130. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  131. package/out/zero-cache/src/types/error-with-level.js +8 -3
  132. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  133. package/out/zero-cache/src/types/streams.d.ts +1 -1
  134. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  135. package/out/zero-cache/src/types/streams.js +19 -9
  136. package/out/zero-cache/src/types/streams.js.map +1 -1
  137. package/out/zero-cache/src/types/subscription.d.ts +16 -1
  138. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  139. package/out/zero-cache/src/types/subscription.js +41 -5
  140. package/out/zero-cache/src/types/subscription.js.map +1 -1
  141. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  142. package/out/zero-cache/src/workers/syncer.js +1 -3
  143. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  144. package/out/zero-client/src/client/bindings.d.ts +42 -0
  145. package/out/zero-client/src/client/bindings.d.ts.map +1 -0
  146. package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
  147. package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
  148. package/out/zero-client/src/client/connection-manager.d.ts +28 -13
  149. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  150. package/out/zero-client/src/client/connection-status-enum.d.ts +2 -0
  151. package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
  152. package/out/zero-client/src/client/connection.d.ts +11 -3
  153. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  154. package/out/zero-client/src/client/context.d.ts +12 -10
  155. package/out/zero-client/src/client/context.d.ts.map +1 -1
  156. package/out/zero-client/src/client/crud.d.ts +1 -1
  157. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  158. package/out/zero-client/src/client/custom.d.ts +39 -16
  159. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  160. package/out/zero-client/src/client/error.d.ts +50 -166
  161. package/out/zero-client/src/client/error.d.ts.map +1 -1
  162. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
  163. package/out/zero-client/src/client/inspector/inspector.d.ts +3 -2
  164. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  165. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
  166. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  167. package/out/zero-client/src/client/mutation-tracker.d.ts +10 -2
  168. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  169. package/out/zero-client/src/client/mutator-proxy.d.ts +16 -0
  170. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
  171. package/out/zero-client/src/client/options.d.ts +45 -22
  172. package/out/zero-client/src/client/options.d.ts.map +1 -1
  173. package/out/zero-client/src/client/query-manager.d.ts +9 -2
  174. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  175. package/out/zero-client/src/client/zero-log-context.d.ts +3 -3
  176. package/out/zero-client/src/client/zero-log-context.d.ts.map +1 -1
  177. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  178. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  179. package/out/zero-client/src/client/zero-rep.d.ts +7 -4
  180. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  181. package/out/zero-client/src/client/zero.d.ts +88 -18
  182. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  183. package/out/zero-client/src/mod.d.ts +17 -9
  184. package/out/zero-client/src/mod.d.ts.map +1 -1
  185. package/out/zero-client/src/types/query-result.d.ts +24 -0
  186. package/out/zero-client/src/types/query-result.d.ts.map +1 -0
  187. package/out/zero-protocol/src/analyze-query-result.d.ts +1 -0
  188. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  189. package/out/zero-protocol/src/analyze-query-result.js +1 -0
  190. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  191. package/out/zero-protocol/src/application-error.d.ts +27 -0
  192. package/out/zero-protocol/src/application-error.d.ts.map +1 -0
  193. package/out/zero-protocol/src/application-error.js +40 -0
  194. package/out/zero-protocol/src/application-error.js.map +1 -0
  195. package/out/zero-protocol/src/custom-queries.d.ts +27 -95
  196. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  197. package/out/zero-protocol/src/custom-queries.js +9 -24
  198. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  199. package/out/zero-protocol/src/down.d.ts +8 -9
  200. package/out/zero-protocol/src/down.d.ts.map +1 -1
  201. package/out/zero-protocol/src/error.d.ts +42 -0
  202. package/out/zero-protocol/src/error.d.ts.map +1 -1
  203. package/out/zero-protocol/src/error.js +7 -0
  204. package/out/zero-protocol/src/error.js.map +1 -1
  205. package/out/zero-protocol/src/inspect-down.d.ts +3 -0
  206. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  207. package/out/zero-protocol/src/mutations-patch.d.ts +3 -0
  208. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  209. package/out/zero-protocol/src/poke.d.ts +2 -0
  210. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  211. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  212. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  213. package/out/zero-protocol/src/protocol-version.js +3 -1
  214. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  215. package/out/zero-protocol/src/push.d.ts +7 -0
  216. package/out/zero-protocol/src/push.d.ts.map +1 -1
  217. package/out/zero-protocol/src/push.js +1 -0
  218. package/out/zero-protocol/src/push.js.map +1 -1
  219. package/out/zero-react/src/components/inspector.d.ts +1 -1
  220. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  221. package/out/zero-react/src/components/zero-inspector.d.ts +1 -1
  222. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  223. package/out/zero-react/src/mod.d.ts +6 -2
  224. package/out/zero-react/src/mod.d.ts.map +1 -1
  225. package/out/zero-react/src/use-query.d.ts +7 -26
  226. package/out/zero-react/src/use-query.d.ts.map +1 -1
  227. package/out/zero-react/src/zero-provider.d.ts +7 -7
  228. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  229. package/out/zero-schema/src/builder/schema-builder.d.ts +1 -3
  230. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  231. package/out/zero-schema/src/permissions.d.ts +1 -1
  232. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  233. package/out/zero-schema/src/schema-config.d.ts +1 -1
  234. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  235. package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
  236. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  237. package/out/zero-server/src/adapters/drizzle.js +4 -0
  238. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  239. package/out/zero-server/src/adapters/pg.d.ts +8 -3
  240. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  241. package/out/zero-server/src/adapters/pg.js +4 -0
  242. package/out/zero-server/src/adapters/pg.js.map +1 -1
  243. package/out/zero-server/src/adapters/postgresjs.d.ts +8 -3
  244. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  245. package/out/zero-server/src/adapters/postgresjs.js +4 -0
  246. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  247. package/out/zero-server/src/custom.d.ts +11 -8
  248. package/out/zero-server/src/custom.d.ts.map +1 -1
  249. package/out/zero-server/src/custom.js +15 -3
  250. package/out/zero-server/src/custom.js.map +1 -1
  251. package/out/zero-server/src/mod.d.ts +4 -4
  252. package/out/zero-server/src/mod.d.ts.map +1 -1
  253. package/out/zero-server/src/mod.js +4 -4
  254. package/out/zero-server/src/mod.js.map +1 -1
  255. package/out/zero-server/src/pg-query-executor.d.ts +11 -0
  256. package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
  257. package/out/zero-server/src/pg-query-executor.js +17 -0
  258. package/out/zero-server/src/pg-query-executor.js.map +1 -0
  259. package/out/zero-server/src/process-mutations.d.ts +2 -1
  260. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  261. package/out/zero-server/src/process-mutations.js +181 -68
  262. package/out/zero-server/src/process-mutations.js.map +1 -1
  263. package/out/zero-server/src/queries/process-queries.d.ts +6 -5
  264. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  265. package/out/zero-server/src/queries/process-queries.js +87 -19
  266. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  267. package/out/zero-server/src/schema.d.ts +2 -2
  268. package/out/zero-server/src/schema.d.ts.map +1 -1
  269. package/out/zero-server/src/schema.js.map +1 -1
  270. package/out/zero-server/src/zql-database.d.ts +6 -3
  271. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  272. package/out/zero-server/src/zql-database.js +17 -19
  273. package/out/zero-server/src/zql-database.js.map +1 -1
  274. package/out/zero-solid/src/mod.d.ts +8 -0
  275. package/out/zero-solid/src/mod.d.ts.map +1 -1
  276. package/out/zero-solid/src/solid-view.d.ts +3 -23
  277. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  278. package/out/zero-solid/src/use-query.d.ts +4 -4
  279. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  280. package/out/zero-solid/src/use-zero.d.ts +8 -7
  281. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  282. package/out/zero-types/src/server-schema.d.ts.map +1 -0
  283. package/out/zero-types/src/server-schema.js.map +1 -0
  284. package/out/zero.js +31 -14
  285. package/out/zql/src/builder/builder.d.ts +6 -0
  286. package/out/zql/src/builder/builder.d.ts.map +1 -1
  287. package/out/zql/src/builder/builder.js +1 -1
  288. package/out/zql/src/builder/builder.js.map +1 -1
  289. package/out/zql/src/builder/debug-delegate.d.ts +4 -0
  290. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  291. package/out/zql/src/builder/debug-delegate.js +17 -0
  292. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  293. package/out/zql/src/ivm/view.d.ts +3 -2
  294. package/out/zql/src/ivm/view.d.ts.map +1 -1
  295. package/out/zql/src/mutate/custom.d.ts +13 -8
  296. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  297. package/out/zql/src/mutate/custom.js.map +1 -1
  298. package/out/zql/src/planner/planner-builder.d.ts +2 -1
  299. package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
  300. package/out/zql/src/planner/planner-builder.js +33 -8
  301. package/out/zql/src/planner/planner-builder.js.map +1 -1
  302. package/out/zql/src/planner/planner-connection.d.ts +9 -3
  303. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  304. package/out/zql/src/planner/planner-connection.js +38 -82
  305. package/out/zql/src/planner/planner-connection.js.map +1 -1
  306. package/out/zql/src/planner/planner-debug.d.ts +37 -7
  307. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  308. package/out/zql/src/planner/planner-debug.js +131 -80
  309. package/out/zql/src/planner/planner-debug.js.map +1 -1
  310. package/out/zql/src/planner/planner-fan-in.d.ts +5 -3
  311. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  312. package/out/zql/src/planner/planner-fan-in.js +41 -23
  313. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  314. package/out/zql/src/planner/planner-fan-out.d.ts +5 -3
  315. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  316. package/out/zql/src/planner/planner-fan-out.js +22 -5
  317. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  318. package/out/zql/src/planner/planner-graph.d.ts +2 -2
  319. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  320. package/out/zql/src/planner/planner-graph.js +18 -49
  321. package/out/zql/src/planner/planner-graph.js.map +1 -1
  322. package/out/zql/src/planner/planner-join.d.ts +61 -6
  323. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  324. package/out/zql/src/planner/planner-join.js +156 -69
  325. package/out/zql/src/planner/planner-join.js.map +1 -1
  326. package/out/zql/src/planner/planner-node.d.ts +29 -2
  327. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  328. package/out/zql/src/planner/planner-source.d.ts +1 -1
  329. package/out/zql/src/planner/planner-source.d.ts.map +1 -1
  330. package/out/zql/src/planner/planner-source.js +2 -2
  331. package/out/zql/src/planner/planner-source.js.map +1 -1
  332. package/out/zql/src/planner/planner-terminus.d.ts +4 -3
  333. package/out/zql/src/planner/planner-terminus.d.ts.map +1 -1
  334. package/out/zql/src/planner/planner-terminus.js +4 -4
  335. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  336. package/out/zql/src/query/chained-query.d.ts +35 -0
  337. package/out/zql/src/query/chained-query.d.ts.map +1 -0
  338. package/out/zql/src/query/chained-query.js +66 -0
  339. package/out/zql/src/query/chained-query.js.map +1 -0
  340. package/out/zql/src/query/define-query.d.ts +51 -0
  341. package/out/zql/src/query/define-query.d.ts.map +1 -0
  342. package/out/zql/src/query/define-query.js +53 -0
  343. package/out/zql/src/query/define-query.js.map +1 -0
  344. package/out/zql/src/query/error.d.ts +4 -0
  345. package/out/zql/src/query/error.d.ts.map +1 -0
  346. package/out/zql/src/query/error.js +9 -0
  347. package/out/zql/src/query/error.js.map +1 -0
  348. package/out/zql/src/query/named.d.ts +18 -7
  349. package/out/zql/src/query/named.d.ts.map +1 -1
  350. package/out/zql/src/query/named.js +39 -13
  351. package/out/zql/src/query/named.js.map +1 -1
  352. package/out/zql/src/query/query-delegate-base.d.ts +122 -0
  353. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
  354. package/out/zql/src/query/query-delegate-base.js +136 -0
  355. package/out/zql/src/query/query-delegate-base.js.map +1 -0
  356. package/out/zql/src/query/query-delegate.d.ts +29 -4
  357. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  358. package/out/zql/src/query/query-impl.d.ts +27 -48
  359. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  360. package/out/zql/src/query/query-impl.js +155 -175
  361. package/out/zql/src/query/query-impl.js.map +1 -1
  362. package/out/zql/src/query/query-internals.d.ts +70 -0
  363. package/out/zql/src/query/query-internals.d.ts.map +1 -0
  364. package/out/zql/src/query/query-internals.js +21 -0
  365. package/out/zql/src/query/query-internals.js.map +1 -0
  366. package/out/zql/src/query/query.d.ts +26 -243
  367. package/out/zql/src/query/query.d.ts.map +1 -1
  368. package/out/zql/src/query/query.js +0 -1
  369. package/out/zql/src/query/query.js.map +1 -1
  370. package/out/zql/src/query/root-named-query.d.ts +33 -0
  371. package/out/zql/src/query/root-named-query.d.ts.map +1 -0
  372. package/out/zql/src/query/root-named-query.js +95 -0
  373. package/out/zql/src/query/root-named-query.js.map +1 -0
  374. package/out/zql/src/query/static-query.d.ts +5 -14
  375. package/out/zql/src/query/static-query.d.ts.map +1 -1
  376. package/out/zql/src/query/static-query.js +7 -17
  377. package/out/zql/src/query/static-query.js.map +1 -1
  378. package/out/zqlite/src/db.d.ts +2 -1
  379. package/out/zqlite/src/db.d.ts.map +1 -1
  380. package/out/zqlite/src/db.js +2 -0
  381. package/out/zqlite/src/db.js.map +1 -1
  382. package/out/zqlite/src/query-delegate.d.ts +6 -20
  383. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  384. package/out/zqlite/src/query-delegate.js +5 -29
  385. package/out/zqlite/src/query-delegate.js.map +1 -1
  386. package/out/zqlite/src/table-source.d.ts.map +1 -1
  387. package/out/zqlite/src/table-source.js +16 -0
  388. package/out/zqlite/src/table-source.js.map +1 -1
  389. package/package.json +5 -3
  390. package/out/chunk-55BOUNXO.js +0 -356
  391. package/out/chunk-55BOUNXO.js.map +0 -7
  392. package/out/chunk-AIPM77UE.js.map +0 -7
  393. package/out/chunk-ASRS2LFV.js +0 -35
  394. package/out/chunk-ASRS2LFV.js.map +0 -7
  395. package/out/chunk-ECUMGQGC.js.map +0 -7
  396. package/out/chunk-EZM3XBAB.js.map +0 -7
  397. package/out/chunk-TJFNGO7E.js.map +0 -7
  398. package/out/inspector-IU2HG74I.js.map +0 -7
  399. package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
  400. package/out/zero-client/src/client/on-error.d.ts +0 -15
  401. package/out/zero-client/src/client/on-error.d.ts.map +0 -1
  402. package/out/zero-schema/src/builder/relationship-builder.js +0 -24
  403. package/out/zero-schema/src/builder/relationship-builder.js.map +0 -1
  404. package/out/zero-schema/src/builder/schema-builder.js +0 -78
  405. package/out/zero-schema/src/builder/schema-builder.js.map +0 -1
  406. package/out/zero-schema/src/builder/table-builder.js +0 -128
  407. package/out/zero-schema/src/builder/table-builder.js.map +0 -1
  408. package/out/zero-schema/src/server-schema.d.ts.map +0 -1
  409. package/out/zero-schema/src/server-schema.js.map +0 -1
  410. package/out/zero-server/src/query.d.ts +0 -22
  411. package/out/zero-server/src/query.d.ts.map +0 -1
  412. package/out/zero-server/src/query.js +0 -61
  413. package/out/zero-server/src/query.js.map +0 -1
  414. /package/out/{chunk-ZZXMKAAG.js.map → chunk-5H7WNLPK.js.map} +0 -0
  415. /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
  416. /package/out/{zero-schema → zero-types}/src/server-schema.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"planner-fan-in.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-in.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY;;IACvB,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;gBAKtB,MAAM,EAAE,WAAW,EAAE;IAKjC,IAAI,IAAI,iBAEP;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,KAAK;IAIL,YAAY,IAAI,IAAI;IAIpB;;;OAGG;IACH,+BAA+B,IAAI,IAAI;IAavC,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;IAmFpD,oBAAoB,CAClB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,IAAI,EAAE,WAAW,GAChB,IAAI;CAsBR"}
1
+ {"version":3,"file":"planner-fan-in.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-in.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY;;IACvB,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;gBAKtB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE;IAK3D,IAAI,IAAI,iBAEP;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,KAAK;IAIL,YAAY,IAAI,IAAI;IAIpB;;;OAGG;IACH,+BAA+B,IAAI,IAAI;IAavC,YAAY,CACV,0BAA0B,EAAE,MAAM,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IAuGf,oBAAoB,CAClB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI;CAyCR"}
@@ -55,37 +55,39 @@ export class PlannerFanIn {
55
55
  }
56
56
  }
57
57
  }
58
- estimateCost(branchPattern) {
58
+ estimateCost(downstreamChildSelectivity, branchPattern, planDebugger) {
59
59
  // FanIn always sums costs of its inputs
60
60
  // But it needs to pass the correct branch pattern to each input
61
61
  let totalCost = {
62
- rows: 0,
63
- runningCost: 0,
62
+ returnedRows: 0,
63
+ cost: 0,
64
+ scanEst: 0,
64
65
  startupCost: 0,
65
66
  selectivity: 0,
66
67
  limit: undefined,
67
68
  };
68
- branchPattern = branchPattern ?? [];
69
69
  if (this.#type === 'FI') {
70
70
  // Normal FanIn: all inputs get the same branch pattern with 0 prepended
71
71
  const updatedPattern = [0, ...branchPattern];
72
72
  let maxrows = 0;
73
73
  let maxRunningCost = 0;
74
74
  let maxStartupCost = 0;
75
- // Track complement probability for OR selectivity: P(A OR B) = 1 - (1-A)(1-B)
75
+ let maxScanEst = 0;
76
76
  let noMatchProb = 1.0;
77
77
  for (const input of this.#inputs) {
78
- const cost = input.estimateCost(updatedPattern);
79
- if (cost.rows > maxrows) {
80
- maxrows = cost.rows;
78
+ const cost = input.estimateCost(downstreamChildSelectivity, updatedPattern, planDebugger);
79
+ if (cost.returnedRows > maxrows) {
80
+ maxrows = cost.returnedRows;
81
81
  }
82
- if (cost.runningCost > maxRunningCost) {
83
- maxRunningCost = cost.runningCost;
82
+ if (cost.cost > maxRunningCost) {
83
+ maxRunningCost = cost.cost;
84
84
  }
85
- // FI fetches from the root only once, so take the max startup cost
86
85
  if (cost.startupCost > maxStartupCost) {
87
86
  maxStartupCost = cost.startupCost;
88
87
  }
88
+ if (cost.scanEst > maxScanEst) {
89
+ maxScanEst = cost.scanEst;
90
+ }
89
91
  // OR branches: combine selectivities assuming independent events
90
92
  // P(A OR B) = 1 - (1-A)(1-B)
91
93
  // Track probability of NO match in any branch
@@ -94,23 +96,23 @@ export class PlannerFanIn {
94
96
  assert(totalCost.limit === undefined || cost.limit === totalCost.limit, 'All FanIn inputs should have the same limit');
95
97
  totalCost.limit = cost.limit;
96
98
  }
97
- totalCost.rows = maxrows;
98
- totalCost.runningCost = maxRunningCost;
99
- totalCost.startupCost = maxStartupCost;
99
+ totalCost.returnedRows = maxrows;
100
+ totalCost.cost = maxRunningCost;
100
101
  totalCost.selectivity = 1 - noMatchProb;
102
+ totalCost.startupCost = maxStartupCost;
103
+ totalCost.scanEst = maxScanEst;
101
104
  }
102
105
  else {
103
106
  // Union FanIn (UFI): each input gets unique branch pattern
104
107
  let i = 0;
105
- // Track complement probability for OR selectivity: P(A OR B) = 1 - (1-A)(1-B)
106
108
  let noMatchProb = 1.0;
107
109
  for (const input of this.#inputs) {
108
110
  const updatedPattern = [i, ...branchPattern];
109
- const cost = input.estimateCost(updatedPattern);
110
- totalCost.rows += cost.rows;
111
- totalCost.runningCost += cost.runningCost;
112
- // UFI runs all branches, so startup costs add up
113
- totalCost.startupCost += cost.startupCost;
111
+ const cost = input.estimateCost(downstreamChildSelectivity, updatedPattern, planDebugger);
112
+ totalCost.returnedRows += cost.returnedRows;
113
+ totalCost.cost += cost.cost;
114
+ totalCost.scanEst += cost.scanEst;
115
+ totalCost.startupCost = totalCost.startupCost + cost.startupCost;
114
116
  // OR branches: combine selectivities assuming independent events
115
117
  // P(A OR B) = 1 - (1-A)(1-B)
116
118
  // Track probability of NO match in any branch
@@ -122,9 +124,25 @@ export class PlannerFanIn {
122
124
  }
123
125
  totalCost.selectivity = 1 - noMatchProb;
124
126
  }
127
+ planDebugger?.log({
128
+ type: 'node-cost',
129
+ nodeType: 'fan-in',
130
+ node: this.#type,
131
+ branchPattern,
132
+ downstreamChildSelectivity,
133
+ costEstimate: totalCost,
134
+ });
125
135
  return totalCost;
126
136
  }
127
- propagateConstraints(branchPattern, constraint, from) {
137
+ propagateConstraints(branchPattern, constraint, from, planDebugger) {
138
+ planDebugger?.log({
139
+ type: 'node-constraint',
140
+ nodeType: 'fan-in',
141
+ node: this.#type,
142
+ branchPattern,
143
+ constraint,
144
+ from: from?.kind ?? 'unknown',
145
+ });
128
146
  if (this.#type === 'FI') {
129
147
  const updatedPattern = [0, ...branchPattern];
130
148
  /**
@@ -135,13 +153,13 @@ export class PlannerFanIn {
135
153
  * to send to their children.
136
154
  */
137
155
  for (const input of this.#inputs) {
138
- input.propagateConstraints(updatedPattern, constraint, from);
156
+ input.propagateConstraints(updatedPattern, constraint, this, planDebugger);
139
157
  }
140
158
  return;
141
159
  }
142
160
  let i = 0;
143
161
  for (const input of this.#inputs) {
144
- input.propagateConstraints([i, ...branchPattern], constraint, from);
162
+ input.propagateConstraints([i, ...branchPattern], constraint, this, planDebugger);
145
163
  i++;
146
164
  }
147
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"planner-fan-in.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-in.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner-fan-in.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-in.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,17 @@
1
1
  import type { PlannerConstraint } from './planner-constraint.ts';
2
+ import type { PlanDebugger } from './planner-debug.ts';
2
3
  import type { CostEstimate, JoinOrConnection, PlannerNode } from './planner-node.ts';
4
+ import type { PlannerTerminus } from './planner-terminus.ts';
3
5
  export declare class PlannerFanOut {
4
6
  #private;
5
7
  readonly kind: "fan-out";
6
- constructor(input: PlannerNode);
8
+ constructor(input: Exclude<PlannerNode, PlannerTerminus>);
7
9
  get type(): "FO" | "UFO";
8
10
  addOutput(node: PlannerNode): void;
9
11
  get outputs(): PlannerNode[];
10
12
  closestJoinOrSource(): JoinOrConnection;
11
- propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined, _from: PlannerNode): void;
12
- estimateCost(branchPattern?: number[]): CostEstimate;
13
+ propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined, from?: PlannerNode, planDebugger?: PlanDebugger): void;
14
+ estimateCost(downstreamChildSelectivity: number, branchPattern: number[], planDebugger?: PlanDebugger): CostEstimate;
13
15
  convertToUFO(): void;
14
16
  reset(): void;
15
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"planner-fan-out.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-out.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,aAAa;;IACxB,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;gBAKvB,KAAK,EAAE,WAAW;IAK9B,IAAI,IAAI,iBAEP;IAED,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,OAAO,IAAI,WAAW,EAAE,CAE3B;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,oBAAoB,CAClB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,KAAK,EAAE,WAAW,GACjB,IAAI;IAIP,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;IAIpD,YAAY,IAAI,IAAI;IAIpB,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,+BAA+B,IAAI,IAAI;CAUxC"}
1
+ {"version":3,"file":"planner-fan-out.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-out.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D,qBAAa,aAAa;;IACxB,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;gBAKvB,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC;IAKxD,IAAI,IAAI,iBAEP;IAED,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,OAAO,IAAI,WAAW,EAAE,CAE3B;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,oBAAoB,CAClB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI;IAkBP,YAAY,CACV,0BAA0B,EAAE,MAAM,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IAmBf,YAAY,IAAI,IAAI;IAIpB,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,+BAA+B,IAAI,IAAI;CAUxC"}
@@ -19,11 +19,28 @@ export class PlannerFanOut {
19
19
  closestJoinOrSource() {
20
20
  return this.#input.closestJoinOrSource();
21
21
  }
22
- propagateConstraints(branchPattern, constraint, _from) {
23
- this.#input.propagateConstraints(branchPattern, constraint, this);
24
- }
25
- estimateCost(branchPattern) {
26
- return this.#input.estimateCost(branchPattern);
22
+ propagateConstraints(branchPattern, constraint, from, planDebugger) {
23
+ planDebugger?.log({
24
+ type: 'node-constraint',
25
+ nodeType: 'fan-out',
26
+ node: 'FO',
27
+ branchPattern,
28
+ constraint,
29
+ from: from?.kind ?? 'unknown',
30
+ });
31
+ this.#input.propagateConstraints(branchPattern, constraint, this, planDebugger);
32
+ }
33
+ estimateCost(downstreamChildSelectivity, branchPattern, planDebugger) {
34
+ const ret = this.#input.estimateCost(downstreamChildSelectivity, branchPattern, planDebugger);
35
+ planDebugger?.log({
36
+ type: 'node-cost',
37
+ nodeType: 'fan-out',
38
+ node: 'FO',
39
+ branchPattern,
40
+ downstreamChildSelectivity,
41
+ costEstimate: ret,
42
+ });
43
+ return ret;
27
44
  }
28
45
  convertToUFO() {
29
46
  this.#type = 'UFO';
@@ -1 +1 @@
1
- {"version":3,"file":"planner-fan-out.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-out.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,aAAa;IACf,IAAI,GAAG,SAAkB,CAAC;IACnC,KAAK,CAAe;IACX,QAAQ,GAAkB,EAAE,CAAC;IAC7B,MAAM,CAAc;IAE7B,YAAY,KAAkB;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,IAAiB;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAED,oBAAoB,CAClB,aAAuB,EACvB,UAAyC,EACzC,KAAkB;QAElB,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,YAAY,CAAC,aAAwB;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,+BAA+B;QAC7B,IACE,iCAAiC,IAAI,IAAI,CAAC,MAAM;YAChD,OAAO,IAAI,CAAC,MAAM,CAAC,+BAA+B,KAAK,UAAU,EACjE,CAAC;YAEC,IAAI,CAAC,MACN,CAAC,+BAA+B,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"planner-fan-out.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-out.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,aAAa;IACf,IAAI,GAAG,SAAkB,CAAC;IACnC,KAAK,CAAe;IACX,QAAQ,GAAkB,EAAE,CAAC;IAC7B,MAAM,CAAwC;IAEvD,YAAY,KAA4C;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,IAAiB;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAED,oBAAoB,CAClB,aAAuB,EACvB,UAAyC,EACzC,IAAkB,EAClB,YAA2B;QAE3B,YAAY,EAAE,GAAG,CAAC;YAChB,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,IAAI;YACV,aAAa;YACb,UAAU;YACV,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAC9B,aAAa,EACb,UAAU,EACV,IAAI,EACJ,YAAY,CACb,CAAC;IACJ,CAAC;IAED,YAAY,CACV,0BAAkC,EAClC,aAAuB,EACvB,YAA2B;QAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAClC,0BAA0B,EAC1B,aAAa,EACb,YAAY,CACb,CAAC;QAEF,YAAY,EAAE,GAAG,CAAC;YAChB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,IAAI;YACV,aAAa;YACb,0BAA0B;YAC1B,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,YAAY;QACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,+BAA+B;QAC7B,IACE,iCAAiC,IAAI,IAAI,CAAC,MAAM;YAChD,OAAO,IAAI,CAAC,MAAM,CAAC,+BAA+B,KAAK,UAAU,EACjE,CAAC;YAEC,IAAI,CAAC,MACN,CAAC,+BAA+B,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;CACF"}
@@ -59,12 +59,12 @@ export declare class PlannerGraph {
59
59
  * This sends constraints up through the graph to update
60
60
  * connection cost estimates.
61
61
  */
62
- propagateConstraints(): void;
62
+ propagateConstraints(planDebugger?: PlanDebugger): void;
63
63
  /**
64
64
  * Calculate total cost of the current plan.
65
65
  * Total cost includes both startup cost (one-time, e.g., sorting) and running cost.
66
66
  */
67
- getTotalCost(): number;
67
+ getTotalCost(planDebugger?: PlanDebugger): number;
68
68
  /**
69
69
  * Capture a lightweight snapshot of the current planning state.
70
70
  * Used for backtracking during multi-start greedy search.
@@ -1 +1 @@
1
- {"version":3,"file":"planner-graph.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,aAAa,EAAE,KAAK,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC,CAAC,CAAC;IAChD,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAA;KAAC,CAAC,CAAC;IACrC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAA;KAAC,CAAC,CAAC;IACpC,qBAAqB,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC;CAC1E,CAAC;AAkBF,qBAAa,YAAY;;IAQvB,KAAK,EAAE,WAAW,EAAE,CAAM;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAM;IAC5B,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAEtC;;;;;OAKG;IACH,kBAAkB;IAOlB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,aAAa;IAUlE;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAMtC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI5C;;;;OAIG;IACH,oBAAoB,IAAI,IAAI;IAQ5B;;;OAGG;IACH,YAAY,IAAI,MAAM;IAKtB;;;;;;;;OAQG;IACH,uBAAuB,IAAI,SAAS;IAYpC;;;;;;;;OAQG;IACH,uBAAuB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAuI/C;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;CA8HxC"}
1
+ {"version":3,"file":"planner-graph.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,aAAa,EAAE,KAAK,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC,CAAC,CAAC;IAChD,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAA;KAAC,CAAC,CAAC;IACrC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAA;KAAC,CAAC,CAAC;IACpC,qBAAqB,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC;CAC1E,CAAC;AAkBF,qBAAa,YAAY;;IAQvB,KAAK,EAAE,WAAW,EAAE,CAAM;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAM;IAC5B,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAEtC;;;;;OAKG;IACH,kBAAkB;IAOlB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,aAAa;IAUlE;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAMtC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI5C;;;;OAIG;IACH,oBAAoB,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;IAQvD;;;OAGG;IACH,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM;IAKjD;;;;;;;;OAQG;IACH,uBAAuB,IAAI,SAAS;IAYpC;;;;;;;;OAQG;IACH,uBAAuB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAkF/C;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;CAsIxC"}
@@ -6,7 +6,7 @@ import { must } from "../../../shared/src/must.js";
6
6
  * With n flippable joins, we explore 2^n plans.
7
7
  * 10 joins = 1024 plans (~100-200ms), 12 joins = 4096 plans (~400ms - 1 second)
8
8
  */
9
- const MAX_FLIPPABLE_JOINS = 13;
9
+ const MAX_FLIPPABLE_JOINS = 9;
10
10
  export class PlannerGraph {
11
11
  // Sources indexed by table name
12
12
  #sources = new Map();
@@ -68,17 +68,17 @@ export class PlannerGraph {
68
68
  * This sends constraints up through the graph to update
69
69
  * connection cost estimates.
70
70
  */
71
- propagateConstraints() {
71
+ propagateConstraints(planDebugger) {
72
72
  assert(this.#terminus !== undefined, 'Cannot propagate constraints without a terminus node');
73
- this.#terminus.propagateConstraints();
73
+ this.#terminus.propagateConstraints(planDebugger);
74
74
  }
75
75
  /**
76
76
  * Calculate total cost of the current plan.
77
77
  * Total cost includes both startup cost (one-time, e.g., sorting) and running cost.
78
78
  */
79
- getTotalCost() {
80
- const estimate = must(this.#terminus).estimateCost();
81
- return estimate.startupCost + estimate.runningCost;
79
+ getTotalCost(planDebugger) {
80
+ const estimate = must(this.#terminus).estimateCost(planDebugger);
81
+ return estimate.cost + estimate.startupCost;
82
82
  }
83
83
  /**
84
84
  * Capture a lightweight snapshot of the current planning state.
@@ -115,45 +115,6 @@ export class PlannerGraph {
115
115
  this.#restoreJoins(state);
116
116
  this.#restoreFanNodes(state);
117
117
  }
118
- /**
119
- * Collect cost estimates from all nodes in the graph for debugging.
120
- */
121
- #collectNodeCosts() {
122
- const costs = [];
123
- // Collect connection costs
124
- for (const c of this.connections) {
125
- costs.push({
126
- node: c.name,
127
- nodeType: 'connection',
128
- costEstimate: c.estimateCost(undefined),
129
- });
130
- }
131
- // Collect join costs
132
- for (const j of this.joins) {
133
- costs.push({
134
- node: j.getName(),
135
- nodeType: 'join',
136
- costEstimate: j.estimateCost(undefined),
137
- });
138
- }
139
- // Collect fan-out costs
140
- for (const fo of this.fanOuts) {
141
- costs.push({
142
- node: 'FO',
143
- nodeType: 'fan-out',
144
- costEstimate: fo.estimateCost(undefined),
145
- });
146
- }
147
- // Collect fan-in costs
148
- for (const fi of this.fanIns) {
149
- costs.push({
150
- node: 'FI',
151
- nodeType: 'fan-in',
152
- costEstimate: fi.estimateCost(undefined),
153
- });
154
- }
155
- return costs;
156
- }
157
118
  /**
158
119
  * Validate that snapshot shape matches current graph structure.
159
120
  */
@@ -235,7 +196,12 @@ export class PlannerGraph {
235
196
  let bestPlan = undefined;
236
197
  let bestAttemptNumber = -1;
237
198
  // Enumerate all flip patterns
199
+ // try 7 and 32 (6 and 31)
200
+ const forcePattern = undefined; // 11 14
238
201
  for (let pattern = 0; pattern < numPatterns; pattern++) {
202
+ if (forcePattern !== undefined && pattern !== forcePattern) {
203
+ continue;
204
+ }
239
205
  // Reset to initial state
240
206
  this.resetPlanningState();
241
207
  if (planDebugger) {
@@ -258,7 +224,7 @@ export class PlannerGraph {
258
224
  // Propagate unlimiting for flipped joins
259
225
  propagateUnlimitForFlippedJoins(this);
260
226
  // Propagate constraints through the graph
261
- this.propagateConstraints();
227
+ this.propagateConstraints(planDebugger);
262
228
  if (planDebugger) {
263
229
  planDebugger.log({
264
230
  type: 'constraints-propagated',
@@ -271,13 +237,15 @@ export class PlannerGraph {
271
237
  });
272
238
  }
273
239
  // Evaluate this plan
274
- const totalCost = this.getTotalCost();
240
+ const totalCost = this.getTotalCost(planDebugger);
275
241
  if (planDebugger) {
276
242
  planDebugger.log({
277
243
  type: 'plan-complete',
278
244
  attemptNumber: pattern,
279
245
  totalCost,
280
- nodeCosts: this.#collectNodeCosts(),
246
+ flipPattern: pattern, // Bitmask of which joins are flipped
247
+ // TODO: we'll need a different way to collect these
248
+ // nodeCosts: this.#collectNodeCosts(),
281
249
  joinStates: this.joins.map(j => {
282
250
  const info = j.getDebugInfo();
283
251
  return {
@@ -310,12 +278,13 @@ export class PlannerGraph {
310
278
  if (bestPlan) {
311
279
  this.restorePlanningSnapshot(bestPlan);
312
280
  // Propagate constraints to ensure all derived state is consistent
313
- this.propagateConstraints();
281
+ this.propagateConstraints(planDebugger);
314
282
  if (planDebugger) {
315
283
  planDebugger.log({
316
284
  type: 'best-plan-selected',
317
285
  bestAttemptNumber,
318
286
  totalCost: bestCost,
287
+ flipPattern: bestAttemptNumber, // The best attempt number is also the flip pattern
319
288
  joinStates: this.joins.map(j => ({
320
289
  join: j.getName(),
321
290
  type: j.type,
@@ -1 +1 @@
1
- {"version":3,"file":"planner-graph.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner-graph.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-graph.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,23 @@
1
1
  import { type PlannerConstraint } from './planner-constraint.ts';
2
+ import type { PlanDebugger } from './planner-debug.ts';
2
3
  import type { CostEstimate, JoinOrConnection, PlannerNode } from './planner-node.ts';
4
+ import type { PlannerTerminus } from './planner-terminus.ts';
5
+ /**
6
+ * Semi-join overhead multiplier.
7
+ *
8
+ * Semi-joins represent correlated subqueries (EXISTS checks) which have
9
+ * execution overhead compared to flipped joins, even when logical row counts
10
+ * are identical. This overhead comes from:
11
+ * - Need to execute a separate correlation check for each parent row
12
+ * - Cannot leverage combined constraint checking as effectively as flipped joins
13
+ *
14
+ * A multiplier of 1.5 means semi-joins are estimated to be ~50% more expensive
15
+ * than equivalent flipped joins, which empirically matches observed performance
16
+ * differences in production workloads (e.g., 1.7x in zbugs benchmarks).
17
+ *
18
+ * Flipped joins have a different overhead in that they become unlimited. This
19
+ * is accounted for when propagating unlimits rather than here.
20
+ */
3
21
  /**
4
22
  * Represents a join between two data streams (parent and child).
5
23
  *
@@ -32,7 +50,7 @@ export declare class PlannerJoin {
32
50
  #private;
33
51
  readonly kind: "join";
34
52
  readonly planId: number;
35
- constructor(parent: PlannerNode, child: PlannerNode, parentConstraint: PlannerConstraint, childConstraint: PlannerConstraint, flippable: boolean, planId: number);
53
+ constructor(parent: Exclude<PlannerNode, PlannerTerminus>, child: Exclude<PlannerNode, PlannerTerminus>, parentConstraint: PlannerConstraint, childConstraint: PlannerConstraint, flippable: boolean, planId: number, initialType?: 'semi' | 'flipped');
36
54
  setOutput(node: PlannerNode): void;
37
55
  get output(): PlannerNode;
38
56
  closestJoinOrSource(): JoinOrConnection;
@@ -41,9 +59,13 @@ export declare class PlannerJoin {
41
59
  get type(): 'semi' | 'flipped';
42
60
  isFlippable(): boolean;
43
61
  /**
44
- * Propagate unlimiting through the child subgraph when this join is flipped.
45
- * When a join is flipped, the child becomes the outer loop and should produce
46
- * all rows rather than stopping at an EXISTS limit.
62
+ * Propagate unlimiting when this join is flipped.
63
+ * When a join is flipped:
64
+ * 1. Child becomes outer loop produces all rows (unlimited)
65
+ * 2. Parent is fetched once per child row → effectively unlimited
66
+ *
67
+ * Example: If child produces 896 rows, parent is fetched 896 times.
68
+ * Even if each fetch returns 1 row, parent produces 896 total rows.
47
69
  *
48
70
  * Propagation rules:
49
71
  * - Connection: call unlimit()
@@ -58,9 +80,42 @@ export declare class PlannerJoin {
58
80
  * - Flipped join: stop propagation (already unlimited when it was flipped)
59
81
  */
60
82
  propagateUnlimitFromFlippedJoin(): void;
61
- propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined): void;
83
+ propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined, from?: PlannerNode, planDebugger?: PlanDebugger): void;
62
84
  reset(): void;
63
- estimateCost(branchPattern?: number[]): CostEstimate;
85
+ estimateCost(
86
+ /**
87
+ * This argument is to deal with consecutive `andExists` statements.
88
+ * Each one will constrain how often a parent row passes all constraints.
89
+ * This means that we have to scan more and more parent rows the more
90
+ * constraints we add.
91
+ */
92
+ downstreamChildSelectivity: number,
93
+ /**
94
+ * branchPattern uniquely identifies OR branches in the graph.
95
+ * Each path through an OR will have unique constraints to apply to the source
96
+ * connection.
97
+ * branchPattern allows us to correlate a path through the graph
98
+ * to the constraints that should be applied for that path.
99
+ *
100
+ * Example graph:
101
+ * UFO
102
+ * / \
103
+ * J1 J2
104
+ * \ /
105
+ * UFI
106
+ *
107
+ * J1 and J2 are joins inside an OR (FO).
108
+ * branchPattern [0] = path through J1
109
+ * branchPattern [1] = path through J2
110
+ *
111
+ * If many ORs are nested, branchPattern will have multiple elements
112
+ * representing each level of OR.
113
+ *
114
+ * If no joins are flipped within the `OR`, then only a single
115
+ * branchPattern element will be needed, as FO represents all sub-joins
116
+ * as a single path.
117
+ */
118
+ branchPattern: number[], planDebugger?: PlanDebugger): CostEstimate;
64
119
  /**
65
120
  * Get a human-readable name for this join for debugging.
66
121
  * Format: "parentName ⋈ childName"
@@ -1 +1 @@
1
- {"version":3,"file":"planner-join.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAoB3B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,WAAW;;IACtB,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAOhC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAOtB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,EAClB,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM;IAWhB,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAWtC,IAAI,IAAI,IAAI;IAUZ,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IACD,WAAW,IAAI,OAAO;IAItB;;;;;;;;;;OAUG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;;;OAIG;IACH,+BAA+B,IAAI,IAAI;IAOvC,oBAAoB,CAClB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,iBAAiB,GAAG,SAAS,GACxC,IAAI;IA2BP,KAAK,IAAI,IAAI;IAIb,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY;IAkDpD;;;OAGG;IACH,OAAO,IAAI,MAAM;IAMjB;;OAEG;IACH,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB;CAOF;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
1
+ {"version":3,"file":"planner-join.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAoC3D;;;;;;;;;;;;;;;GAeG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,WAAW;;IACtB,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAOhC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAQtB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAC7C,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAC5C,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAM,GAAG,SAAkB;IAY1C,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAWtC,IAAI,IAAI,IAAI;IAUZ,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IACD,WAAW,IAAI,OAAO;IAItB;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;;;OAIG;IACH,+BAA+B,IAAI,IAAI;IAOvC,oBAAoB,CAClB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI;IAuDP,KAAK,IAAI,IAAI;IAIb,YAAY;IACV;;;;;OAKG;IACH,0BAA0B,EAAE,MAAM;IAClC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IAkFf;;;OAGG;IACH,OAAO,IAAI,MAAM;IAMjB;;OAEG;IACH,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB;CAOF;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B"}