@rocicorp/zero 0.25.0-canary.4 → 0.25.0-canary.7

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 (152) hide show
  1. package/out/{chunk-HE4M4K7Q.js → chunk-FODUNUAD.js} +82 -86
  2. package/out/chunk-FODUNUAD.js.map +7 -0
  3. package/out/{chunk-ZZXMKAAG.js → chunk-HCZQVP5R.js} +2 -2
  4. package/out/{chunk-3KJ5OEIB.js → chunk-S633A55A.js} +2 -2
  5. package/out/{chunk-3KJ5OEIB.js.map → chunk-S633A55A.js.map} +1 -1
  6. package/out/{chunk-ECUMGQGC.js → chunk-WPAQ4EPM.js} +13 -3
  7. package/out/{chunk-ECUMGQGC.js.map → chunk-WPAQ4EPM.js.map} +2 -2
  8. package/out/expo-sqlite.js +2 -2
  9. package/out/op-sqlite.js +1 -1
  10. package/out/react-native.js +2 -2
  11. package/out/react.js +2 -1
  12. package/out/react.js.map +2 -2
  13. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  14. package/out/shared/src/deep-merge.d.ts +6 -3
  15. package/out/shared/src/deep-merge.d.ts.map +1 -1
  16. package/out/shared/src/options.d.ts +2 -0
  17. package/out/shared/src/options.d.ts.map +1 -1
  18. package/out/shared/src/options.js +8 -4
  19. package/out/shared/src/options.js.map +1 -1
  20. package/out/solid.js +2 -2
  21. package/out/sqlite.js +1 -1
  22. package/out/zero/package.json +3 -3
  23. package/out/zero/src/zero-cache-dev.js +59 -40
  24. package/out/zero/src/zero-cache-dev.js.map +1 -1
  25. package/out/zero-cache/src/db/mode-enum.d.ts +2 -0
  26. package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -1
  27. package/out/zero-cache/src/db/mode-enum.js +1 -0
  28. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  29. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  30. package/out/zero-cache/src/server/syncer.js +1 -1
  31. package/out/zero-cache/src/server/syncer.js.map +1 -1
  32. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
  33. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
  34. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +6 -2
  35. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  36. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +2 -2
  37. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  38. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +7 -0
  39. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  40. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -1
  41. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  42. package/out/zero-cache/src/services/change-streamer/change-streamer.js +5 -1
  43. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  44. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +58 -0
  45. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
  46. package/out/zero-cache/src/services/change-streamer/snapshot.js +19 -0
  47. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  48. package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -0
  49. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  50. package/out/zero-cache/src/services/change-streamer/storer.js +5 -0
  51. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  52. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  53. package/out/zero-cache/src/services/litestream/commands.js +43 -11
  54. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  55. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  56. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +5 -6
  57. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  58. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  59. package/out/zero-cache/src/services/view-syncer/cvr-store.js +8 -4
  60. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  61. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  62. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +95 -102
  63. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  64. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +1 -1
  65. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  66. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +6 -3
  67. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  68. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  69. package/out/zero-cache/src/services/view-syncer/view-syncer.js +4 -29
  70. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  71. package/out/zero-cache/src/types/websocket-handoff.d.ts +2 -2
  72. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  73. package/out/zero-cache/src/types/websocket-handoff.js +2 -2
  74. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  75. package/out/zero-client/src/client/connection.d.ts +2 -2
  76. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  77. package/out/zero-client/src/client/context.d.ts +2 -2
  78. package/out/zero-client/src/client/context.d.ts.map +1 -1
  79. package/out/zero-client/src/client/custom.d.ts +5 -5
  80. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  81. package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
  82. package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
  83. package/out/zero-client/src/client/metrics.d.ts +2 -2
  84. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  85. package/out/zero-client/src/client/mutation-tracker.d.ts +4 -4
  86. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  87. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
  88. package/out/zero-client/src/client/query-manager.d.ts +2 -2
  89. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  90. package/out/zero-client/src/client/reload-error-handler.d.ts +3 -3
  91. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  92. package/out/zero-client/src/client/zero-poke-handler.d.ts +2 -2
  93. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  94. package/out/zero-client/src/client/zero.d.ts +2 -2
  95. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  96. package/out/zero-client/src/mod.d.ts +1 -1
  97. package/out/zero-client/src/mod.d.ts.map +1 -1
  98. package/out/zero-react/src/mod.d.ts +1 -1
  99. package/out/zero-react/src/mod.d.ts.map +1 -1
  100. package/out/zero-react/src/zero-provider.d.ts +1 -0
  101. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  102. package/out/zero-server/src/adapters/drizzle.js +1 -1
  103. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  104. package/out/zero-server/src/adapters/pg.d.ts +1 -1
  105. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  106. package/out/zero-server/src/adapters/pg.js +1 -1
  107. package/out/zero-server/src/adapters/pg.js.map +1 -1
  108. package/out/zero-server/src/adapters/postgresjs.d.ts +1 -1
  109. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  110. package/out/zero-server/src/adapters/postgresjs.js +1 -1
  111. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  112. package/out/zero-server/src/custom.js +1 -1
  113. package/out/zero-server/src/custom.js.map +1 -1
  114. package/out/zero.js +2 -2
  115. package/out/zql/src/builder/builder.d.ts +1 -1
  116. package/out/zql/src/builder/builder.d.ts.map +1 -1
  117. package/out/zql/src/mutate/custom.d.ts +1 -1
  118. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  119. package/out/zql/src/planner/planner-connection.d.ts +7 -0
  120. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  121. package/out/zql/src/planner/planner-connection.js +2 -1
  122. package/out/zql/src/planner/planner-connection.js.map +1 -1
  123. package/out/zql/src/planner/planner-debug.d.ts +2 -1
  124. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  125. package/out/zql/src/planner/planner-debug.js.map +1 -1
  126. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  127. package/out/zql/src/planner/planner-fan-in.js +5 -0
  128. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  129. package/out/zql/src/planner/planner-graph.d.ts +1 -2
  130. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  131. package/out/zql/src/planner/planner-graph.js +49 -68
  132. package/out/zql/src/planner/planner-graph.js.map +1 -1
  133. package/out/zql/src/planner/planner-join.d.ts +6 -2
  134. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  135. package/out/zql/src/planner/planner-join.js +27 -11
  136. package/out/zql/src/planner/planner-join.js.map +1 -1
  137. package/out/zql/src/planner/planner-node.d.ts +2 -1
  138. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  139. package/out/zql/src/query/define-query.d.ts +3 -3
  140. package/out/zql/src/query/define-query.d.ts.map +1 -1
  141. package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
  142. package/out/zqlite/src/sqlite-cost-model.js +10 -3
  143. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  144. package/out/zqlite/src/sqlite-stat-fanout.d.ts +121 -0
  145. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -0
  146. package/out/zqlite/src/sqlite-stat-fanout.js +377 -0
  147. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -0
  148. package/package.json +3 -3
  149. package/out/chunk-HE4M4K7Q.js.map +0 -7
  150. package/out/zero-client/src/client/zero-log-context.d.ts +0 -7
  151. package/out/zero-client/src/client/zero-log-context.d.ts.map +0 -1
  152. /package/out/{chunk-ZZXMKAAG.js.map → chunk-HCZQVP5R.js.map} +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,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"}
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;IA4Gf,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"}
@@ -65,6 +65,9 @@ export class PlannerFanIn {
65
65
  startupCost: 0,
66
66
  selectivity: 0,
67
67
  limit: undefined,
68
+ fanout: () => {
69
+ throw new Error('Failed to set fanout model');
70
+ },
68
71
  };
