@rocicorp/zero 0.25.0-canary.4 → 0.25.0-canary.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/{chunk-HE4M4K7Q.js → chunk-FODUNUAD.js} +82 -86
- package/out/chunk-FODUNUAD.js.map +7 -0
- package/out/{chunk-ZZXMKAAG.js → chunk-HCZQVP5R.js} +2 -2
- package/out/{chunk-3KJ5OEIB.js → chunk-S633A55A.js} +2 -2
- package/out/{chunk-3KJ5OEIB.js.map → chunk-S633A55A.js.map} +1 -1
- package/out/{chunk-ECUMGQGC.js → chunk-WPAQ4EPM.js} +13 -3
- package/out/{chunk-ECUMGQGC.js.map → chunk-WPAQ4EPM.js.map} +2 -2
- package/out/expo-sqlite.js +2 -2
- package/out/op-sqlite.js +1 -1
- package/out/react-native.js +2 -2
- package/out/react.js +2 -1
- package/out/react.js.map +2 -2
- package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
- package/out/shared/src/deep-merge.d.ts +6 -3
- package/out/shared/src/deep-merge.d.ts.map +1 -1
- package/out/shared/src/options.d.ts +2 -0
- package/out/shared/src/options.d.ts.map +1 -1
- package/out/shared/src/options.js +8 -4
- package/out/shared/src/options.js.map +1 -1
- package/out/solid.js +2 -2
- package/out/sqlite.js +1 -1
- package/out/zero/package.json +3 -3
- package/out/zero/src/zero-cache-dev.js +59 -40
- package/out/zero/src/zero-cache-dev.js.map +1 -1
- package/out/zero-cache/src/db/mode-enum.d.ts +2 -0
- package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -1
- package/out/zero-cache/src/db/mode-enum.js +1 -0
- package/out/zero-cache/src/db/mode-enum.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +1 -1
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js +6 -2
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +2 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +7 -0
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js +5 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +58 -0
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.js +19 -0
- package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -0
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +5 -0
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +43 -11
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js +5 -6
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +8 -4
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +95 -102
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js +6 -3
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
- 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 +4 -29
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.d.ts +2 -2
- package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.js +2 -2
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
- package/out/zero-client/src/client/connection.d.ts +2 -2
- package/out/zero-client/src/client/connection.d.ts.map +1 -1
- package/out/zero-client/src/client/context.d.ts +2 -2
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +5 -5
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
- package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/metrics.d.ts +2 -2
- package/out/zero-client/src/client/metrics.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts +4 -4
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts +2 -2
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/reload-error-handler.d.ts +3 -3
- package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +2 -2
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +2 -2
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +1 -1
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/mod.d.ts +1 -1
- package/out/zero-react/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/zero-provider.d.ts +1 -0
- package/out/zero-react/src/zero-provider.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.js +1 -1
- package/out/zero-server/src/adapters/drizzle.js.map +1 -1
- package/out/zero-server/src/adapters/pg.d.ts +1 -1
- package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
- package/out/zero-server/src/adapters/pg.js +1 -1
- package/out/zero-server/src/adapters/pg.js.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.d.ts +1 -1
- package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.js +1 -1
- package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
- package/out/zero-server/src/custom.js +1 -1
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero.js +2 -2
- package/out/zql/src/builder/builder.d.ts +1 -1
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.d.ts +1 -1
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/planner/planner-connection.d.ts +7 -0
- package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
- package/out/zql/src/planner/planner-connection.js +2 -1
- package/out/zql/src/planner/planner-connection.js.map +1 -1
- package/out/zql/src/planner/planner-debug.d.ts +2 -1
- package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
- package/out/zql/src/planner/planner-fan-in.js +5 -0
- package/out/zql/src/planner/planner-fan-in.js.map +1 -1
- package/out/zql/src/planner/planner-graph.d.ts +1 -2
- package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
- package/out/zql/src/planner/planner-graph.js +49 -68
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.d.ts +6 -2
- package/out/zql/src/planner/planner-join.d.ts.map +1 -1
- package/out/zql/src/planner/planner-join.js +27 -11
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-node.d.ts +2 -1
- package/out/zql/src/planner/planner-node.d.ts.map +1 -1
- package/out/zql/src/query/define-query.d.ts +3 -3
- package/out/zql/src/query/define-query.d.ts.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.js +10 -3
- package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
- package/out/zqlite/src/sqlite-stat-fanout.d.ts +121 -0
- package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -0
- package/out/zqlite/src/sqlite-stat-fanout.js +377 -0
- package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -0
- package/package.json +3 -3
- package/out/chunk-HE4M4K7Q.js.map +0 -7
- package/out/zero-client/src/client/zero-log-context.d.ts +0 -7
- package/out/zero-client/src/client/zero-log-context.d.ts.map +0 -1
- /package/out/{chunk-ZZXMKAAG.js.map → chunk-HCZQVP5R.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-fan-in.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-in.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY;;IACvB,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;gBAKtB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE;IAK3D,IAAI,IAAI,iBAEP;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,KAAK;IAIL,YAAY,IAAI,IAAI;IAIpB;;;OAGG;IACH,+BAA+B,IAAI,IAAI;IAavC,YAAY,CACV,0BAA0B,EAAE,MAAM,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;
|
|
1
|
+
{"version":3,"file":"planner-fan-in.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-in.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY;;IACvB,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;gBAKtB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE;IAK3D,IAAI,IAAI,iBAEP;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,KAAK;IAIL,YAAY,IAAI,IAAI;IAIpB;;;OAGG;IACH,+BAA+B,IAAI,IAAI;IAavC,YAAY,CACV,0BAA0B,EAAE,MAAM,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IA4Gf,oBAAoB,CAClB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI;CAyCR"}
|
|
@@ -65,6 +65,9 @@ export class PlannerFanIn {
|
|
|
65
65
|
startupCost: 0,
|
|
66
66
|
selectivity: 0,
|
|
67
67
|
limit: undefined,
|
|
68
|
+
fanout: () => {
|
|
69
|
+
throw new Error('Failed to set fanout model');
|
|
70
|
+
},
|
|
68
71
|
};
|
|
69
72
|
if (this.#type === 'FI') {
|
|
70
73
|
// Normal FanIn: all inputs get the same branch pattern with 0 prepended
|
|
@@ -76,6 +79,7 @@ export class PlannerFanIn {
|
|
|
76
79
|
let noMatchProb = 1.0;
|
|
77
80
|
for (const input of this.#inputs) {
|
|
78
81
|
const cost = input.estimateCost(downstreamChildSelectivity, updatedPattern, planDebugger);
|
|
82
|
+
totalCost.fanout = cost.fanout;
|
|
79
83
|
if (cost.returnedRows > maxrows) {
|
|
80
84
|
maxrows = cost.returnedRows;
|
|
81
85
|
}
|
|
@@ -109,6 +113,7 @@ export class PlannerFanIn {
|
|
|
109
113
|
for (const input of this.#inputs) {
|
|
110
114
|
const updatedPattern = [i, ...branchPattern];
|
|
111
115
|
const cost = input.estimateCost(downstreamChildSelectivity, updatedPattern, planDebugger);
|
|
116
|
+
totalCost.fanout = cost.fanout;
|
|
112
117
|
totalCost.returnedRows += cost.returnedRows;
|
|
113
118
|
totalCost.cost += cost.cost;
|
|
114
119
|
totalCost.scanEst += cost.scanEst;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-fan-in.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-in.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAUtD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,YAAY;IACd,IAAI,GAAG,QAAiB,CAAC;IAClC,KAAK,CAAe;IACpB,OAAO,CAA2B;IACzB,OAAO,CAA0C;IAE1D,YAAY,MAA+C;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,mBAAmB;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,IAAiB;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAI,MAAM;QACR,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,+BAA+B;QAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IACE,iCAAiC,IAAI,KAAK;gBAC1C,OAAO,KAAK,CAAC,+BAA+B,KAAK,UAAU,EAC3D,CAAC;gBAEC,KACD,CAAC,+BAA+B,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CACV,0BAAkC,EAClC,aAAuB,EACvB,YAA2B;QAE3B,wCAAwC;QACxC,gEAAgE;QAChE,IAAI,SAAS,GAAiB;YAC5B,YAAY,EAAE,CAAC;YACf,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"planner-fan-in.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-fan-in.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import type { PlanDebugger } from './planner-debug.ts';
|
|
|
9
9
|
/**
|
|
10
10
|
* Captured state of a plan for comparison and restoration.
|
|
11
11
|
*/
|
|
12
|
-
type PlanState = {
|
|
12
|
+
export type PlanState = {
|
|
13
13
|
connections: Array<{
|
|
14
14
|
limit: number | undefined;
|
|
15
15
|
}>;
|
|
@@ -99,5 +99,4 @@ export declare class PlannerGraph {
|
|
|
99
99
|
*/
|
|
100
100
|
plan(planDebugger?: PlanDebugger): void;
|
|
101
101
|
}
|
|
102
|
-
export {};
|
|
103
102
|
//# sourceMappingURL=planner-graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-graph.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,aAAa,EAAE,KAAK,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"planner-graph.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,aAAa,EAAE,KAAK,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC,CAAC,CAAC;IAChD,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAA;KAAC,CAAC,CAAC;IACrC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAA;KAAC,CAAC,CAAC;IACpC,qBAAqB,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC;CAC1E,CAAC;AAkBF,qBAAa,YAAY;;IAQvB,KAAK,EAAE,WAAW,EAAE,CAAM;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAM;IAC5B,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAEtC;;;;;OAKG;IACH,kBAAkB;IAOlB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,aAAa;IAUlE;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAMtC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI5C;;;;OAIG;IACH,oBAAoB,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;IAQvD;;;OAGG;IACH,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM;IAKjD;;;;;;;;OAQG;IACH,uBAAuB,IAAI,SAAS;IAYpC;;;;;;;;OAQG;IACH,uBAAuB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAsF/C;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;CAqHxC"}
|
|
@@ -144,9 +144,10 @@ export class PlannerGraph {
|
|
|
144
144
|
// Reset to initial state first
|
|
145
145
|
join.reset();
|
|
146
146
|
// Apply target state
|
|
147
|
-
if (targetState.type === 'flipped') {
|
|
147
|
+
if (targetState.type === 'flipped' && join.type !== 'flipped') {
|
|
148
148
|
join.flip();
|
|
149
149
|
}
|
|
150
|
+
assert(targetState.type === join.type, 'join is not in the correct state after reset');
|
|
150
151
|
}
|
|
151
152
|
}
|
|
152
153
|
/**
|
|
@@ -191,17 +192,12 @@ export class PlannerGraph {
|
|
|
191
192
|
}
|
|
192
193
|
// Build FO→FI cache once to avoid redundant BFS traversals in each iteration
|
|
193
194
|
const fofiCache = buildFOFICache(this);
|
|
194
|
-
const numPatterns = 2 ** flippableJoins.length;
|
|
195
|
+
const numPatterns = flippableJoins.length === 0 ? 0 : 2 ** flippableJoins.length;
|
|
195
196
|
let bestCost = Infinity;
|
|
196
197
|
let bestPlan = undefined;
|
|
197
198
|
let bestAttemptNumber = -1;
|
|
198
199
|
// Enumerate all flip patterns
|
|
199
|
-
// try 7 and 32 (6 and 31)
|
|
200
|
-
const forcePattern = undefined; // 11 14
|
|
201
200
|
for (let pattern = 0; pattern < numPatterns; pattern++) {
|
|
202
|
-
if (forcePattern !== undefined && pattern !== forcePattern) {
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
201
|
// Reset to initial state
|
|
206
202
|
this.resetPlanningState();
|
|
207
203
|
if (planDebugger) {
|
|
@@ -211,67 +207,53 @@ export class PlannerGraph {
|
|
|
211
207
|
totalAttempts: numPatterns,
|
|
212
208
|
});
|
|
213
209
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
flippableJoins[i].flip();
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
// Derive FO/UFO and FI/UFI states from join flip states
|
|
223
|
-
checkAndConvertFOFI(fofiCache);
|
|
224
|
-
// Propagate unlimiting for flipped joins
|
|
225
|
-
propagateUnlimitForFlippedJoins(this);
|
|
226
|
-
// Propagate constraints through the graph
|
|
227
|
-
this.propagateConstraints(planDebugger);
|
|
228
|
-
if (planDebugger) {
|
|
229
|
-
planDebugger.log({
|
|
230
|
-
type: 'constraints-propagated',
|
|
231
|
-
attemptNumber: pattern,
|
|
232
|
-
connectionConstraints: this.connections.map(c => ({
|
|
233
|
-
connection: c.name,
|
|
234
|
-
constraints: c.getConstraintsForDebug(),
|
|
235
|
-
constraintCosts: c.getConstraintCostsForDebug(),
|
|
236
|
-
})),
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
// Evaluate this plan
|
|
240
|
-
const totalCost = this.getTotalCost(planDebugger);
|
|
241
|
-
if (planDebugger) {
|
|
242
|
-
planDebugger.log({
|
|
243
|
-
type: 'plan-complete',
|
|
244
|
-
attemptNumber: pattern,
|
|
245
|
-
totalCost,
|
|
246
|
-
flipPattern: pattern, // Bitmask of which joins are flipped
|
|
247
|
-
// TODO: we'll need a different way to collect these
|
|
248
|
-
// nodeCosts: this.#collectNodeCosts(),
|
|
249
|
-
joinStates: this.joins.map(j => {
|
|
250
|
-
const info = j.getDebugInfo();
|
|
251
|
-
return {
|
|
252
|
-
join: info.name,
|
|
253
|
-
type: info.type,
|
|
254
|
-
};
|
|
255
|
-
}),
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
// Track best plan
|
|
259
|
-
if (totalCost < bestCost) {
|
|
260
|
-
bestCost = totalCost;
|
|
261
|
-
bestPlan = this.capturePlanningSnapshot();
|
|
262
|
-
bestAttemptNumber = pattern;
|
|
210
|
+
// Apply flip pattern (treat pattern as bitmask)
|
|
211
|
+
// Bit i set to 1 means flip join i
|
|
212
|
+
for (let i = 0; i < flippableJoins.length; i++) {
|
|
213
|
+
if (pattern & (1 << i)) {
|
|
214
|
+
flippableJoins[i].flip();
|
|
263
215
|
}
|
|
264
216
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
217
|
+
// Derive FO/UFO and FI/UFI states from join flip states
|
|
218
|
+
checkAndConvertFOFI(fofiCache);
|
|
219
|
+
// Propagate unlimiting for flipped joins
|
|
220
|
+
propagateUnlimitForFlippedJoins(this);
|
|
221
|
+
// Propagate constraints through the graph
|
|
222
|
+
this.propagateConstraints(planDebugger);
|
|
223
|
+
if (planDebugger) {
|
|
224
|
+
planDebugger.log({
|
|
225
|
+
type: 'constraints-propagated',
|
|
226
|
+
attemptNumber: pattern,
|
|
227
|
+
connectionConstraints: this.connections.map(c => ({
|
|
228
|
+
connection: c.name,
|
|
229
|
+
constraints: c.getConstraintsForDebug(),
|
|
230
|
+
constraintCosts: c.getConstraintCostsForDebug(),
|
|
231
|
+
})),
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
// Evaluate this plan
|
|
235
|
+
const totalCost = this.getTotalCost(planDebugger);
|
|
236
|
+
if (planDebugger) {
|
|
237
|
+
planDebugger.log({
|
|
238
|
+
type: 'plan-complete',
|
|
239
|
+
attemptNumber: pattern,
|
|
240
|
+
totalCost,
|
|
241
|
+
flipPattern: pattern, // Bitmask of which joins are flipped
|
|
242
|
+
planSnapshot: this.capturePlanningSnapshot(),
|
|
243
|
+
joinStates: this.joins.map(j => {
|
|
244
|
+
const info = j.getDebugInfo();
|
|
245
|
+
return {
|
|
246
|
+
join: info.name,
|
|
247
|
+
type: info.type,
|
|
248
|
+
};
|
|
249
|
+
}),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
// Track best plan
|
|
253
|
+
if (totalCost < bestCost) {
|
|
254
|
+
bestCost = totalCost;
|
|
255
|
+
bestPlan = this.capturePlanningSnapshot();
|
|
256
|
+
bestAttemptNumber = pattern;
|
|
275
257
|
}
|
|
276
258
|
}
|
|
277
259
|
// Restore best plan
|
|
@@ -293,8 +275,7 @@ export class PlannerGraph {
|
|
|
293
275
|
}
|
|
294
276
|
}
|
|
295
277
|
else {
|
|
296
|
-
|
|
297
|
-
throw new Error('No valid query plan found. This should not happen - check query structure.');
|
|
278
|
+
assert(numPatterns === 0, 'no plan was found but flippable joins did exist!');
|
|
298
279
|
}
|
|
299
280
|
}
|
|
300
281
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-graph.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-graph.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"planner-graph.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,8 +76,9 @@ export declare class PlannerJoin {
|
|
|
76
76
|
propagateUnlimit(): void;
|
|
77
77
|
/**
|
|
78
78
|
* Called when a parent join is flipped and this join is part of its child subgraph.
|
|
79
|
-
*
|
|
80
|
-
*
|
|
79
|
+
* Continue propagation to parent (the outer loop).
|
|
80
|
+
* If we are hitting a semi-join, the parent drives.
|
|
81
|
+
* If we are hitting a flip-join, well now we have to unlimit its parent too!
|
|
81
82
|
*/
|
|
82
83
|
propagateUnlimitFromFlippedJoin(): void;
|
|
83
84
|
propagateConstraints(branchPattern: number[], constraint: PlannerConstraint | undefined, from?: PlannerNode, planDebugger?: PlanDebugger): void;
|
|
@@ -88,6 +89,9 @@ export declare class PlannerJoin {
|
|
|
88
89
|
* Each one will constrain how often a parent row passes all constraints.
|
|
89
90
|
* This means that we have to scan more and more parent rows the more
|
|
90
91
|
* constraints we add.
|
|
92
|
+
*
|
|
93
|
+
* DownstreamChildSelectivity factors in fanout factor
|
|
94
|
+
* from parent -> child
|
|
91
95
|
*/
|
|
92
96
|
downstreamChildSelectivity: number,
|
|
93
97
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-join.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAoC3D;;;;;;;;;;;;;;;GAeG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,WAAW;;IACtB,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAOhC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAQtB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAC7C,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAC5C,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAM,GAAG,SAAkB;IAY1C,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAWtC,IAAI,IAAI,IAAI;IAUZ,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IACD,WAAW,IAAI,OAAO;IAItB;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,IAAI,IAAI;IAMxB
|
|
1
|
+
{"version":3,"file":"planner-join.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAoC3D;;;;;;;;;;;;;;;GAeG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,WAAW;;IACtB,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAOhC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAQtB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAC7C,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAC5C,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAM,GAAG,SAAkB;IAY1C,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAWtC,IAAI,IAAI,IAAI;IAUZ,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IACD,WAAW,IAAI,OAAO;IAItB;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;;;;OAKG;IACH,+BAA+B,IAAI,IAAI;IAIvC,oBAAoB,CAClB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI;IAuDP,KAAK,IAAI,IAAI;IAIb,YAAY;IACV;;;;;;;;OAQG;IACH,0BAA0B,EAAE,MAAM;IAClC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IAoGf;;;OAGG;IACH,OAAO,IAAI,MAAM;IAMjB;;OAEG;IACH,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB;CAOF;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -142,19 +142,17 @@ export class PlannerJoin {
|
|
|
142
142
|
*/
|
|
143
143
|
propagateUnlimit() {
|
|
144
144
|
assert(this.#type === 'flipped', 'Can only unlimit a flipped join');
|
|
145
|
-
|
|
145
|
+
// Parent stays limited; child becomes unlimited
|
|
146
146
|
this.#child.propagateUnlimitFromFlippedJoin(); // Up the child chain
|
|
147
147
|
}
|
|
148
148
|
/**
|
|
149
149
|
* Called when a parent join is flipped and this join is part of its child subgraph.
|
|
150
|
-
*
|
|
151
|
-
*
|
|
150
|
+
* Continue propagation to parent (the outer loop).
|
|
151
|
+
* If we are hitting a semi-join, the parent drives.
|
|
152
|
+
* If we are hitting a flip-join, well now we have to unlimit its parent too!
|
|
152
153
|
*/
|
|
153
154
|
propagateUnlimitFromFlippedJoin() {
|
|
154
|
-
|
|
155
|
-
this.#parent.propagateUnlimitFromFlippedJoin();
|
|
156
|
-
}
|
|
157
|
-
// For flipped joins, stop propagation
|
|
155
|
+
this.#parent.propagateUnlimitFromFlippedJoin();
|
|
158
156
|
}
|
|
159
157
|
propagateConstraints(branchPattern, constraint, from, planDebugger) {
|
|
160
158
|
planDebugger?.log({
|
|
@@ -195,6 +193,9 @@ export class PlannerJoin {
|
|
|
195
193
|
* Each one will constrain how often a parent row passes all constraints.
|
|
196
194
|
* This means that we have to scan more and more parent rows the more
|
|
197
195
|
* constraints we add.
|
|
196
|
+
*
|
|
197
|
+
* DownstreamChildSelectivity factors in fanout factor
|
|
198
|
+
* from parent -> child
|
|
198
199
|
*/
|
|
199
200
|
downstreamChildSelectivity,
|
|
200
201
|
/**
|
|
@@ -231,6 +232,13 @@ export class PlannerJoin {
|
|
|
231
232
|
* rows are returned.
|
|
232
233
|
*/
|
|
233
234
|
const child = this.#child.estimateCost(1, branchPattern, planDebugger);
|
|
235
|
+
const fanoutFactor = child.fanout(Object.keys(this.#childConstraint));
|
|
236
|
+
// Factor in how many child rows match a parent row.
|
|
237
|
+
// E.g., if an issue has 10 comments on average then we're more
|
|
238
|
+
// likely to hit a comment compared to if an issue has 1 comment on average.
|
|
239
|
+
// If an index is all nulls (no parents match any children)
|
|
240
|
+
// this will collapse to 0.
|
|
241
|
+
const scaledChildSelectivity = 1 - Math.pow(1 - child.selectivity, fanoutFactor.fanout);
|
|
234
242
|
/**
|
|
235
243
|
* How selective is the graph from this point forward?
|
|
236
244
|
* If we are _very_ selective then we must scan more parent rows
|
|
@@ -247,32 +255,40 @@ export class PlannerJoin {
|
|
|
247
255
|
const parent = this.#parent.estimateCost(
|
|
248
256
|
// Selectivity flows up the graph from child to parent
|
|
249
257
|
// so we can determine the total selectivity of all ANDed exists checks.
|
|
250
|
-
|
|
258
|
+
this.#type === 'flipped'
|
|
259
|
+
? 1 * downstreamChildSelectivity
|
|
260
|
+
: scaledChildSelectivity * downstreamChildSelectivity, branchPattern, planDebugger);
|
|
251
261
|
let costEstimate;
|
|
252
262
|
if (this.type === 'semi') {
|
|
253
263
|
costEstimate = {
|
|
254
264
|
startupCost: parent.startupCost,
|
|
255
265
|
scanEst: parent.limit === undefined
|
|
256
266
|
? parent.returnedRows
|
|
257
|
-
: Math.min(parent.returnedRows,
|
|
267
|
+
: Math.min(parent.returnedRows, downstreamChildSelectivity === 0
|
|
268
|
+
? 0
|
|
269
|
+
: parent.limit / downstreamChildSelectivity),
|
|
258
270
|
cost: parent.cost +
|
|
259
271
|
parent.scanEst * (child.startupCost + child.cost + child.scanEst),
|
|
260
272
|
returnedRows: parent.returnedRows * child.selectivity,
|
|
261
273
|
selectivity: child.selectivity * parent.selectivity,
|
|
262
274
|
limit: parent.limit,
|
|
275
|
+
fanout: parent.fanout,
|
|
263
276
|
};
|
|
264
277
|
}
|
|
265
278
|
else {
|
|
266
279
|
costEstimate = {
|
|
267
280
|
startupCost: child.startupCost,
|
|
268
281
|
scanEst: parent.limit === undefined
|
|
269
|
-
? parent.returnedRows
|
|
270
|
-
: Math.min(parent.returnedRows * child.returnedRows,
|
|
282
|
+
? parent.returnedRows * child.returnedRows
|
|
283
|
+
: Math.min(parent.returnedRows * child.returnedRows, downstreamChildSelectivity === 0
|
|
284
|
+
? 0
|
|
285
|
+
: parent.limit / downstreamChildSelectivity),
|
|
271
286
|
cost: child.cost +
|
|
272
287
|
child.scanEst * (parent.startupCost + parent.cost + parent.scanEst),
|
|
273
288
|
returnedRows: parent.returnedRows * child.returnedRows * child.selectivity,
|
|
274
289
|
selectivity: parent.selectivity * child.selectivity,
|
|
275
290
|
limit: parent.limit,
|
|
291
|
+
fanout: parent.fanout,
|
|
276
292
|
};
|
|
277
293
|
}
|
|
278
294
|
planDebugger?.log({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-join.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"planner-join.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PlannerConnection } from './planner-connection.ts';
|
|
1
|
+
import type { FanoutCostModel, PlannerConnection } from './planner-connection.ts';
|
|
2
2
|
import type { PlannerFanIn } from './planner-fan-in.ts';
|
|
3
3
|
import type { PlannerFanOut } from './planner-fan-out.ts';
|
|
4
4
|
import type { PlannerJoin } from './planner-join.ts';
|
|
@@ -41,6 +41,7 @@ export type CostEstimate = {
|
|
|
41
41
|
*/
|
|
42
42
|
selectivity: number;
|
|
43
43
|
limit: number | undefined;
|
|
44
|
+
fanout: FanoutCostModel;
|
|
44
45
|
};
|
|
45
46
|
export type NodeType = PlannerNode['kind'];
|
|
46
47
|
export type JoinOrConnection = 'join' | 'connection';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-node.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"planner-node.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1B,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -12,12 +12,12 @@ export type DefineQueryFunc<TSchema extends Schema, TTable extends keyof TSchema
|
|
|
12
12
|
ctx: TContext;
|
|
13
13
|
args: TArgs;
|
|
14
14
|
}) => Query<TSchema, TTable, TReturn, TContext>;
|
|
15
|
-
export type NamedQueryFunction<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends
|
|
15
|
+
export type NamedQueryFunction<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends TOutput> = ([TOutput] extends [undefined] ? (() => Query<TSchema, TTable, TReturn, TContext>) & ((args: undefined) => Query<TSchema, TTable, TReturn, TContext>) : undefined extends TOutput ? (args?: TInput) => Query<TSchema, TTable, TReturn, TContext> : (args: TInput) => Query<TSchema, TTable, TReturn, TContext>) & {
|
|
16
16
|
queryName: TName;
|
|
17
17
|
};
|
|
18
18
|
export type AnyNamedQueryFunction = NamedQueryFunction<string, Schema, string, any, any, ReadonlyJSONValue | undefined, ReadonlyJSONValue | undefined>;
|
|
19
19
|
export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs extends ReadonlyJSONValue | undefined>(name: TName, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TArgs>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TArgs, TArgs>;
|
|
20
|
-
export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends
|
|
20
|
+
export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends TOutput = TOutput>(name: TName, options: DefineQueryOptions<TInput, TOutput>, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
|
|
21
21
|
export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs extends ReadonlyJSONValue | undefined>(name: TName, options: {}, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TArgs>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TArgs, TArgs>;
|
|
22
22
|
/**
|
|
23
23
|
* Creates a type-safe query definition function that is parameterized by a
|
|
@@ -47,5 +47,5 @@ export declare function defineQuery<TName extends string, TSchema extends Schema
|
|
|
47
47
|
* );
|
|
48
48
|
* ```
|
|
49
49
|
*/
|
|
50
|
-
export declare function defineQueryWithContextType<TContext>(): <TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TOutput extends ReadonlyJSONValue | undefined, TInput extends
|
|
50
|
+
export declare function defineQueryWithContextType<TContext>(): <TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TOutput extends ReadonlyJSONValue | undefined, TInput extends TOutput = TOutput>(name: TName, optionsOrQueryFn: DefineQueryOptions<TInput, TOutput> | DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>, queryFn?: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>) => NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
|
|
51
51
|
//# sourceMappingURL=define-query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/define-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAGtC,MAAM,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,IAAI;IAC9C,SAAS,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,CACzB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EACR,KAAK,IACH,CAAC,OAAO,EAAE;IACZ,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,KAAK,CAAC;CACb,KAAK,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,CAC5B,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EACR,OAAO,SAAS,iBAAiB,GAAG,SAAS,EAC7C,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/define-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-cost-model.d.ts","sourceRoot":"","sources":["../../../../zqlite/src/sqlite-cost-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,KAAK,EAAC,QAAQ,EAAY,MAAM,SAAS,CAAC;AAIjD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-cost-model.d.ts","sourceRoot":"","sources":["../../../../zqlite/src/sqlite-cost-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,KAAK,EAAC,QAAQ,EAAY,MAAM,SAAS,CAAC;AAIjD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sCAAsC,CAAC;AAiBtE;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAAC,CAAC,GAC9D,mBAAmB,CAgDrB;AAoHD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9C"}
|
|
@@ -3,6 +3,7 @@ import { buildSelectQuery } from "./query-builder.js";
|
|
|
3
3
|
import { compile } from "./internal/sql.js";
|
|
4
4
|
import { assert } from "../../shared/src/asserts.js";
|
|
5
5
|
import { must } from "../../shared/src/must.js";
|
|
6
|
+
import { SQLiteStatFanout } from "./sqlite-stat-fanout.js";
|
|
6
7
|
/**
|
|
7
8
|
* Creates a SQLite-based cost model for query planning.
|
|
8
9
|
* Uses SQLite's scanstatus API to estimate query costs based on the actual
|
|
@@ -13,6 +14,7 @@ import { must } from "../../shared/src/must.js";
|
|
|
13
14
|
* @returns ConnectionCostModel function for use with the planner
|
|
14
15
|
*/
|
|
15
16
|
export function createSQLiteCostModel(db, tableSpecs) {
|
|
17
|
+
const fanoutEstimator = new SQLiteStatFanout(db);
|
|
16
18
|
return (tableName, sort, filters, constraint) => {
|
|
17
19
|
// Transform filters to remove correlated subqueries
|
|
18
20
|
// The cost model can't handle correlated subqueries, so we estimate cost
|
|
@@ -31,7 +33,8 @@ export function createSQLiteCostModel(db, tableSpecs) {
|
|
|
31
33
|
const loops = getScanstatusLoops(stmt);
|
|
32
34
|
// Scanstatus should always be available - if we get no loops, something is wrong
|
|
33
35
|
assert(loops.length > 0, `Expected scanstatus to return at least one loop for query: ${sql}`);
|
|
34
|
-
|
|
36
|
+
const ret = estimateCost(loops, (columns) => fanoutEstimator.getFanout(tableName, columns));
|
|
37
|
+
return ret;
|
|
35
38
|
};
|
|
36
39
|
}
|
|
37
40
|
/**
|
|
@@ -98,7 +101,7 @@ function getScanstatusLoops(stmt) {
|
|
|
98
101
|
/**
|
|
99
102
|
* Estimates the cost of a query based on scanstats from sqlite3_stmt_scanstatus_v2
|
|
100
103
|
*/
|
|
101
|
-
function estimateCost(scanstats) {
|
|
104
|
+
function estimateCost(scanstats, fanout) {
|
|
102
105
|
// Sort by selectId to process in execution order
|
|
103
106
|
const sorted = [...scanstats].sort((a, b) => a.selectId - b.selectId);
|
|
104
107
|
let totalRows = 0;
|
|
@@ -123,7 +126,11 @@ function estimateCost(scanstats) {
|
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
128
|
}
|
|
126
|
-
return {
|
|
129
|
+
return {
|
|
130
|
+
rows: totalRows,
|
|
131
|
+
startupCost: totalCost,
|
|
132
|
+
fanout,
|
|
133
|
+
};
|
|
127
134
|
}
|
|
128
135
|
export function btreeCost(rows) {
|
|
129
136
|
// B-Tree construction is ~O(n log n) so we estimate the cost as such.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-cost-model.js","sourceRoot":"","sources":["../../../../zqlite/src/sqlite-cost-model.ts"],"names":[],"mappings":"AAMA,OAAO,eAAe,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAA2B,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,IAAI,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-cost-model.js","sourceRoot":"","sources":["../../../../zqlite/src/sqlite-cost-model.ts"],"names":[],"mappings":"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"}
|