@rocicorp/zero 0.25.0-canary.1 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/out/{chunk-AIPM77UE.js → chunk-QZSBDHTA.js} +509 -311
  2. package/out/chunk-QZSBDHTA.js.map +7 -0
  3. package/out/{chunk-55BOUNXO.js → chunk-YTVU4GOY.js} +19 -3
  4. package/out/{chunk-55BOUNXO.js.map → chunk-YTVU4GOY.js.map} +3 -3
  5. package/out/react.js +44 -25
  6. package/out/react.js.map +2 -2
  7. package/out/shared/src/error.d.ts +4 -0
  8. package/out/shared/src/error.d.ts.map +1 -0
  9. package/out/shared/src/error.js +70 -0
  10. package/out/shared/src/error.js.map +1 -0
  11. package/out/solid.js +44 -18
  12. package/out/solid.js.map +2 -2
  13. package/out/zero/package.json +3 -2
  14. package/out/zero/src/zero-out.d.ts +3 -0
  15. package/out/zero/src/zero-out.d.ts.map +1 -0
  16. package/out/zero/src/zero-out.js +13 -0
  17. package/out/zero/src/zero-out.js.map +1 -0
  18. package/out/zero-cache/src/custom/fetch.js +3 -3
  19. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  20. package/out/zero-cache/src/scripts/decommission.d.ts +50 -0
  21. package/out/zero-cache/src/scripts/decommission.d.ts.map +1 -0
  22. package/out/zero-cache/src/scripts/decommission.js +51 -0
  23. package/out/zero-cache/src/scripts/decommission.js.map +1 -0
  24. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
  25. package/out/zero-cache/src/server/inspector-delegate.js +2 -1
  26. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  27. package/out/zero-cache/src/services/mutagen/pusher.d.ts +17 -21
  28. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  29. package/out/zero-cache/src/services/mutagen/pusher.js +4 -4
  30. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  31. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +1 -0
  32. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
  33. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +5 -0
  34. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  35. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +7 -0
  36. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  37. package/out/zero-cache/src/services/view-syncer/view-syncer.js +24 -1
  38. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  39. package/out/zero-cache/src/types/streams.d.ts +1 -1
  40. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  41. package/out/zero-cache/src/types/streams.js +19 -9
  42. package/out/zero-cache/src/types/streams.js.map +1 -1
  43. package/out/zero-cache/src/types/subscription.d.ts +16 -1
  44. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  45. package/out/zero-cache/src/types/subscription.js +41 -5
  46. package/out/zero-cache/src/types/subscription.js.map +1 -1
  47. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  48. package/out/zero-cache/src/workers/syncer.js +1 -3
  49. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  50. package/out/zero-client/src/client/connection-manager.d.ts +21 -5
  51. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  52. package/out/zero-client/src/client/connection-status-enum.d.ts +2 -0
  53. package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
  54. package/out/zero-client/src/client/connection.d.ts +11 -3
  55. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  56. package/out/zero-client/src/client/error.d.ts +33 -161
  57. package/out/zero-client/src/client/error.d.ts.map +1 -1
  58. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  59. package/out/zero-client/src/client/options.d.ts +9 -16
  60. package/out/zero-client/src/client/options.d.ts.map +1 -1
  61. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  62. package/out/zero-client/src/client/zero-rep.d.ts +2 -0
  63. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  64. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  65. package/out/zero-client/src/mod.d.ts +4 -1
  66. package/out/zero-client/src/mod.d.ts.map +1 -1
  67. package/out/zero-client/src/types/query-result.d.ts +23 -0
  68. package/out/zero-client/src/types/query-result.d.ts.map +1 -0
  69. package/out/zero-protocol/src/application-error.d.ts +33 -0
  70. package/out/zero-protocol/src/application-error.d.ts.map +1 -0
  71. package/out/zero-protocol/src/application-error.js +37 -0
  72. package/out/zero-protocol/src/application-error.js.map +1 -0
  73. package/out/zero-protocol/src/custom-queries.d.ts +27 -95
  74. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  75. package/out/zero-protocol/src/custom-queries.js +9 -24
  76. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  77. package/out/zero-protocol/src/down.d.ts +7 -9
  78. package/out/zero-protocol/src/down.d.ts.map +1 -1
  79. package/out/zero-protocol/src/error.d.ts +42 -0
  80. package/out/zero-protocol/src/error.d.ts.map +1 -1
  81. package/out/zero-protocol/src/error.js +7 -0
  82. package/out/zero-protocol/src/error.js.map +1 -1
  83. package/out/zero-protocol/src/mutations-patch.d.ts +3 -0
  84. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  85. package/out/zero-protocol/src/poke.d.ts +2 -0
  86. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  87. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  88. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  89. package/out/zero-protocol/src/protocol-version.js +2 -1
  90. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  91. package/out/zero-protocol/src/push.d.ts +7 -0
  92. package/out/zero-protocol/src/push.d.ts.map +1 -1
  93. package/out/zero-protocol/src/push.js +1 -0
  94. package/out/zero-protocol/src/push.js.map +1 -1
  95. package/out/zero-react/src/mod.d.ts +5 -1
  96. package/out/zero-react/src/mod.d.ts.map +1 -1
  97. package/out/zero-react/src/use-query.d.ts +1 -21
  98. package/out/zero-react/src/use-query.d.ts.map +1 -1
  99. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  100. package/out/zero-server/src/mod.d.ts +5 -4
  101. package/out/zero-server/src/mod.d.ts.map +1 -1
  102. package/out/zero-server/src/mod.js +5 -4
  103. package/out/zero-server/src/mod.js.map +1 -1
  104. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  105. package/out/zero-server/src/process-mutations.js +181 -68
  106. package/out/zero-server/src/process-mutations.js.map +1 -1
  107. package/out/zero-server/src/queries/process-queries.d.ts +4 -3
  108. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  109. package/out/zero-server/src/queries/process-queries.js +85 -19
  110. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  111. package/out/zero-solid/src/mod.d.ts +8 -0
  112. package/out/zero-solid/src/mod.d.ts.map +1 -1
  113. package/out/zero-solid/src/solid-view.d.ts +3 -23
  114. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  115. package/out/zero-solid/src/use-query.d.ts +1 -1
  116. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  117. package/out/zero-solid/src/use-zero.d.ts +1 -0
  118. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  119. package/out/zero.js +4 -2
  120. package/out/zql/src/planner/planner-builder.d.ts +2 -1
  121. package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
  122. package/out/zql/src/planner/planner-builder.js +6 -6
  123. package/out/zql/src/planner/planner-builder.js.map +1 -1
  124. package/out/zql/src/planner/planner-connection.d.ts +9 -3
  125. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  126. package/out/zql/src/planner/planner-connection.js +38 -82
  127. package/out/zql/src/planner/planner-connection.js.map +1 -1
  128. package/out/zql/src/planner/planner-debug.d.ts +37 -7
  129. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  130. package/out/zql/src/planner/planner-debug.js +131 -80
  131. package/out/zql/src/planner/planner-debug.js.map +1 -1
  132. package/out/zql/src/planner/planner-fan-in.d.ts +5 -3
  133. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  134. package/out/zql/src/planner/planner-fan-in.js +41 -23
  135. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  136. package/out/zql/src/planner/planner-fan-out.d.ts +5 -3
  137. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  138. package/out/zql/src/planner/planner-fan-out.js +22 -5
  139. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  140. package/out/zql/src/planner/planner-graph.d.ts +2 -2
  141. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  142. package/out/zql/src/planner/planner-graph.js +17 -48
  143. package/out/zql/src/planner/planner-graph.js.map +1 -1
  144. package/out/zql/src/planner/planner-join.d.ts +61 -6
  145. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  146. package/out/zql/src/planner/planner-join.js +148 -65
  147. package/out/zql/src/planner/planner-join.js.map +1 -1
  148. package/out/zql/src/planner/planner-node.d.ts +29 -2
  149. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  150. package/out/zql/src/planner/planner-source.d.ts +1 -1
  151. package/out/zql/src/planner/planner-source.d.ts.map +1 -1
  152. package/out/zql/src/planner/planner-source.js +2 -2
  153. package/out/zql/src/planner/planner-source.js.map +1 -1
  154. package/out/zql/src/planner/planner-terminus.d.ts +4 -3
  155. package/out/zql/src/planner/planner-terminus.d.ts.map +1 -1
  156. package/out/zql/src/planner/planner-terminus.js +4 -4
  157. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  158. package/out/zql/src/query/error.d.ts +4 -0
  159. package/out/zql/src/query/error.d.ts.map +1 -0
  160. package/out/zql/src/query/error.js +9 -0
  161. package/out/zql/src/query/error.js.map +1 -0
  162. package/out/zql/src/query/named.d.ts.map +1 -1
  163. package/out/zql/src/query/named.js +9 -1
  164. package/out/zql/src/query/named.js.map +1 -1
  165. package/package.json +3 -2
  166. package/out/chunk-AIPM77UE.js.map +0 -7
