@rocicorp/zero 0.25.0-canary.1 → 0.25.0-canary.2
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-COKJ5W7V.js} +509 -311
- package/out/chunk-COKJ5W7V.js.map +7 -0
- package/out/{chunk-55BOUNXO.js → chunk-YWU2DZ23.js} +19 -3
- package/out/{chunk-55BOUNXO.js.map → chunk-YWU2DZ23.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
|
@@ -8,6 +8,7 @@ export declare function useZero<S extends Schema, MD extends CustomMutatorDefs |
|
|
|
8
8
|
export declare function createUseZero<S extends Schema, MD extends CustomMutatorDefs | undefined = undefined>(): () => () => Zero<S, MD>;
|
|
9
9
|
export declare function ZeroProvider<S extends Schema, MD extends CustomMutatorDefs | undefined = undefined>(props: {
|
|
10
10
|
children: JSX.Element;
|
|
11
|
+
init?: (zero: Zero<S, MD>) => void;
|
|
11
12
|
} & ({
|
|
12
13
|
zero: Zero<S, MD>;
|
|
13
14
|
} | ZeroOptions<S, MD>)): JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-zero.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-zero.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"use-zero.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,GAAG,EACT,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,wCAAwC,CAAC;AAC9E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAC,IAAI,EAAC,MAAM,sCAAsC,CAAC;AAC1D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,iDAAiD,CAAC;AAS5E,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,iBAAiB,EACvE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,GAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAMb;AAED,wBAAgB,OAAO,CACrB,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,iBAAiB,GAAG,SAAS,GAAG,SAAS,KACjD,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAOrB;AAED,wBAAgB,aAAa,CAC3B,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,iBAAiB,GAAG,SAAS,GAAG,SAAS,6BAGrD;AAED,wBAAgB,YAAY,CAC1B,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,iBAAiB,GAAG,SAAS,GAAG,SAAS,EAEpD,KAAK,EAAE;IAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAA;CAAC,GAAG,CACjE;IACE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACnB,GACD,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CACrB,eAqDF"}
|
package/out/zero.js
CHANGED
|
@@ -9,8 +9,9 @@ import {
|
|
|
9
9
|
syncedQuery,
|
|
10
10
|
syncedQueryWithContext,
|
|
11
11
|
withValidation
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-YWU2DZ23.js";
|
|
13
13
|
import {
|
|
14
|
+
ApplicationError,
|
|
14
15
|
ClientError,
|
|
15
16
|
IDBNotFoundError,
|
|
16
17
|
TransactionClosedError,
|
|
@@ -35,7 +36,7 @@ import {
|
|
|
35
36
|
transformRequestMessageSchema,
|
|
36
37
|
transformResponseMessageSchema,
|
|
37
38
|
update_needed_reason_type_enum_exports
|
|
38
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-COKJ5W7V.js";
|
|
39
40
|
import "./chunk-ASRS2LFV.js";
|
|
40
41
|
import "./chunk-TJFNGO7E.js";
|
|
41
42
|
import "./chunk-EZM3XBAB.js";
|
|
@@ -43,6 +44,7 @@ import "./chunk-424PT5DM.js";
|
|
|
43
44
|
export {
|
|
44
45
|
ANYONE_CAN,
|
|
45
46
|
ANYONE_CAN_DO_ANYTHING,
|
|
47
|
+
ApplicationError,
|
|
46
48
|
ClientError,
|
|
47
49
|
client_error_kind_enum_exports as ClientErrorKind,
|
|
48
50
|
connection_status_enum_exports as ConnectionStatus,
|
|
@@ -9,6 +9,7 @@ export type Plans = {
|
|
|
9
9
|
[key: string]: Plans;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
-
export declare function buildPlanGraph(ast: AST, model: ConnectionCostModel, baseConstraints?: PlannerConstraint): Plans;
|
|
12
|
+
export declare function buildPlanGraph(ast: AST, model: ConnectionCostModel, isRoot: boolean, baseConstraints?: PlannerConstraint): Plans;
|
|
13
13
|
export declare function planQuery(ast: AST, model: ConnectionCostModel, planDebugger?: PlanDebugger): AST;
|
|
14
|
+
export declare function applyPlansToAST(ast: AST, plans: Plans): AST;
|
|
14
15
|
//# sourceMappingURL=planner-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,GAAG,EAKJ,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAoBhD,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;KAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,mBAAmB,EAC1B,eAAe,CAAC,EAAE,iBAAiB,GAClC,KAAK,
|
|
1
|
+
{"version":3,"file":"planner-builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,GAAG,EAKJ,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAoBhD,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;KAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,OAAO,EACf,eAAe,CAAC,EAAE,iBAAiB,GAClC,KAAK,CAmDP;AAsLD,wBAAgB,SAAS,CACvB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,mBAAmB,EAC1B,YAAY,CAAC,EAAE,YAAY,GAC1B,GAAG,CAIL;AAqCD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAyB3D"}
|
|
@@ -20,11 +20,11 @@ function wireOutput(from, to) {
|
|
|
20
20
|
assert(false, 'Terminus nodes cannot have outputs');
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
export function buildPlanGraph(ast, model, baseConstraints) {
|
|
23
|
+
export function buildPlanGraph(ast, model, isRoot, baseConstraints) {
|
|
24
24
|
const graph = new PlannerGraph();
|
|
25
25
|
let nextPlanId = 0;
|
|
26
26
|
const source = graph.addSource(ast.table, model);
|
|
27
|
-
const connection = source.connect(ast.orderBy ?? [], ast.where, baseConstraints, ast.limit);
|
|
27
|
+
const connection = source.connect(ast.orderBy ?? [], ast.where, isRoot, baseConstraints, ast.limit);
|
|
28
28
|
graph.connections.push(connection);
|
|
29
29
|
let end = connection;
|
|
30
30
|
if (ast.where) {
|
|
@@ -38,7 +38,7 @@ export function buildPlanGraph(ast, model, baseConstraints) {
|
|
|
38
38
|
for (const csq of ast.related) {
|
|
39
39
|
const alias = must(csq.subquery.alias, 'Related subquery must have alias');
|
|
40
40
|
const childConstraints = extractConstraint(csq.correlation.childField, csq.subquery.table);
|
|
41
|
-
subPlans[alias] = buildPlanGraph(csq.subquery, model, childConstraints);
|
|
41
|
+
subPlans[alias] = buildPlanGraph(csq.subquery, model, true, childConstraints);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
return { plan: graph, subPlans };
|
|
@@ -89,7 +89,7 @@ function processCorrelatedSubquery(condition, input, graph, model, parentTable,
|
|
|
89
89
|
const childSource = graph.hasSource(childTable)
|
|
90
90
|
? graph.getSource(childTable)
|
|
91
91
|
: graph.addSource(childTable, model);
|
|
92
|
-
const childConnection = childSource.connect(related.subquery.orderBy ?? [], related.subquery.where, undefined, // no base constraints for EXISTS/NOT EXISTS
|
|
92
|
+
const childConnection = childSource.connect(related.subquery.orderBy ?? [], related.subquery.where, false, undefined, // no base constraints for EXISTS/NOT EXISTS
|
|
93
93
|
condition.op === 'EXISTS' ? 1 : undefined);
|
|
94
94
|
graph.connections.push(childConnection);
|
|
95
95
|
let childEnd = childConnection;
|
|
@@ -125,7 +125,7 @@ function planRecursively(plans, planDebugger) {
|
|
|
125
125
|
plans.plan.plan(planDebugger);
|
|
126
126
|
}
|
|
127
127
|
export function planQuery(ast, model, planDebugger) {
|
|
128
|
-
const plans = buildPlanGraph(ast, model);
|
|
128
|
+
const plans = buildPlanGraph(ast, model, true);
|
|
129
129
|
planRecursively(plans, planDebugger);
|
|
130
130
|
return applyPlansToAST(ast, plans);
|
|
131
131
|
}
|
|
@@ -155,7 +155,7 @@ function applyToCondition(condition, flippedIds) {
|
|
|
155
155
|
conditions: condition.conditions.map(c => applyToCondition(c, flippedIds)),
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
|
-
function applyPlansToAST(ast, plans) {
|
|
158
|
+
export function applyPlansToAST(ast, plans) {
|
|
159
159
|
const flippedIds = new Set();
|
|
160
160
|
for (const join of plans.plan.joins) {
|
|
161
161
|
if (join.type === 'flipped' && join.planId !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-builder.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAC,IAAI,EAAC,MAAM,6BAA6B,CAAC;AAQjD,OAAO,EAAC,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAI/D,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAEtD,SAAS,UAAU,CAAC,IAAiB,EAAE,EAAe;IACpD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACX,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,UAAU;YACb,MAAM,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,cAAc,CAC5B,GAAQ,EACR,KAA0B,EAC1B,eAAmC;IAEnC,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IACjC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAC/B,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,KAAK,EACT,eAAe,EACf,GAAG,CAAC,KAAK,CACV,CAAC;IACF,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEnC,IAAI,GAAG,GAAgB,UAAU,CAAC;IAClC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,GAAG,GAAG,gBAAgB,CACpB,GAAG,CAAC,KAAK,EACT,GAAG,EACH,KAAK,EACL,KAAK,EACL,GAAG,CAAC,KAAK,EACT,GAAG,EAAE,CAAC,UAAU,EAAE,CACnB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1B,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE5B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAChB,GAAG,CAAC,QAAQ,CAAC,KAAK,EAClB,kCAAkC,CACnC,CAAC;YACF,MAAM,gBAAgB,GAAG,iBAAiB,CACxC,GAAG,CAAC,WAAW,CAAC,UAAU,EAC1B,GAAG,CAAC,QAAQ,CAAC,KAAK,CACnB,CAAC;YACF,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"planner-builder.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Condition, Ordering } from '../../../zero-protocol/src/ast.ts';
|
|
2
2
|
import { type PlannerConstraint } from './planner-constraint.ts';
|
|
3
|
+
import type { PlanDebugger } from './planner-debug.ts';
|
|
3
4
|
import type { CostEstimate, JoinOrConnection, PlannerNode } from './planner-node.ts';
|
|
4
5
|
/**
|
|
5
6
|
* Represents a connection to a source (table scan).
|
|
@@ -57,7 +58,7 @@ export declare class PlannerConnection {
|
|
|
57
58
|
* and should not be limited by EXISTS semantics.
|
|
58
59
|
*/
|
|
59
60
|
limit: number | undefined;
|
|
60
|
-
constructor(table: string, model: ConnectionCostModel, sort: Ordering, filters: Condition | undefined, baseConstraints?: PlannerConstraint, limit?: number, name?: string);
|
|
61
|
+
constructor(table: string, model: ConnectionCostModel, sort: Ordering, filters: Condition | undefined, isRoot: boolean, baseConstraints?: PlannerConstraint, limit?: number, name?: string);
|
|
61
62
|
setOutput(node: PlannerNode): void;
|
|
62
63
|
get output(): PlannerNode;
|
|
63
64
|
closestJoinOrSource(): JoinOrConnection;
|
|
@@ -75,8 +76,8 @@ export declare class PlannerConnection {
|
|
|
75
76
|
* The max of the last element of the paths is the number of
|
|
76
77
|
* root branches.
|
|
77
78
|
*/
|
|
78
|
-
propagateConstraints(path: number[], c: PlannerConstraint | undefined): void;
|
|
79
|
-
estimateCost(branchPattern
|
|
79
|
+
propagateConstraints(path: number[], c: PlannerConstraint | undefined, from?: PlannerNode, planDebugger?: PlanDebugger): void;
|
|
80
|
+
estimateCost(downstreamChildSelectivity: number, branchPattern: number[], planDebugger?: PlanDebugger): CostEstimate;
|
|
80
81
|
/**
|
|
81
82
|
* Remove the limit from this connection.
|
|
82
83
|
* Called when a parent join is flipped, making this connection part of an
|
|
@@ -104,6 +105,11 @@ export declare class PlannerConnection {
|
|
|
104
105
|
* Returns a copy of the constraints map.
|
|
105
106
|
*/
|
|
106
107
|
getConstraintsForDebug(): Map<string, PlannerConstraint | undefined>;
|
|
108
|
+
/**
|
|
109
|
+
* Get filters for debugging.
|
|
110
|
+
* Returns the filters applied to this connection.
|
|
111
|
+
*/
|
|
112
|
+
getFiltersForDebug(): Condition | undefined;
|
|
107
113
|
/**
|
|
108
114
|
* Get estimated cost for each constraint branch.
|
|
109
115
|
* Returns a map of constraint key to cost estimate.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-connection.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBAAa,iBAAiB;;IAC5B,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IAQtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAM7B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"planner-connection.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3E,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;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBAAa,iBAAiB;;IAC5B,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IAQtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAM7B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;gBAqBxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,MAAM,EAAE,OAAO,EACf,eAAe,CAAC,EAAE,iBAAiB,EACnC,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM;IA4Bf,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,mBAAmB,IAAI,gBAAgB;IAIvC;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAClB,IAAI,EAAE,MAAM,EAAE,EACd,CAAC,EAAE,iBAAiB,GAAG,SAAS,EAChC,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI;IAgBP,YAAY,CACV,0BAA0B,EAAE,MAAM,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IAiDf;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAaf;;;OAGG;IACH,+BAA+B,IAAI,IAAI;IAIvC,KAAK;IAOL;;;OAGG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAIhE;;;OAGG;IACH,kBAAkB,CAChB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,GACtD,IAAI;IASP;;;OAGG;IACH,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAIpE;;;OAGG;IACH,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAI3C;;;;OAIG;IACH,0BAA0B,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;CAIxD;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,UAAU,EAAE,iBAAiB,GAAG,SAAS,KACtC,aAAa,CAAC"}
|
|
@@ -75,19 +75,14 @@ export class PlannerConnection {
|
|
|
75
75
|
* a single join in the UFO is flipped - other branches report undefined.
|
|
76
76
|
*/
|
|
77
77
|
#constraints;
|
|
78
|
-
|
|
79
|
-
* Cached total cost (sum of all branches) to avoid redundant calculations.
|
|
80
|
-
* Invalidated when constraints change.
|
|
81
|
-
*/
|
|
82
|
-
#cachedTotalCost = undefined;
|
|
78
|
+
#isRoot;
|
|
83
79
|
/**
|
|
84
80
|
* Cached per-constraint costs to avoid redundant cost model calls.
|
|
85
81
|
* Maps constraint key (branch pattern string) to computed cost.
|
|
86
82
|
* Invalidated when constraints change.
|
|
87
83
|
*/
|
|
88
84
|
#cachedConstraintCosts = new Map();
|
|
89
|
-
|
|
90
|
-
constructor(table, model, sort, filters, baseConstraints, limit, name) {
|
|
85
|
+
constructor(table, model, sort, filters, isRoot, baseConstraints, limit, name) {
|
|
91
86
|
this.table = table;
|
|
92
87
|
this.name = name ?? table;
|
|
93
88
|
this.#sort = sort;
|
|
@@ -97,6 +92,7 @@ export class PlannerConnection {
|
|
|
97
92
|
this.#baseLimit = limit;
|
|
98
93
|
this.limit = limit;
|
|
99
94
|
this.#constraints = new Map();
|
|
95
|
+
this.#isRoot = isRoot;
|
|
100
96
|
// Compute selectivity for EXISTS child connections (baseLimit === 1)
|
|
101
97
|
// Selectivity = fraction of rows that pass filters
|
|
102
98
|
if (limit !== undefined && filters) {
|
|
@@ -136,78 +132,21 @@ export class PlannerConnection {
|
|
|
136
132
|
* The max of the last element of the paths is the number of
|
|
137
133
|
* root branches.
|
|
138
134
|
*/
|
|
139
|
-
propagateConstraints(path, c) {
|
|
135
|
+
propagateConstraints(path, c, from, planDebugger) {
|
|
140
136
|
const key = path.join(',');
|
|
141
137
|
this.#constraints.set(key, c);
|
|
142
138
|
// Constraints changed, invalidate cost caches
|
|
143
|
-
this.#cachedTotalCost = undefined;
|
|
144
139
|
this.#cachedConstraintCosts.clear();
|
|
145
|
-
|
|
140
|
+
planDebugger?.log({
|
|
141
|
+
type: 'node-constraint',
|
|
142
|
+
nodeType: 'connection',
|
|
143
|
+
node: this.name,
|
|
144
|
+
branchPattern: path,
|
|
145
|
+
constraint: c,
|
|
146
|
+
from: from?.kind ?? 'unknown',
|
|
147
|
+
});
|
|
146
148
|
}
|
|
147
|
-
estimateCost(branchPattern) {
|
|
148
|
-
// If no branch pattern specified, return sum of all branches
|
|
149
|
-
// This is used by getUnpinnedConnectionCosts to get total cost
|
|
150
|
-
if (branchPattern === undefined) {
|
|
151
|
-
// Return cached total cost if still valid
|
|
152
|
-
if (!this.#costDirty && this.#cachedTotalCost !== undefined) {
|
|
153
|
-
return this.#cachedTotalCost;
|
|
154
|
-
}
|
|
155
|
-
// Calculate fresh cost - sum of all branch costs
|
|
156
|
-
let totalRows = 0;
|
|
157
|
-
let maxStartupCost = 0;
|
|
158
|
-
if (this.#constraints.size === 0) {
|
|
159
|
-
// No constraints - compute unconstrained cost (but still merge base constraints)
|
|
160
|
-
const key = '';
|
|
161
|
-
let cost = this.#cachedConstraintCosts.get(key);
|
|
162
|
-
if (cost === undefined) {
|
|
163
|
-
// Merge base constraints even when no propagated constraints
|
|
164
|
-
const { startupCost, rows } = this.#model(this.table, this.#sort, this.#filters, this.#baseConstraints);
|
|
165
|
-
cost = {
|
|
166
|
-
rows,
|
|
167
|
-
runningCost: rows,
|
|
168
|
-
startupCost,
|
|
169
|
-
selectivity: this.selectivity,
|
|
170
|
-
limit: this.limit,
|
|
171
|
-
};
|
|
172
|
-
this.#cachedConstraintCosts.set(key, cost);
|
|
173
|
-
}
|
|
174
|
-
totalRows = cost.rows;
|
|
175
|
-
maxStartupCost = cost.startupCost;
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
// Sum costs for all constraint branches
|
|
179
|
-
for (const [key, constraint] of this.#constraints.entries()) {
|
|
180
|
-
let cost = this.#cachedConstraintCosts.get(key);
|
|
181
|
-
if (cost === undefined) {
|
|
182
|
-
// Merge base constraints with propagated constraints
|
|
183
|
-
const mergedConstraint = mergeConstraints(this.#baseConstraints, constraint);
|
|
184
|
-
const { startupCost, rows } = this.#model(this.table, this.#sort, this.#filters, mergedConstraint);
|
|
185
|
-
cost = {
|
|
186
|
-
rows,
|
|
187
|
-
runningCost: rows,
|
|
188
|
-
startupCost,
|
|
189
|
-
selectivity: this.selectivity,
|
|
190
|
-
limit: this.limit,
|
|
191
|
-
};
|
|
192
|
-
this.#cachedConstraintCosts.set(key, cost);
|
|
193
|
-
}
|
|
194
|
-
totalRows += cost.rows;
|
|
195
|
-
// TODO: if no branch pattern is specified, should we sum startup costs?
|
|
196
|
-
maxStartupCost = Math.max(maxStartupCost, cost.startupCost);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
const ret = {
|
|
200
|
-
rows: totalRows,
|
|
201
|
-
runningCost: totalRows,
|
|
202
|
-
startupCost: maxStartupCost,
|
|
203
|
-
selectivity: this.selectivity,
|
|
204
|
-
limit: this.limit,
|
|
205
|
-
};
|
|
206
|
-
// Cache total and mark as clean
|
|
207
|
-
this.#cachedTotalCost = ret;
|
|
208
|
-
this.#costDirty = false;
|
|
209
|
-
return ret;
|
|
210
|
-
}
|
|
149
|
+
estimateCost(downstreamChildSelectivity, branchPattern, planDebugger) {
|
|
211
150
|
// Branch pattern specified - return cost for this specific branch
|
|
212
151
|
const key = branchPattern.join(',');
|
|
213
152
|
// Check per-constraint cache first
|
|
@@ -221,13 +160,25 @@ export class PlannerConnection {
|
|
|
221
160
|
const mergedConstraint = mergeConstraints(this.#baseConstraints, constraint);
|
|
222
161
|
const { startupCost, rows } = this.#model(this.table, this.#sort, this.#filters, mergedConstraint);
|
|
223
162
|
cost = {
|
|
224
|
-
rows,
|
|
225
|
-
runningCost: rows,
|
|
226
163
|
startupCost,
|
|
164
|
+
scanEst: this.limit === undefined
|
|
165
|
+
? rows
|
|
166
|
+
: Math.min(rows, this.limit / downstreamChildSelectivity),
|
|
167
|
+
cost: 0,
|
|
168
|
+
returnedRows: rows,
|
|
227
169
|
selectivity: this.selectivity,
|
|
228
170
|
limit: this.limit,
|
|
229
171
|
};
|
|
230
172
|
this.#cachedConstraintCosts.set(key, cost);
|
|
173
|
+
planDebugger?.log({
|
|
174
|
+
type: 'node-cost',
|
|
175
|
+
nodeType: 'connection',
|
|
176
|
+
node: this.name,
|
|
177
|
+
branchPattern,
|
|
178
|
+
downstreamChildSelectivity,
|
|
179
|
+
costEstimate: cost,
|
|
180
|
+
filters: this.#filters,
|
|
181
|
+
});
|
|
231
182
|
return cost;
|
|
232
183
|
}
|
|
233
184
|
/**
|
|
@@ -236,6 +187,10 @@ export class PlannerConnection {
|
|
|
236
187
|
* outer loop that should produce all rows rather than stopping at the limit.
|
|
237
188
|
*/
|
|
238
189
|
unlimit() {
|
|
190
|
+
if (this.#isRoot) {
|
|
191
|
+
// We cannot unlimit root connections
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
239
194
|
if (this.limit !== undefined) {
|
|
240
195
|
this.limit = undefined;
|
|
241
196
|
// Limit changes do not impact connection costs.
|
|
@@ -254,9 +209,7 @@ export class PlannerConnection {
|
|
|
254
209
|
this.#constraints.clear();
|
|
255
210
|
this.limit = this.#baseLimit;
|
|
256
211
|
// Clear all cost caches
|
|
257
|
-
this.#cachedTotalCost = undefined;
|
|
258
212
|
this.#cachedConstraintCosts.clear();
|
|
259
|
-
this.#costDirty = true;
|
|
260
213
|
}
|
|
261
214
|
/**
|
|
262
215
|
* Capture constraint state for snapshotting.
|
|
@@ -275,9 +228,7 @@ export class PlannerConnection {
|
|
|
275
228
|
this.#constraints.set(key, value);
|
|
276
229
|
}
|
|
277
230
|
// Constraints changed, invalidate cost caches
|
|
278
|
-
this.#cachedTotalCost = undefined;
|
|
279
231
|
this.#cachedConstraintCosts.clear();
|
|
280
|
-
this.#costDirty = true;
|
|
281
232
|
}
|
|
282
233
|
/**
|
|
283
234
|
* Get current constraints for debugging.
|
|
@@ -286,14 +237,19 @@ export class PlannerConnection {
|
|
|
286
237
|
getConstraintsForDebug() {
|
|
287
238
|
return new Map(this.#constraints);
|
|
288
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Get filters for debugging.
|
|
242
|
+
* Returns the filters applied to this connection.
|
|
243
|
+
*/
|
|
244
|
+
getFiltersForDebug() {
|
|
245
|
+
return this.#filters;
|
|
246
|
+
}
|
|
289
247
|
/**
|
|
290
248
|
* Get estimated cost for each constraint branch.
|
|
291
249
|
* Returns a map of constraint key to cost estimate.
|
|
292
250
|
* Forces cost calculation if not already cached.
|
|
293
251
|
*/
|
|
294
252
|
getConstraintCostsForDebug() {
|
|
295
|
-
// Trigger cost calculation to populate cache
|
|
296
|
-
this.estimateCost(undefined);
|
|
297
253
|
// Return copy of cached costs
|
|
298
254
|
return new Map(this.#cachedConstraintCosts);
|
|
299
255
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-connection.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAEtD,OAAO,EACL,gBAAgB,GAEjB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"planner-connection.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { Condition } from '../../../zero-protocol/src/ast.ts';
|
|
1
2
|
import type { PlannerConstraint } from './planner-constraint.ts';
|
|
2
|
-
import type { CostEstimate, JoinType
|
|
3
|
+
import type { CostEstimate, JoinType } from './planner-node.ts';
|
|
3
4
|
/**
|
|
4
5
|
* Structured debug events emitted during query planning.
|
|
5
6
|
* These events can be accumulated, printed, or analyzed to understand
|
|
@@ -57,15 +58,12 @@ export type PlanCompleteEvent = {
|
|
|
57
58
|
type: 'plan-complete';
|
|
58
59
|
attemptNumber: number;
|
|
59
60
|
totalCost: number;
|
|
60
|
-
|
|
61
|
-
node: string;
|
|
62
|
-
nodeType: NodeType;
|
|
63
|
-
costEstimate: CostEstimate;
|
|
64
|
-
}>;
|
|
61
|
+
flipPattern: number;
|
|
65
62
|
joinStates: Array<{
|
|
66
63
|
join: string;
|
|
67
64
|
type: JoinType;
|
|
68
65
|
}>;
|
|
66
|
+
planSnapshot?: unknown;
|
|
69
67
|
};
|
|
70
68
|
/**
|
|
71
69
|
* Planning attempt failed (e.g., unflippable join).
|
|
@@ -82,15 +80,46 @@ export type BestPlanSelectedEvent = {
|
|
|
82
80
|
type: 'best-plan-selected';
|
|
83
81
|
bestAttemptNumber: number;
|
|
84
82
|
totalCost: number;
|
|
83
|
+
flipPattern: number;
|
|
85
84
|
joinStates: Array<{
|
|
86
85
|
join: string;
|
|
87
86
|
type: JoinType;
|
|
88
87
|
}>;
|
|
89
88
|
};
|
|
89
|
+
/**
|
|
90
|
+
* A node computed its cost estimate during planning.
|
|
91
|
+
* Emitted by nodes during estimateCost() traversal.
|
|
92
|
+
* attemptNumber is added by the debugger.
|
|
93
|
+
*/
|
|
94
|
+
export type NodeCostEvent = {
|
|
95
|
+
type: 'node-cost';
|
|
96
|
+
attemptNumber?: number;
|
|
97
|
+
nodeType: 'connection' | 'join' | 'fan-out' | 'fan-in' | 'terminus';
|
|
98
|
+
node: string;
|
|
99
|
+
branchPattern: number[];
|
|
100
|
+
downstreamChildSelectivity: number;
|
|
101
|
+
costEstimate: CostEstimate;
|
|
102
|
+
filters?: Condition | undefined;
|
|
103
|
+
joinType?: JoinType | undefined;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* A node received constraints during constraint propagation.
|
|
107
|
+
* Emitted by nodes during propagateConstraints() traversal.
|
|
108
|
+
* attemptNumber is added by the debugger.
|
|
109
|
+
*/
|
|
110
|
+
export type NodeConstraintEvent = {
|
|
111
|
+
type: 'node-constraint';
|
|
112
|
+
attemptNumber?: number;
|
|
113
|
+
nodeType: 'connection' | 'join' | 'fan-out' | 'fan-in' | 'terminus';
|
|
114
|
+
node: string;
|
|
115
|
+
branchPattern: number[];
|
|
116
|
+
constraint: PlannerConstraint | undefined;
|
|
117
|
+
from: string;
|
|
118
|
+
};
|
|
90
119
|
/**
|
|
91
120
|
* Union of all debug event types.
|
|
92
121
|
*/
|
|
93
|
-
export type PlanDebugEvent = AttemptStartEvent | ConnectionCostsEvent | ConnectionSelectedEvent | ConstraintsPropagatedEvent | PlanCompleteEvent | PlanFailedEvent | BestPlanSelectedEvent;
|
|
122
|
+
export type PlanDebugEvent = AttemptStartEvent | ConnectionCostsEvent | ConnectionSelectedEvent | ConstraintsPropagatedEvent | PlanCompleteEvent | PlanFailedEvent | BestPlanSelectedEvent | NodeCostEvent | NodeConstraintEvent;
|
|
94
123
|
/**
|
|
95
124
|
* Interface for objects that receive debug events during planning.
|
|
96
125
|
*/
|
|
@@ -103,6 +132,7 @@ export interface PlanDebugger {
|
|
|
103
132
|
*/
|
|
104
133
|
export declare class AccumulatorDebugger implements PlanDebugger {
|
|
105
134
|
readonly events: PlanDebugEvent[];
|
|
135
|
+
private currentAttempt;
|
|
106
136
|
log(event: PlanDebugEvent): void;
|
|
107
137
|
/**
|
|
108
138
|
* Get all events of a specific type.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-debug.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"planner-debug.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-debug.ts"],"names":[],"mappings":"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"}
|