@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.
- package/out/{chunk-AIPM77UE.js → chunk-QZSBDHTA.js} +509 -311
- package/out/chunk-QZSBDHTA.js.map +7 -0
- package/out/{chunk-55BOUNXO.js → chunk-YTVU4GOY.js} +19 -3
- package/out/{chunk-55BOUNXO.js.map → chunk-YTVU4GOY.js.map} +3 -3
- package/out/react.js +44 -25
- package/out/react.js.map +2 -2
- package/out/shared/src/error.d.ts +4 -0
- package/out/shared/src/error.d.ts.map +1 -0
- package/out/shared/src/error.js +70 -0
- package/out/shared/src/error.js.map +1 -0
- package/out/solid.js +44 -18
- package/out/solid.js.map +2 -2
- package/out/zero/package.json +3 -2
- package/out/zero/src/zero-out.d.ts +3 -0
- package/out/zero/src/zero-out.d.ts.map +1 -0
- package/out/zero/src/zero-out.js +13 -0
- package/out/zero/src/zero-out.js.map +1 -0
- package/out/zero-cache/src/custom/fetch.js +3 -3
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/scripts/decommission.d.ts +50 -0
- package/out/zero-cache/src/scripts/decommission.d.ts.map +1 -0
- package/out/zero-cache/src/scripts/decommission.js +51 -0
- package/out/zero-cache/src/scripts/decommission.js.map +1 -0
- package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
- package/out/zero-cache/src/server/inspector-delegate.js +2 -1
- package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +17 -21
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +4 -4
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +1 -0
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +5 -0
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +7 -0
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +24 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/streams.d.ts +1 -1
- package/out/zero-cache/src/types/streams.d.ts.map +1 -1
- package/out/zero-cache/src/types/streams.js +19 -9
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/subscription.d.ts +16 -1
- package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
- package/out/zero-cache/src/types/subscription.js +41 -5
- package/out/zero-cache/src/types/subscription.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +1 -3
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/connection-manager.d.ts +21 -5
- package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/connection-status-enum.d.ts +2 -0
- package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
- package/out/zero-client/src/client/connection.d.ts +11 -3
- package/out/zero-client/src/client/connection.d.ts.map +1 -1
- package/out/zero-client/src/client/error.d.ts +33 -161
- package/out/zero-client/src/client/error.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/options.d.ts +9 -16
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-rep.d.ts +2 -0
- package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +4 -1
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-client/src/types/query-result.d.ts +23 -0
- package/out/zero-client/src/types/query-result.d.ts.map +1 -0
- package/out/zero-protocol/src/application-error.d.ts +33 -0
- package/out/zero-protocol/src/application-error.d.ts.map +1 -0
- package/out/zero-protocol/src/application-error.js +37 -0
- package/out/zero-protocol/src/application-error.js.map +1 -0
- package/out/zero-protocol/src/custom-queries.d.ts +27 -95
- package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
- package/out/zero-protocol/src/custom-queries.js +9 -24
- package/out/zero-protocol/src/custom-queries.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +7 -9
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/error.d.ts +42 -0
- package/out/zero-protocol/src/error.d.ts.map +1 -1
- package/out/zero-protocol/src/error.js +7 -0
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-protocol/src/mutations-patch.d.ts +3 -0
- package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.d.ts +2 -0
- package/out/zero-protocol/src/poke.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +2 -1
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +7 -0
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +1 -0
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-react/src/mod.d.ts +5 -1
- package/out/zero-react/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/use-query.d.ts +1 -21
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/zero-provider.d.ts.map +1 -1
- package/out/zero-server/src/mod.d.ts +5 -4
- package/out/zero-server/src/mod.d.ts.map +1 -1
- package/out/zero-server/src/mod.js +5 -4
- package/out/zero-server/src/mod.js.map +1 -1
- package/out/zero-server/src/process-mutations.d.ts.map +1 -1
- package/out/zero-server/src/process-mutations.js +181 -68
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts +4 -3
- package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +85 -19
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-solid/src/mod.d.ts +8 -0
- package/out/zero-solid/src/mod.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +3 -23
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.d.ts +1 -1
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero.d.ts +1 -0
- package/out/zero-solid/src/use-zero.d.ts.map +1 -1
- package/out/zero.js +4 -2
- package/out/zql/src/planner/planner-builder.d.ts +2 -1
- package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
- package/out/zql/src/planner/planner-builder.js +6 -6
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-connection.d.ts +9 -3
- package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
- package/out/zql/src/planner/planner-connection.js +38 -82
- package/out/zql/src/planner/planner-connection.js.map +1 -1
- package/out/zql/src/planner/planner-debug.d.ts +37 -7
- package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
- package/out/zql/src/planner/planner-debug.js +131 -80
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/planner/planner-fan-in.d.ts +5 -3
- package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
- package/out/zql/src/planner/planner-fan-in.js +41 -23
- package/out/zql/src/planner/planner-fan-in.js.map +1 -1
- package/out/zql/src/planner/planner-fan-out.d.ts +5 -3
- package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
- package/out/zql/src/planner/planner-fan-out.js +22 -5
- package/out/zql/src/planner/planner-fan-out.js.map +1 -1
- package/out/zql/src/planner/planner-graph.d.ts +2 -2
- package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
- package/out/zql/src/planner/planner-graph.js +17 -48
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.d.ts +61 -6
- package/out/zql/src/planner/planner-join.d.ts.map +1 -1
- package/out/zql/src/planner/planner-join.js +148 -65
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-node.d.ts +29 -2
- package/out/zql/src/planner/planner-node.d.ts.map +1 -1
- package/out/zql/src/planner/planner-source.d.ts +1 -1
- package/out/zql/src/planner/planner-source.d.ts.map +1 -1
- package/out/zql/src/planner/planner-source.js +2 -2
- package/out/zql/src/planner/planner-source.js.map +1 -1
- package/out/zql/src/planner/planner-terminus.d.ts +4 -3
- package/out/zql/src/planner/planner-terminus.d.ts.map +1 -1
- package/out/zql/src/planner/planner-terminus.js +4 -4
- package/out/zql/src/planner/planner-terminus.js.map +1 -1
- package/out/zql/src/query/error.d.ts +4 -0
- package/out/zql/src/query/error.d.ts.map +1 -0
- package/out/zql/src/query/error.js +9 -0
- package/out/zql/src/query/error.js.map +1 -0
- package/out/zql/src/query/named.d.ts.map +1 -1
- package/out/zql/src/query/named.js +9 -1
- package/out/zql/src/query/named.js.map +1 -1
- package/package.json +3 -2
- 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
|
-
|
|
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
|
|
81
|
+
* Format a Condition (filter) as a human-readable string.
|
|
40
82
|
*/
|
|
41
|
-
function
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
case '
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
71
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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":"
|
|
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
|
|
35
|
-
propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined, from
|
|
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;
|
|
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
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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.
|
|
80
|
-
maxrows = cost.
|
|
78
|
+
const cost = input.estimateCost(downstreamChildSelectivity, updatedPattern, planDebugger);
|
|
79
|
+
if (cost.returnedRows > maxrows) {
|
|
80
|
+
maxrows = cost.returnedRows;
|
|
81
81
|
}
|
|
82
|
-
if (cost.
|
|
83
|
-
maxRunningCost = cost.
|
|
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.
|
|
98
|
-
totalCost.
|
|
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.
|
|
111
|
-
totalCost.
|
|
112
|
-
|
|
113
|
-
totalCost.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,
|
|
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,
|
|
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":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;
|
|
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,
|
|
12
|
-
estimateCost(branchPattern
|
|
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;
|
|
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,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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":"
|
|
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,
|
|
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"}
|