@@ -4,7 +4,17 @@
4
4
  */
5
5
  export class AccumulatorDebugger {
6
6
  events = [];
7
+ currentAttempt = 0;
7
8
  log(event) {
9
+ // Track current attempt number
10
+ if (event.type === 'attempt-start') {
11
+ this.currentAttempt = event.attemptNumber;
12
+ }
13
+ // Add attempt number to node events
14
+ if (event.type === 'node-cost' || event.type === 'node-constraint') {
15
+ event.attemptNumber =
16
+ this.currentAttempt;
17
+ }
8
18
  this.events.push(event);
9
19
  }
10
20
  /**
@@ -18,8 +28,40 @@ export class AccumulatorDebugger {
18
28
  */
19
29
  format() {
20
30
  const lines = [];
31
+ // Group events by attempt
32
+ const eventsByAttempt = new Map();
33
+ let bestPlanEvent;
21
34
  for (const event of this.events) {
22
- lines.push(formatEvent(event));
35
+ if ('attemptNumber' in event) {
36
+ const attempt = event.attemptNumber;
37
+ let attemptEvents = eventsByAttempt.get(attempt);
38
+ if (!attemptEvents) {
39
+ attemptEvents = [];
40
+ eventsByAttempt.set(attempt, attemptEvents);
41
+ }
42
+ attemptEvents.push(event);
43
+ }
44
+ else if (event.type === 'best-plan-selected') {
45
+ // Save for displaying at the end
46
+ bestPlanEvent = event;
47
+ }
48
+ }
49
+ // Format each attempt as a compact summary
50
+ for (const [attemptNum, events] of eventsByAttempt.entries()) {
51
+ lines.push(...formatAttemptSummary(attemptNum, events));
52
+ lines.push(''); // Blank line between attempts
53
+ }
54
+ // Show the final plan selection
55
+ if (bestPlanEvent) {
56
+ lines.push('─'.repeat(60));
57
+ lines.push(`✓ Best plan: Attempt ${bestPlanEvent.bestAttemptNumber + 1} (cost=${bestPlanEvent.totalCost.toFixed(2)})`);
58
+ if (bestPlanEvent.joinStates.length > 0) {
59
+ lines.push(' Join types:');
60
+ for (const j of bestPlanEvent.joinStates) {
61
+ lines.push(` ${j.join}: ${j.type}`);
62
+ }
63
+ }
64
+ lines.push('─'.repeat(60));
23
65
  }
24
66
  return lines.join('\n');
25
67
  }
@@ -36,90 +78,99 @@ function formatConstraint(constraint) {
36
78
  return '{' + keys.join(', ') + '}';
37
79
  }
38
80
  /**
39
- * Format a single debug event as a human-readable string.
81
+ * Format a Condition (filter) as a human-readable string.
40
82
  */
41
- function formatEvent(event) {
42
- switch (event.type) {
43
- case 'attempt-start':
44
- return `[Attempt ${event.attemptNumber + 1}/${event.totalAttempts}] Starting planning attempt`;
45
- case 'connection-costs': {
46
- const lines = [`[Attempt ${event.attemptNumber + 1}] Connection costs:`];
47
- for (const c of event.costs) {
48
- // Format the main connection info
49
- // const limitStr = c.costEstimate.limit !== undefined
50
- // ? c.costEstimate.limit.toString()
51
- // : 'none';
52
- lines.push(` ${c.connection}: cost=${c.cost.toFixed(2)}, `);
53
- // Format each branch's constraints with costs
54
- if (c.constraints.size === 0) {
55
- const cost = c.constraintCosts.get('');
56
- const costStr = cost ? ` cost=${cost.rows.toFixed(2)}` : '';
57
- lines.push(` Branch [none]: {}${costStr}`);
58
- }
59
- else {
60
- for (const [branchKey, constraint] of c.constraints) {
61
- const branchLabel = branchKey === '' ? 'none' : branchKey;
62
- const cost = c.constraintCosts.get(branchKey);
63
- const costStr = cost ? ` cost=${cost.rows.toFixed(2)}` : '';
64
- lines.push(` Branch [${branchLabel}]: ${formatConstraint(constraint)}${costStr}`);
65
- }
66
- }
67
- }
68
- return lines.join('\n');
83
+ function formatFilter(filter) {
84
+ if (!filter)
85
+ return 'none';
86
+ switch (filter.type) {
87
+ case 'simple':
88
+ return `${filter.left.type === 'column' ? filter.left.name : JSON.stringify(filter.left)} ${filter.op} ${filter.right.type === 'literal' ? JSON.stringify(filter.right.value) : JSON.stringify(filter.right)}`;
89
+ case 'and':
90
+ return `(${filter.conditions.map(formatFilter).join(' AND ')})`;
91
+ case 'or':
92
+ return `(${filter.conditions.map(formatFilter).join(' OR ')})`;
93
+ case 'correlatedSubquery':
94
+ return `EXISTS(${filter.related.subquery.table})`;
95
+ default:
96
+ return JSON.stringify(filter);
97
+ }
98
+ }
99
+ /**
100
+ * Format a compact summary for a single planning attempt.
101
+ */
102
+ function formatAttemptSummary(attemptNum, events) {
103
+ const lines = [];
104
+ // Find the attempt-start event to get total attempts
105
+ const startEvent = events.find(e => e.type === 'attempt-start');
106
+ const totalAttempts = startEvent?.totalAttempts ?? '?';
107
+ // Calculate number of bits needed for pattern
108
+ const numBits = typeof totalAttempts === 'number'
109
+ ? Math.ceil(Math.log2(totalAttempts)) || 1
110
+ : 1;
111
+ const bitPattern = attemptNum.toString(2).padStart(numBits, '0');
112
+ lines.push(`[Attempt ${attemptNum + 1}/${totalAttempts}] Pattern ${attemptNum} (${bitPattern})`);
113
+ // Collect connection costs (use array to preserve all connections, including duplicates)
114
+ const connectionCostEvents = [];
115
+ const connectionConstraintEvents = [];
116
+ for (const event of events) {
117
+ if (event.type === 'node-cost' && event.nodeType === 'connection') {
118
+ connectionCostEvents.push(event);
69
119
  }
70
- case 'connection-selected':
71
- return (`[Attempt ${event.attemptNumber + 1}] Selected ${event.isRoot ? 'ROOT' : ''} connection: ` +
72
- `${event.connection} (cost=${event.cost.toFixed(2)})`);
73
- case 'constraints-propagated': {
74
- const lines = [
75
- `[Attempt ${event.attemptNumber + 1}] Constraints propagated:`,
76
- ];
77
- for (const c of event.connectionConstraints) {
78
- lines.push(` ${c.connection}:`);
79
- // Format each branch's constraints with costs
80
- if (c.constraints.size === 0) {
81
- const cost = c.constraintCosts.get('');
82
- const costStr = cost ? ` cost=${cost.rows.toFixed(2)}` : '';
83
- lines.push(` Branch [none]: {}${costStr}`);
84
- }
85
- else {
86
- for (const [branchKey, constraint] of c.constraints) {
87
- const branchLabel = branchKey === '' ? 'none' : branchKey;
88
- const cost = c.constraintCosts.get(branchKey);
89
- const costStr = cost ? ` cost=${cost.rows.toFixed(2)}` : '';
90
- lines.push(` Branch [${branchLabel}]: ${formatConstraint(constraint)}${costStr}`);
91
- }
92
- }
93
- }
94
- return lines.join('\n');
120
+ if (event.type === 'node-constraint' && event.nodeType === 'connection') {
121
+ connectionConstraintEvents.push(event);
95
122
  }
96
- case 'plan-complete': {
97
- const lines = [
98
- `[Attempt ${event.attemptNumber + 1}] Plan complete! Total cost: ${event.totalCost.toFixed(2)}`,
99
- ` Joins:`,
100
- ];
101
- for (const j of event.joinStates) {
102
- lines.push(` ${j.join}: ${j.type}`);
103
- }
104
- lines.push(` Node costs:`);
105
- for (const n of event.nodeCosts) {
106
- lines.push(` ${n.node} (${n.nodeType}): ${n.costEstimate.runningCost.toFixed(2)}`);
107
- }
108
- return lines.join('\n');
123
+ }
124
+ // Show connection summary
125
+ if (connectionCostEvents.length > 0) {
126
+ lines.push(' Connections:');
127
+ for (const cost of connectionCostEvents) {
128
+ // Find matching constraint event (same node name and branch pattern)
129
+ const constraint = connectionConstraintEvents.find(c => c.node === cost.node &&
130
+ c.branchPattern.join(',') === cost.branchPattern.join(','))?.constraint;
131
+ const constraintStr = formatConstraint(constraint);
132
+ const filterStr = formatFilter(cost.filters);
133
+ const limitStr = cost.costEstimate.limit !== undefined
134
+ ? cost.costEstimate.limit.toString()
135
+ : 'none';
136
+ lines.push(` ${cost.node}:`);
137
+ lines.push(` cost=${cost.costEstimate.cost.toFixed(2)}, startup=${cost.costEstimate.startupCost.toFixed(2)}, scan=${cost.costEstimate.scanEst.toFixed(2)}`);
138
+ lines.push(` rows=${cost.costEstimate.returnedRows.toFixed(2)}, selectivity=${cost.costEstimate.selectivity.toFixed(8)}, limit=${limitStr}`);
139
+ lines.push(` downstreamChildSelectivity=${cost.downstreamChildSelectivity.toFixed(8)}`);
140
+ lines.push(` constraints=${constraintStr}`);
141
+ lines.push(` filters=${filterStr}`);
109
142
  }
110
- case 'plan-failed':
111
- return `[Attempt ${event.attemptNumber + 1}] Plan FAILED: ${event.reason}`;
112
- case 'best-plan-selected': {
113
- const lines = [
114
- `[FINAL] Best plan selected from attempt ${event.bestAttemptNumber + 1}`,
115
- ` Total cost: ${event.totalCost.toFixed(2)}`,
116
- ` Joins:`,
117
- ];
118
- for (const j of event.joinStates) {
119
- lines.push(` ${j.join}: ${j.type}`);
120
- }
121
- return lines.join('\n');
143
+ }
144
+ // Collect join costs from node-cost events
145
+ const joinCosts = [];
146
+ for (const event of events) {
147
+ if (event.type === 'node-cost' && event.nodeType === 'join') {
148
+ joinCosts.push(event);
122
149
  }
123
150
  }
151
+ if (joinCosts.length > 0) {
152
+ lines.push(' Joins:');
153
+ for (const cost of joinCosts) {
154
+ const typeStr = cost.joinType ? ` (${cost.joinType})` : '';
155
+ const limitStr = cost.costEstimate.limit !== undefined
156
+ ? cost.costEstimate.limit.toString()
157
+ : 'none';
158
+ lines.push(` ${cost.node}${typeStr}:`);
159
+ lines.push(` cost=${cost.costEstimate.cost.toFixed(2)}, startup=${cost.costEstimate.startupCost.toFixed(2)}, scan=${cost.costEstimate.scanEst.toFixed(2)}`);
160
+ lines.push(` rows=${cost.costEstimate.returnedRows.toFixed(2)}, selectivity=${cost.costEstimate.selectivity.toFixed(8)}, limit=${limitStr}`);
161
+ lines.push(` downstreamChildSelectivity=${cost.downstreamChildSelectivity.toFixed(8)}`);
162
+ }
163
+ }
164
+ // Find completion/failure events
165
+ const completeEvent = events.find(e => e.type === 'plan-complete');
166
+ const failedEvent = events.find(e => e.type === 'plan-failed');
167
+ // Show final status
168
+ if (completeEvent) {
169
+ lines.push(` ✓ Plan complete: total cost = ${completeEvent.totalCost.toFixed(2)}`);
170
+ }
171
+ else if (failedEvent) {
172
+ lines.push(` ✗ Plan failed: ${failedEvent.reason}`);
173
+ }
174
+ return lines;
124
175
  }
125
176
  //# sourceMappingURL=planner-debug.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-debug.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-debug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner-debug.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-debug.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
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
  /**
4
6
  * A PlannerFanIn node can either be a normal FanIn or UnionFanIn.
5
7
  *
@@ -19,7 +21,7 @@ import type { CostEstimate, JoinOrConnection, PlannerNode } from './planner-node
19
21
  export declare class PlannerFanIn {
20
22
  #private;
21
23
  readonly kind: "fan-in";
22
- constructor(inputs: PlannerNode[]);
24
+ constructor(inputs: Exclude<PlannerNode, PlannerTerminus>[]);
23
25
  get type(): "FI" | "UFI";
24
26
  closestJoinOrSource(): JoinOrConnection;
25
27
  setOutput(node: PlannerNode): void;
@@ -31,7 +33,7 @@ export declare class PlannerFanIn {
31
33
  * Fan-in propagates to all of its inputs.
32
34
  */
33
35
  propagateUnlimitFromFlippedJoin(): void;
34
- estimateCost(branchPattern?: number[]): CostEstimate;
35
- propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined, from: PlannerNode): void;
36
+ estimateCost(downstreamChildSelectivity: number, branchPattern: number[], planDebugger?: PlanDebugger): CostEstimate;
37
+ propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined, from?: PlannerNode, planDebugger?: PlanDebugger): void;
36
38
  }
37
39
  //# sourceMappingURL=planner-fan-in.d.ts.map
@@ -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"}