69
72
  if (this.#type === 'FI') {
70
73
  // Normal FanIn: all inputs get the same branch pattern with 0 prepended
@@ -76,6 +79,7 @@ export class PlannerFanIn {
76
79
  let noMatchProb = 1.0;
77
80
  for (const input of this.#inputs) {
78
81
  const cost = input.estimateCost(downstreamChildSelectivity, updatedPattern, planDebugger);
82
+ totalCost.fanout = cost.fanout;
79
83
  if (cost.returnedRows > maxrows) {
80
84
  maxrows = cost.returnedRows;
81
85
  }
@@ -109,6 +113,7 @@ export class PlannerFanIn {
109
113
  for (const input of this.#inputs) {
110
114
  const updatedPattern = [i, ...branchPattern];
111
115
  const cost = input.estimateCost(downstreamChildSelectivity, updatedPattern, planDebugger);
116
+ totalCost.fanout = cost.fanout;
112
117
  totalCost.returnedRows += cost.returnedRows;
113
118
  totalCost.cost += cost.cost;
114
119
  totalCost.scanEst += cost.scanEst;
@@ -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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"}
@@ -9,7 +9,7 @@ import type { PlanDebugger } from './planner-debug.ts';
9
9
  /**
10
10
  * Captured state of a plan for comparison and restoration.
11
11
  */
12
- type PlanState = {
12
+ export type PlanState = {
13
13
  connections: Array<{
14
14
  limit: number | undefined;
15
15
  }>;
@@ -99,5 +99,4 @@ export declare class PlannerGraph {
99
99
  */
100
100
  plan(planDebugger?: PlanDebugger): void;
101
101
  }
102
- export {};
103
102
  //# sourceMappingURL=planner-graph.d.ts.map
@@ -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,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"}
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,MAAM,MAAM,SAAS,GAAG;IACtB,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;IAsF/C;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;CAqHxC"}
@@ -144,9 +144,10 @@ export class PlannerGraph {
144
144
  // Reset to initial state first
145
145
  join.reset();
146
146
  // Apply target state
147
- if (targetState.type === 'flipped') {
147
+ if (targetState.type === 'flipped' && join.type !== 'flipped') {
148
148
  join.flip();
149
149
  }
150
+ assert(targetState.type === join.type, 'join is not in the correct state after reset');
150
151
  }
151
152
  }
152
153
  /**
@@ -191,17 +192,12 @@ export class PlannerGraph {
191
192
  }
192
193
  // Build FO→FI cache once to avoid redundant BFS traversals in each iteration
193
194
  const fofiCache = buildFOFICache(this);
194
- const numPatterns = 2 ** flippableJoins.length;
195
+ const numPatterns = flippableJoins.length === 0 ? 0 : 2 ** flippableJoins.length;
195
196
  let bestCost = Infinity;
196
197
  let bestPlan = undefined;
197
198
  let bestAttemptNumber = -1;
198
199
  // Enumerate all flip patterns
199
- // try 7 and 32 (6 and 31)
200
- const forcePattern = undefined; // 11 14
201
200
  for (let pattern = 0; pattern < numPatterns; pattern++) {
202
- if (forcePattern !== undefined && pattern !== forcePattern) {
203
- continue;
204
- }
205
201
  // Reset to initial state
206
202
  this.resetPlanningState();
207
203
  if (planDebugger) {
@@ -211,67 +207,53 @@ export class PlannerGraph {
211
207
  totalAttempts: numPatterns,
212
208
  });
213
209
  }
214
- try {
215
- // Apply flip pattern (treat pattern as bitmask)
216
- // Bit i set to 1 means flip join i
217
- for (let i = 0; i < flippableJoins.length; i++) {
218
- if (pattern & (1 << i)) {
219
- flippableJoins[i].flip();
220
- }
221
- }
222
- // Derive FO/UFO and FI/UFI states from join flip states
223
- checkAndConvertFOFI(fofiCache);
224
- // Propagate unlimiting for flipped joins
225
- propagateUnlimitForFlippedJoins(this);
226
- // Propagate constraints through the graph
227
- this.propagateConstraints(planDebugger);
228
- if (planDebugger) {
229
- planDebugger.log({
230
- type: 'constraints-propagated',
231
- attemptNumber: pattern,
232
- connectionConstraints: this.connections.map(c => ({
233
- connection: c.name,
234
- constraints: c.getConstraintsForDebug(),
235
- constraintCosts: c.getConstraintCostsForDebug(),
236
- })),
237
- });
238
- }
239
- // Evaluate this plan
240
- const totalCost = this.getTotalCost(planDebugger);
241
- if (planDebugger) {
242
- planDebugger.log({
243
- type: 'plan-complete',
244
- attemptNumber: pattern,
245
- totalCost,
246
- flipPattern: pattern, // Bitmask of which joins are flipped
247
- // TODO: we'll need a different way to collect these
248
- // nodeCosts: this.#collectNodeCosts(),
249
- joinStates: this.joins.map(j => {
250
- const info = j.getDebugInfo();
251
- return {
252
- join: info.name,
253
- type: info.type,
254
- };
255
- }),
256
- });
257
- }
258
- // Track best plan
259
- if (totalCost < bestCost) {
260
- bestCost = totalCost;
261
- bestPlan = this.capturePlanningSnapshot();
262
- bestAttemptNumber = pattern;
210
+ // Apply flip pattern (treat pattern as bitmask)
211
+ // Bit i set to 1 means flip join i
212
+ for (let i = 0; i < flippableJoins.length; i++) {
213
+ if (pattern & (1 << i)) {
214
+ flippableJoins[i].flip();
263
215
  }
264
216
  }
265
- catch (e) {
266
- // This flip pattern is invalid (shouldn't happen with proper isFlippable() checks)
267
- if (planDebugger) {
268
- planDebugger.log({
269
- type: 'plan-failed',
270
- attemptNumber: pattern,
271
- reason: `Flip pattern ${pattern.toString(2)} failed: ${e instanceof Error ? e.message : String(e)}`,
272
- });
273
- }
274
- continue;
217
+ // Derive FO/UFO and FI/UFI states from join flip states
218
+ checkAndConvertFOFI(fofiCache);
219
+ // Propagate unlimiting for flipped joins
220
+ propagateUnlimitForFlippedJoins(this);
221
+ // Propagate constraints through the graph
222
+ this.propagateConstraints(planDebugger);
223
+ if (planDebugger) {
224
+ planDebugger.log({
225
+ type: 'constraints-propagated',
226
+ attemptNumber: pattern,
227
+ connectionConstraints: this.connections.map(c => ({
228
+ connection: c.name,
229
+ constraints: c.getConstraintsForDebug(),
230
+ constraintCosts: c.getConstraintCostsForDebug(),
231
+ })),
232
+ });
233
+ }
234
+ // Evaluate this plan
235
+ const totalCost = this.getTotalCost(planDebugger);
236
+ if (planDebugger) {
237
+ planDebugger.log({
238
+ type: 'plan-complete',
239
+ attemptNumber: pattern,
240
+ totalCost,
241
+ flipPattern: pattern, // Bitmask of which joins are flipped
242
+ planSnapshot: this.capturePlanningSnapshot(),
243
+ joinStates: this.joins.map(j => {
244
+ const info = j.getDebugInfo();
245
+ return {
246
+ join: info.name,
247
+ type: info.type,
248
+ };
249
+ }),
250
+ });
251
+ }
252
+ // Track best plan
253
+ if (totalCost < bestCost) {
254
+ bestCost = totalCost;
255
+ bestPlan = this.capturePlanningSnapshot();
256
+ bestAttemptNumber = pattern;
275
257
  }
276
258
  }
277
259
  // Restore best plan
@@ -293,8 +275,7 @@ export class PlannerGraph {
293
275
  }
294
276
  }
295
277
  else {
296
- // No valid plan found (all patterns failed)
297
- throw new Error('No valid query plan found. This should not happen - check query structure.');
278
+ assert(numPatterns === 0, 'no plan was found but flippable joins did exist!');
298
279
  }
299
280
  }
300
281
  }
@@ -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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"}
@@ -76,8 +76,9 @@ export declare class PlannerJoin {
76
76
  propagateUnlimit(): void;
77
77
  /**
78
78
  * Called when a parent join is flipped and this join is part of its child subgraph.
79
- * - Semi-join: continue propagation to parent (the outer loop)
80
- * - Flipped join: stop propagation (already unlimited when it was flipped)
79
+ * Continue propagation to parent (the outer loop).
80
+ * If we are hitting a semi-join, the parent drives.
81
+ * If we are hitting a flip-join, well now we have to unlimit its parent too!
81
82
  */
82
83
  propagateUnlimitFromFlippedJoin(): void;
83
84
  propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined, from?: PlannerNode, planDebugger?: PlanDebugger): void;
@@ -88,6 +89,9 @@ export declare class PlannerJoin {
88
89
  * Each one will constrain how often a parent row passes all constraints.
89
90
  * This means that we have to scan more and more parent rows the more
90
91
  * constraints we add.
92
+ *
93
+ * DownstreamChildSelectivity factors in fanout factor
94
+ * from parent -> child
91
95
  */
92
96
  downstreamChildSelectivity: number,
93
97
  /**
@@ -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,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"}
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;;;;;OAKG;IACH,+BAA+B,IAAI,IAAI;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;IAuDP,KAAK,IAAI,IAAI;IAIb,YAAY;IACV;;;;;;;;OAQG;IACH,0BAA0B,EAAE,MAAM;IAClC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IAoGf;;;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"}
@@ -142,19 +142,17 @@ export class PlannerJoin {
142
142
  */
143
143
  propagateUnlimit() {
144
144
  assert(this.#type === 'flipped', 'Can only unlimit a flipped join');
145
- this.#parent.propagateUnlimitFromFlippedJoin();
145
+ // Parent stays limited; child becomes unlimited
146
146
  this.#child.propagateUnlimitFromFlippedJoin(); // Up the child chain
147
147
  }
148
148
  /**
149
149
  * Called when a parent join is flipped and this join is part of its child subgraph.
150
- * - Semi-join: continue propagation to parent (the outer loop)
151
- * - Flipped join: stop propagation (already unlimited when it was flipped)
150
+ * Continue propagation to parent (the outer loop).
151
+ * If we are hitting a semi-join, the parent drives.
152
+ * If we are hitting a flip-join, well now we have to unlimit its parent too!
152
153
  */
153
154
  propagateUnlimitFromFlippedJoin() {
154
- if (this.#type === 'semi') {
155
- this.#parent.propagateUnlimitFromFlippedJoin();
156
- }
157
- // For flipped joins, stop propagation
155
+ this.#parent.propagateUnlimitFromFlippedJoin();
158
156
  }
159
157
  propagateConstraints(branchPattern, constraint, from, planDebugger) {
160
158
  planDebugger?.log({
@@ -195,6 +193,9 @@ export class PlannerJoin {
195
193
  * Each one will constrain how often a parent row passes all constraints.
196
194
  * This means that we have to scan more and more parent rows the more
197
195
  * constraints we add.
196
+ *
197
+ * DownstreamChildSelectivity factors in fanout factor
198
+ * from parent -> child
198
199
  */
199
200
  downstreamChildSelectivity,
200
201
  /**
@@ -231,6 +232,13 @@ export class PlannerJoin {
231
232
  * rows are returned.
232
233
  */
233
234
  const child = this.#child.estimateCost(1, branchPattern, planDebugger);
235
+ const fanoutFactor = child.fanout(Object.keys(this.#childConstraint));
236
+ // Factor in how many child rows match a parent row.
237
+ // E.g., if an issue has 10 comments on average then we're more
238
+ // likely to hit a comment compared to if an issue has 1 comment on average.
239
+ // If an index is all nulls (no parents match any children)
240
+ // this will collapse to 0.
241
+ const scaledChildSelectivity = 1 - Math.pow(1 - child.selectivity, fanoutFactor.fanout);
234
242
  /**
235
243
  * How selective is the graph from this point forward?
236
244
  * If we are _very_ selective then we must scan more parent rows
@@ -247,32 +255,40 @@ export class PlannerJoin {
247
255
  const parent = this.#parent.estimateCost(
248
256
  // Selectivity flows up the graph from child to parent
249
257
  // so we can determine the total selectivity of all ANDed exists checks.
250
- child.selectivity * downstreamChildSelectivity, branchPattern, planDebugger);
258
+ this.#type === 'flipped'
259
+ ? 1 * downstreamChildSelectivity
260
+ : scaledChildSelectivity * downstreamChildSelectivity, branchPattern, planDebugger);
251
261
  let costEstimate;
252
262
  if (this.type === 'semi') {
253
263
  costEstimate = {
254
264
  startupCost: parent.startupCost,
255
265
  scanEst: parent.limit === undefined
256
266
  ? parent.returnedRows
257
- : Math.min(parent.returnedRows, parent.limit / downstreamChildSelectivity),
267
+ : Math.min(parent.returnedRows, downstreamChildSelectivity === 0
268
+ ? 0
269
+ : parent.limit / downstreamChildSelectivity),
258
270
  cost: parent.cost +
259
271
  parent.scanEst * (child.startupCost + child.cost + child.scanEst),
260
272
  returnedRows: parent.returnedRows * child.selectivity,
261
273
  selectivity: child.selectivity * parent.selectivity,
262
274
  limit: parent.limit,
275
+ fanout: parent.fanout,
263
276
  };
264
277
  }
265
278
  else {
266
279
  costEstimate = {
267
280
  startupCost: child.startupCost,
268
281
  scanEst: parent.limit === undefined
269
- ? parent.returnedRows
270
- : Math.min(parent.returnedRows * child.returnedRows, parent.limit / downstreamChildSelectivity),
282
+ ? parent.returnedRows * child.returnedRows
283
+ : Math.min(parent.returnedRows * child.returnedRows, downstreamChildSelectivity === 0
284
+ ? 0
285
+ : parent.limit / downstreamChildSelectivity),
271
286
  cost: child.cost +
272
287
  child.scanEst * (parent.startupCost + parent.cost + parent.scanEst),
273
288
  returnedRows: parent.returnedRows * child.returnedRows * child.selectivity,
274
289
  selectivity: parent.selectivity * child.selectivity,
275
290
  limit: parent.limit,
291
+ fanout: parent.fanout,
276
292
  };
277
293
  }
278
294
  planDebugger?.log({
@@ -1 +1 @@
1
- {"version":3,"file":"planner-join.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner-join.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PlannerConnection } from './planner-connection.ts';
1
+ import type { FanoutCostModel, PlannerConnection } from './planner-connection.ts';
2
2
  import type { PlannerFanIn } from './planner-fan-in.ts';
3
3
  import type { PlannerFanOut } from './planner-fan-out.ts';
4
4
  import type { PlannerJoin } from './planner-join.ts';
@@ -41,6 +41,7 @@ export type CostEstimate = {
41
41
  */
42
42
  selectivity: number;
43
43
  limit: number | undefined;
44
+ fanout: FanoutCostModel;
44
45
  };
45
46
  export type NodeType = PlannerNode['kind'];
46
47
  export type JoinOrConnection = 'join' | 'connection';
@@ -1 +1 @@
1
- {"version":3,"file":"planner-node.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"planner-node.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1B,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC"}
@@ -12,12 +12,12 @@ export type DefineQueryFunc<TSchema extends Schema, TTable extends keyof TSchema
12
12
  ctx: TContext;
13
13
  args: TArgs;
14
14
  }) => Query<TSchema, TTable, TReturn, TContext>;
15
- export type NamedQueryFunction<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined> = ([TOutput] extends [undefined] ? (() => Query<TSchema, TTable, TReturn, TContext>) & ((args: undefined) => Query<TSchema, TTable, TReturn, TContext>) : undefined extends TOutput ? (args?: TInput) => Query<TSchema, TTable, TReturn, TContext> : (args: TInput) => Query<TSchema, TTable, TReturn, TContext>) & {
15
+ export type NamedQueryFunction<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends TOutput> = ([TOutput] extends [undefined] ? (() => Query<TSchema, TTable, TReturn, TContext>) & ((args: undefined) => Query<TSchema, TTable, TReturn, TContext>) : undefined extends TOutput ? (args?: TInput) => Query<TSchema, TTable, TReturn, TContext> : (args: TInput) => Query<TSchema, TTable, TReturn, TContext>) & {
16
16
  queryName: TName;
17
17
  };
18
18
  export type AnyNamedQueryFunction = NamedQueryFunction<string, Schema, string, any, any, ReadonlyJSONValue | undefined, ReadonlyJSONValue | undefined>;
19
19
  export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs extends ReadonlyJSONValue | undefined>(name: TName, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TArgs>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TArgs, TArgs>;
20
- export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined = TOutput>(name: TName, options: DefineQueryOptions<TInput, TOutput>, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
20
+ export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends TOutput = TOutput>(name: TName, options: DefineQueryOptions<TInput, TOutput>, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
21
21
  export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs extends ReadonlyJSONValue | undefined>(name: TName, options: {}, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TArgs>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TArgs, TArgs>;
22
22
  /**
23
23
  * Creates a type-safe query definition function that is parameterized by a
@@ -47,5 +47,5 @@ export declare function defineQuery<TName extends string, TSchema extends Schema
47
47
  * );
48
48
  * ```
49
49
  */
50
- export declare function defineQueryWithContextType<TContext>(): <TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined = TOutput>(name: TName, optionsOrQueryFn: DefineQueryOptions<TInput, TOutput> | DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>, queryFn?: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>) => NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
50
+ export declare function defineQueryWithContextType<TContext>(): <TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TOutput extends ReadonlyJSONValue | undefined, TInput extends TOutput = TOutput>(name: TName, optionsOrQueryFn: DefineQueryOptions<TInput, TOutput> | DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>, queryFn?: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>) => NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
51
51
  //# sourceMappingURL=define-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/define-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/define-query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-cost-model.d.ts","sourceRoot":"","sources":["../../../../zqlite/src/sqlite-cost-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,KAAK,EAAC,QAAQ,EAAY,MAAM,SAAS,CAAC;AAIjD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sCAAsC,CAAC;AAgBtE;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAAC,CAAC,GAC9D,mBAAmB,CA2CrB;AAgHD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9C"}
1
+ {"version":3,"file":"sqlite-cost-model.d.ts","sourceRoot":"","sources":["../../../../zqlite/src/sqlite-cost-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,KAAK,EAAC,QAAQ,EAAY,MAAM,SAAS,CAAC;AAIjD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sCAAsC,CAAC;AAiBtE;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAAC,CAAC,GAC9D,mBAAmB,CAgDrB;AAoHD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9C"}
@@ -3,6 +3,7 @@ import { buildSelectQuery } from "./query-builder.js";
3
3
  import { compile } from "./internal/sql.js";
4
4
  import { assert } from "../../shared/src/asserts.js";
5
5
  import { must } from "../../shared/src/must.js";
6
+ import { SQLiteStatFanout } from "./sqlite-stat-fanout.js";
6
7
  /**
7
8
  * Creates a SQLite-based cost model for query planning.
8
9
  * Uses SQLite's scanstatus API to estimate query costs based on the actual
@@ -13,6 +14,7 @@ import { must } from "../../shared/src/must.js";
13
14
  * @returns ConnectionCostModel function for use with the planner
14
15
  */
15
16
  export function createSQLiteCostModel(db, tableSpecs) {
17
+ const fanoutEstimator = new SQLiteStatFanout(db);
16
18
  return (tableName, sort, filters, constraint) => {
17
19
  // Transform filters to remove correlated subqueries
18
20
  // The cost model can't handle correlated subqueries, so we estimate cost
@@ -31,7 +33,8 @@ export function createSQLiteCostModel(db, tableSpecs) {
31
33
  const loops = getScanstatusLoops(stmt);
32
34
  // Scanstatus should always be available - if we get no loops, something is wrong
33
35
  assert(loops.length > 0, `Expected scanstatus to return at least one loop for query: ${sql}`);
34
- return estimateCost(loops);
36
+ const ret = estimateCost(loops, (columns) => fanoutEstimator.getFanout(tableName, columns));
37
+ return ret;
35
38
  };
36
39
  }
37
40
  /**
@@ -98,7 +101,7 @@ function getScanstatusLoops(stmt) {
98
101
  /**
99
102
  * Estimates the cost of a query based on scanstats from sqlite3_stmt_scanstatus_v2
100
103
  */
101
- function estimateCost(scanstats) {
104
+ function estimateCost(scanstats, fanout) {
102
105
  // Sort by selectId to process in execution order
103
106
  const sorted = [...scanstats].sort((a, b) => a.selectId - b.selectId);
104
107
  let totalRows = 0;
@@ -123,7 +126,11 @@ function estimateCost(scanstats) {
123
126
  }
124
127
  }
125
128
  }
126
- return { rows: totalRows, startupCost: totalCost };
129
+ return {
130
+ rows: totalRows,
131
+ startupCost: totalCost,
132
+ fanout,
133
+ };
127
134
  }
128
135
  export function btreeCost(rows) {
129
136
  // B-Tree construction is ~O(n log n) so we estimate the cost as such.
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-cost-model.js","sourceRoot":"","sources":["../../../../zqlite/src/sqlite-cost-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite-cost-model.js","sourceRoot":"","sources":["../../../../zqlite/src/sqlite-cost-model.ts"],"names":[],"mappings":"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"}