mindoodb 0.0.89 → 0.0.90
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/README.md +1 -0
- package/dist/browser/index.mjs +15 -0
- package/dist/core/BaseMindooDB.d.ts +14 -0
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +42 -0
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +3 -0
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +28 -0
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +2 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +10 -2
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/core/expressions/builder.d.ts +30 -0
- package/dist/core/expressions/builder.d.ts.map +1 -1
- package/dist/core/expressions/builder.js +42 -0
- package/dist/core/expressions/builder.js.map +1 -1
- package/dist/core/expressions/evaluateExpression.d.ts +10 -0
- package/dist/core/expressions/evaluateExpression.d.ts.map +1 -1
- package/dist/core/expressions/evaluateExpression.js +66 -1
- package/dist/core/expressions/evaluateExpression.js.map +1 -1
- package/dist/core/expressions/formulaSource.d.ts.map +1 -1
- package/dist/core/expressions/formulaSource.js +5 -0
- package/dist/core/expressions/formulaSource.js.map +1 -1
- package/dist/core/expressions/index.d.ts +1 -1
- package/dist/core/expressions/index.d.ts.map +1 -1
- package/dist/core/expressions/index.js +2 -1
- package/dist/core/expressions/index.js.map +1 -1
- package/dist/core/expressions/metadata.d.ts +2 -2
- package/dist/core/expressions/metadata.d.ts.map +1 -1
- package/dist/core/expressions/metadata.js +14 -0
- package/dist/core/expressions/metadata.js.map +1 -1
- package/dist/core/expressions/types.d.ts +1 -1
- package/dist/core/expressions/types.d.ts.map +1 -1
- package/dist/core/filing/FilingIndex.d.ts +209 -0
- package/dist/core/filing/FilingIndex.d.ts.map +1 -0
- package/dist/core/filing/FilingIndex.js +689 -0
- package/dist/core/filing/FilingIndex.js.map +1 -0
- package/dist/core/filing/MindooFilingStore.d.ts +200 -0
- package/dist/core/filing/MindooFilingStore.d.ts.map +1 -0
- package/dist/core/filing/MindooFilingStore.js +515 -0
- package/dist/core/filing/MindooFilingStore.js.map +1 -0
- package/dist/core/filing/index.d.ts +4 -0
- package/dist/core/filing/index.d.ts.map +1 -0
- package/dist/core/filing/index.js +22 -0
- package/dist/core/filing/index.js.map +1 -0
- package/dist/core/filing/refs.d.ts +56 -0
- package/dist/core/filing/refs.d.ts.map +1 -0
- package/dist/core/filing/refs.js +109 -0
- package/dist/core/filing/refs.js.map +1 -0
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/indexing/createViewDataProvider.d.ts +6 -0
- package/dist/core/indexing/createViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/createViewDataProvider.js +26 -1
- package/dist/core/indexing/createViewDataProvider.js.map +1 -1
- package/dist/core/indexing/summary/DocumentSummaryStore.d.ts +43 -1
- package/dist/core/indexing/summary/DocumentSummaryStore.d.ts.map +1 -1
- package/dist/core/indexing/summary/DocumentSummaryStore.js +302 -2
- package/dist/core/indexing/summary/DocumentSummaryStore.js.map +1 -1
- package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts +33 -2
- package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js +129 -26
- package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js.map +1 -1
- package/dist/core/indexing/summary/types.d.ts +40 -0
- package/dist/core/indexing/summary/types.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +27 -2
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +106 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualView.d.ts +70 -5
- package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualView.js +329 -28
- package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +4 -22
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +175 -129
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts +28 -0
- package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewFactory.js +62 -0
- package/dist/core/indexing/virtualviews/VirtualViewFactory.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.d.ts +75 -0
- package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.js +163 -0
- package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.js.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.d.ts +112 -0
- package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.js +296 -0
- package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.js.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewNavigator.d.ts +2 -0
- package/dist/core/indexing/virtualviews/VirtualViewNavigator.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewNavigator.js +10 -9
- package/dist/core/indexing/virtualviews/VirtualViewNavigator.js.map +1 -1
- package/dist/core/indexing/virtualviews/index.d.ts +2 -0
- package/dist/core/indexing/virtualviews/index.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/index.js +8 -1
- package/dist/core/indexing/virtualviews/index.js.map +1 -1
- package/dist/core/query/executeQuery.d.ts.map +1 -1
- package/dist/core/query/executeQuery.js +4 -0
- package/dist/core/query/executeQuery.js.map +1 -1
- package/dist/core/query/executeQueryInclude.d.ts.map +1 -1
- package/dist/core/query/executeQueryInclude.js +4 -0
- package/dist/core/query/executeQueryInclude.js.map +1 -1
- package/dist/core/query/queryView.d.ts.map +1 -1
- package/dist/core/query/queryView.js +4 -0
- package/dist/core/query/queryView.js.map +1 -1
- package/dist/core/types.d.ts +20 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DocumentSummaryStore = void 0;
|
|
4
|
+
const idGeneration_1 = require("../../utils/idGeneration");
|
|
4
5
|
const types_1 = require("./types");
|
|
5
6
|
const extractSummaryFields_1 = require("./extractSummaryFields");
|
|
6
7
|
const DEFAULT_BUCKET_COUNT = 64;
|
|
8
|
+
/** Keep at most this many removals for delta readers (older readers rescan). */
|
|
9
|
+
const MAX_TOMBSTONES = 5000;
|
|
10
|
+
/** Sequence jump on restore (see lostSeqRanges). */
|
|
11
|
+
const LOST_SEQ_JUMP = 2 ** 30;
|
|
7
12
|
/**
|
|
8
13
|
* Minimum time between periodic flushes while an update run is in progress.
|
|
9
14
|
* A catch-up (initial replication, chunked sync ingest) dirties nearly every
|
|
@@ -38,11 +43,34 @@ class DocumentSummaryStore {
|
|
|
38
43
|
this.setupDocSeeded = false;
|
|
39
44
|
this.entries = new Map();
|
|
40
45
|
this.cursor = null;
|
|
46
|
+
// --- modification sequence (delta reads, see getChangesSince) ---
|
|
47
|
+
this.generation = (0, idGeneration_1.generateRandomUuid)();
|
|
48
|
+
this.updateSeq = 0;
|
|
49
|
+
/** [updateSeq, docId] in write order; may hold stale pairs (compacted lazily). */
|
|
50
|
+
this.seqLog = [];
|
|
51
|
+
this.tombstones = [];
|
|
52
|
+
/** Readers older than this seq cannot get all removals: they rescan. */
|
|
53
|
+
this.tombstoneHorizon = 0;
|
|
54
|
+
/**
|
|
55
|
+
* Sequence ranges a previous process may have handed out without
|
|
56
|
+
* persisting them (it crashed after a reader saw them). On restore the
|
|
57
|
+
* sequence jumps past such a range; readers positioned inside it rescan.
|
|
58
|
+
*/
|
|
59
|
+
this.lostSeqRanges = [];
|
|
41
60
|
// --- persistence state ---
|
|
42
61
|
this.cacheManager = null;
|
|
43
62
|
this.cachePrefix = null;
|
|
44
63
|
this.bucketCount = DEFAULT_BUCKET_COUNT;
|
|
64
|
+
/** Buckets changed since the last snapshot (rewritten by the next snapshot). */
|
|
45
65
|
this.dirtyBuckets = new Set();
|
|
66
|
+
// Journal (see flushToCache): entries changed since the last flush.
|
|
67
|
+
this.journalPending = new Map();
|
|
68
|
+
this.pendingTombstones = [];
|
|
69
|
+
/** Whether this instance wrote the current snapshot (else the next flush writes one). */
|
|
70
|
+
this.ownSnapshot = false;
|
|
71
|
+
this.journalEntriesSinceSnapshot = 0;
|
|
72
|
+
this.nextJournalSegment = 0;
|
|
73
|
+
this.journalWriterId = (0, idGeneration_1.generateRandomUuid)().replace(/-/g, "").slice(0, 12);
|
|
46
74
|
this.metaDirty = false;
|
|
47
75
|
/** Timestamp of the last completed (non-deferred) flush. */
|
|
48
76
|
this.lastFlushAt = 0;
|
|
@@ -306,25 +334,114 @@ class DocumentSummaryStore {
|
|
|
306
334
|
}
|
|
307
335
|
// Drop a stale entry left over from before the setup doc was skipped.
|
|
308
336
|
if (this.entries.delete(docId)) {
|
|
337
|
+
this.recordRemoval(docId);
|
|
309
338
|
this.markBucketDirty(docId);
|
|
310
339
|
}
|
|
311
340
|
return;
|
|
312
341
|
}
|
|
313
342
|
if (doc.isDeleted()) {
|
|
314
343
|
if (this.entries.delete(docId)) {
|
|
344
|
+
this.recordRemoval(docId);
|
|
315
345
|
this.markBucketDirty(docId);
|
|
316
346
|
}
|
|
317
347
|
return;
|
|
318
348
|
}
|
|
349
|
+
const updateSeq = ++this.updateSeq;
|
|
319
350
|
this.entries.set(docId, {
|
|
320
351
|
docId,
|
|
321
352
|
fields: (0, extractSummaryFields_1.extractSummaryFields)(doc.getData(), this.config),
|
|
322
353
|
lastModified: doc.getLastModified(),
|
|
323
354
|
changeSeq: cursor.changeSeq ?? 0,
|
|
324
355
|
decryptionKeyId: doc.getDecryptionKeyId(),
|
|
356
|
+
updateSeq,
|
|
325
357
|
});
|
|
358
|
+
this.seqLog.push([updateSeq, docId]);
|
|
326
359
|
this.markBucketDirty(docId);
|
|
327
360
|
}
|
|
361
|
+
recordRemoval(docId) {
|
|
362
|
+
const seq = ++this.updateSeq;
|
|
363
|
+
this.tombstones.push([seq, docId]);
|
|
364
|
+
this.pendingTombstones.push([seq, docId]);
|
|
365
|
+
if (this.tombstones.length > MAX_TOMBSTONES) {
|
|
366
|
+
const dropped = this.tombstones.splice(0, this.tombstones.length - MAX_TOMBSTONES);
|
|
367
|
+
this.tombstoneHorizon = dropped[dropped.length - 1][0];
|
|
368
|
+
}
|
|
369
|
+
this.metaDirty = true;
|
|
370
|
+
}
|
|
371
|
+
/** Current position of the modification sequence. */
|
|
372
|
+
getPosition() {
|
|
373
|
+
return { generation: this.generation, seq: this.updateSeq };
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Entries written and documents removed after `position` — what an
|
|
377
|
+
* incremental reader (a summary-backed view) has to process instead of
|
|
378
|
+
* scanning every entry. Returns `null` when no delta is possible (no or
|
|
379
|
+
* foreign position, or removals already dropped from the bounded
|
|
380
|
+
* tombstone list): the reader then rescans everything once.
|
|
381
|
+
*
|
|
382
|
+
* O(changes) after the first call (a lazily compacted write log).
|
|
383
|
+
*/
|
|
384
|
+
getChangesSince(position) {
|
|
385
|
+
if (!position ||
|
|
386
|
+
position.generation !== this.generation ||
|
|
387
|
+
position.seq < this.tombstoneHorizon ||
|
|
388
|
+
position.seq > this.updateSeq ||
|
|
389
|
+
this.lostSeqRanges.some(([start, end]) => position.seq > start && position.seq <= end)) {
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
const current = this.getPosition();
|
|
393
|
+
if (position.seq >= this.updateSeq) {
|
|
394
|
+
return { ...current, entries: [], removedDocIds: [] };
|
|
395
|
+
}
|
|
396
|
+
this.compactSeqLog();
|
|
397
|
+
// First log index with seq > position.seq (log is ordered by seq).
|
|
398
|
+
let lo = 0;
|
|
399
|
+
let hi = this.seqLog.length;
|
|
400
|
+
while (lo < hi) {
|
|
401
|
+
const mid = (lo + hi) >>> 1;
|
|
402
|
+
if (this.seqLog[mid][0] > position.seq) {
|
|
403
|
+
hi = mid;
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
lo = mid + 1;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
const entries = [];
|
|
410
|
+
for (let i = lo; i < this.seqLog.length; i++) {
|
|
411
|
+
const [seq, docId] = this.seqLog[i];
|
|
412
|
+
const entry = this.entries.get(docId);
|
|
413
|
+
// Only the latest write of a document counts (older pairs are stale).
|
|
414
|
+
if (entry && entry.updateSeq === seq) {
|
|
415
|
+
entries.push(entry);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
const removedDocIds = [];
|
|
419
|
+
for (let i = this.tombstones.length - 1; i >= 0 && this.tombstones[i][0] > position.seq; i--) {
|
|
420
|
+
const docId = this.tombstones[i][1];
|
|
421
|
+
if (!this.entries.has(docId)) {
|
|
422
|
+
removedDocIds.push(docId);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
return { ...current, entries, removedDocIds };
|
|
426
|
+
}
|
|
427
|
+
/** Drop stale log pairs once they make up more than half of the log. */
|
|
428
|
+
compactSeqLog() {
|
|
429
|
+
if (this.seqLog.length <= 1024 || this.seqLog.length < this.entries.size * 2) {
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
this.seqLog = this.seqLog.filter(([seq, docId]) => this.entries.get(docId)?.updateSeq === seq);
|
|
433
|
+
}
|
|
434
|
+
/** Rebuild the write log from the entries (after restoring from the cache). */
|
|
435
|
+
rebuildSeqLog() {
|
|
436
|
+
const log = [];
|
|
437
|
+
for (const entry of this.entries.values()) {
|
|
438
|
+
if (typeof entry.updateSeq === "number") {
|
|
439
|
+
log.push([entry.updateSeq, entry.docId]);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
log.sort((a, b) => a[0] - b[0]);
|
|
443
|
+
this.seqLog = log;
|
|
444
|
+
}
|
|
328
445
|
/**
|
|
329
446
|
* Drop a document's summary entry immediately (called from the DB's purge
|
|
330
447
|
* paths so plaintext field values never outlive key revocation/purges;
|
|
@@ -333,6 +450,7 @@ class DocumentSummaryStore {
|
|
|
333
450
|
*/
|
|
334
451
|
removeDocument(docId) {
|
|
335
452
|
if (this.entries.delete(docId)) {
|
|
453
|
+
this.recordRemoval(docId);
|
|
336
454
|
this.markBucketDirty(docId);
|
|
337
455
|
this.cacheManager?.markDirty();
|
|
338
456
|
}
|
|
@@ -341,11 +459,22 @@ class DocumentSummaryStore {
|
|
|
341
459
|
reset() {
|
|
342
460
|
this.entries.clear();
|
|
343
461
|
this.cursor = null;
|
|
462
|
+
// Delta readers must rescan: start a new modification generation.
|
|
463
|
+
this.generation = (0, idGeneration_1.generateRandomUuid)();
|
|
464
|
+
this.updateSeq = 0;
|
|
465
|
+
this.seqLog = [];
|
|
466
|
+
this.tombstones = [];
|
|
467
|
+
this.tombstoneHorizon = 0;
|
|
468
|
+
this.lostSeqRanges = [];
|
|
344
469
|
this.needsBackfill = false;
|
|
345
470
|
this.backfillCursor = null;
|
|
346
471
|
for (let i = 0; i < this.bucketCount; i++) {
|
|
347
472
|
this.dirtyBuckets.add(i);
|
|
348
473
|
}
|
|
474
|
+
// Everything changed: the next flush writes a full snapshot.
|
|
475
|
+
this.ownSnapshot = false;
|
|
476
|
+
this.journalPending.clear();
|
|
477
|
+
this.pendingTombstones = [];
|
|
349
478
|
this.metaDirty = true;
|
|
350
479
|
this.cacheManager?.markDirty();
|
|
351
480
|
}
|
|
@@ -367,7 +496,7 @@ class DocumentSummaryStore {
|
|
|
367
496
|
return this.cachePrefix ?? "summary";
|
|
368
497
|
}
|
|
369
498
|
hasDirtyState() {
|
|
370
|
-
return this.
|
|
499
|
+
return this.journalPending.size > 0 || this.metaDirty || (!this.ownSnapshot && this.dirtyBuckets.size > 0);
|
|
371
500
|
}
|
|
372
501
|
clearDirty() {
|
|
373
502
|
if (this.flushHandledDirty) {
|
|
@@ -385,6 +514,8 @@ class DocumentSummaryStore {
|
|
|
385
514
|
*/
|
|
386
515
|
discardDirtyState() {
|
|
387
516
|
this.dirtyBuckets.clear();
|
|
517
|
+
this.journalPending.clear();
|
|
518
|
+
this.pendingTombstones = [];
|
|
388
519
|
this.metaDirty = false;
|
|
389
520
|
this.flushHandledDirty = false;
|
|
390
521
|
}
|
|
@@ -393,6 +524,7 @@ class DocumentSummaryStore {
|
|
|
393
524
|
}
|
|
394
525
|
markBucketDirty(docId) {
|
|
395
526
|
this.dirtyBuckets.add(this.bucketIndexFor(docId));
|
|
527
|
+
this.journalPending.set(docId, this.entries.get(docId) ?? null);
|
|
396
528
|
this.metaDirty = true;
|
|
397
529
|
}
|
|
398
530
|
async flushToCache(store, options) {
|
|
@@ -406,13 +538,30 @@ class DocumentSummaryStore {
|
|
|
406
538
|
this.cacheManager?.markDirty();
|
|
407
539
|
return 0;
|
|
408
540
|
}
|
|
541
|
+
// Snapshot + journal: normally only the entries changed since the last
|
|
542
|
+
// flush are appended as a small segment (`summaryj`); the dirty buckets
|
|
543
|
+
// and meta (the snapshot) are rewritten when this instance has no
|
|
544
|
+
// snapshot of its own yet (also right after a restore), when the
|
|
545
|
+
// journal outgrows 10 % of the buffer (min. 500 entries), and on forced
|
|
546
|
+
// flushes (close). Chains are per writer, like the view cache.
|
|
547
|
+
const prefix = this.getCachePrefix();
|
|
548
|
+
const wantSnapshot = options?.force === true ||
|
|
549
|
+
!this.ownSnapshot ||
|
|
550
|
+
this.journalEntriesSinceSnapshot + this.journalPending.size > Math.max(500, this.entries.size * 0.1);
|
|
551
|
+
if (!wantSnapshot) {
|
|
552
|
+
return this.flushJournalSegment(store, prefix);
|
|
553
|
+
}
|
|
409
554
|
// Snapshot everything synchronously before the first await: bucket
|
|
410
555
|
// payloads and the meta cursor must describe the same state, and entries
|
|
411
556
|
// an update run changes while the writes are in flight must stay dirty
|
|
412
557
|
// for the next flush instead of being cleared with this one.
|
|
413
|
-
const prefix = this.getCachePrefix();
|
|
414
558
|
const bucketsToWrite = this.dirtyBuckets;
|
|
415
559
|
this.dirtyBuckets = new Set();
|
|
560
|
+
const pendingAtSnapshot = this.journalPending;
|
|
561
|
+
const tombstonesAtSnapshot = this.pendingTombstones;
|
|
562
|
+
this.journalPending = new Map();
|
|
563
|
+
this.pendingTombstones = [];
|
|
564
|
+
const journalBase = this.nextJournalSegment;
|
|
416
565
|
this.metaDirty = false;
|
|
417
566
|
this.flushHandledDirty = true;
|
|
418
567
|
const byBucket = new Map();
|
|
@@ -437,6 +586,13 @@ class DocumentSummaryStore {
|
|
|
437
586
|
bucketCount: this.bucketCount,
|
|
438
587
|
needsBackfill: this.needsBackfill,
|
|
439
588
|
backfillCursor: this.backfillCursor,
|
|
589
|
+
generation: this.generation,
|
|
590
|
+
updateSeq: this.updateSeq,
|
|
591
|
+
tombstoneHorizon: this.tombstoneHorizon,
|
|
592
|
+
tombstones: this.tombstones,
|
|
593
|
+
lostSeqRanges: this.lostSeqRanges,
|
|
594
|
+
journalWriter: this.journalWriterId,
|
|
595
|
+
journalBase,
|
|
440
596
|
};
|
|
441
597
|
let written = 0;
|
|
442
598
|
try {
|
|
@@ -454,13 +610,81 @@ class DocumentSummaryStore {
|
|
|
454
610
|
for (const bucket of bucketsToWrite) {
|
|
455
611
|
this.dirtyBuckets.add(bucket);
|
|
456
612
|
}
|
|
613
|
+
this.restorePending(pendingAtSnapshot, tombstonesAtSnapshot);
|
|
457
614
|
this.metaDirty = true;
|
|
458
615
|
this.flushHandledDirty = false;
|
|
459
616
|
throw error;
|
|
460
617
|
}
|
|
618
|
+
this.ownSnapshot = true;
|
|
619
|
+
this.journalEntriesSinceSnapshot = 0;
|
|
620
|
+
try {
|
|
621
|
+
const journalPrefix = `${prefix}/journal/`;
|
|
622
|
+
for (const id of await store.list("summaryj")) {
|
|
623
|
+
if (id.startsWith(journalPrefix))
|
|
624
|
+
await store.delete("summaryj", id);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
catch {
|
|
628
|
+
// Stale segments are ignored on restore (other chain or before the base).
|
|
629
|
+
}
|
|
461
630
|
this.lastFlushAt = Date.now();
|
|
462
631
|
return written;
|
|
463
632
|
}
|
|
633
|
+
/** Append the entries changed since the last flush as one journal segment. */
|
|
634
|
+
async flushJournalSegment(store, prefix) {
|
|
635
|
+
const pending = this.journalPending;
|
|
636
|
+
const tombstones = this.pendingTombstones;
|
|
637
|
+
this.journalPending = new Map();
|
|
638
|
+
this.pendingTombstones = [];
|
|
639
|
+
this.metaDirty = false;
|
|
640
|
+
this.flushHandledDirty = true;
|
|
641
|
+
const segment = {
|
|
642
|
+
entries: [],
|
|
643
|
+
removed: [],
|
|
644
|
+
tombstones,
|
|
645
|
+
meta: {
|
|
646
|
+
cursor: this.cursor,
|
|
647
|
+
configFingerprint: this.configFingerprint,
|
|
648
|
+
bucketCount: this.bucketCount,
|
|
649
|
+
needsBackfill: this.needsBackfill,
|
|
650
|
+
backfillCursor: this.backfillCursor,
|
|
651
|
+
generation: this.generation,
|
|
652
|
+
updateSeq: this.updateSeq,
|
|
653
|
+
tombstoneHorizon: this.tombstoneHorizon,
|
|
654
|
+
lostSeqRanges: this.lostSeqRanges,
|
|
655
|
+
},
|
|
656
|
+
};
|
|
657
|
+
for (const [docId, entry] of pending) {
|
|
658
|
+
if (entry)
|
|
659
|
+
segment.entries.push(entry);
|
|
660
|
+
else
|
|
661
|
+
segment.removed.push(docId);
|
|
662
|
+
}
|
|
663
|
+
const segmentNo = this.nextJournalSegment;
|
|
664
|
+
try {
|
|
665
|
+
await store.put("summaryj", `${prefix}/journal/${this.journalWriterId}/${String(segmentNo).padStart(10, "0")}`, new TextEncoder().encode(JSON.stringify(segment)));
|
|
666
|
+
}
|
|
667
|
+
catch (error) {
|
|
668
|
+
// Nothing is lost: keep the changes for the next flush.
|
|
669
|
+
this.restorePending(pending, tombstones);
|
|
670
|
+
this.metaDirty = true;
|
|
671
|
+
this.flushHandledDirty = false;
|
|
672
|
+
throw error;
|
|
673
|
+
}
|
|
674
|
+
this.nextJournalSegment = segmentNo + 1;
|
|
675
|
+
this.journalEntriesSinceSnapshot += pending.size;
|
|
676
|
+
this.lastFlushAt = Date.now();
|
|
677
|
+
return 1;
|
|
678
|
+
}
|
|
679
|
+
/** Put changes of a failed write back in front of what changed meanwhile. */
|
|
680
|
+
restorePending(pending, tombstones) {
|
|
681
|
+
for (const [docId, entry] of pending) {
|
|
682
|
+
if (!this.journalPending.has(docId)) {
|
|
683
|
+
this.journalPending.set(docId, entry);
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
this.pendingTombstones = [...tombstones, ...this.pendingTombstones];
|
|
687
|
+
}
|
|
464
688
|
async ensureRestored() {
|
|
465
689
|
if (this.restored || !this.cacheManager) {
|
|
466
690
|
this.restored = true;
|
|
@@ -519,7 +743,83 @@ class DocumentSummaryStore {
|
|
|
519
743
|
this.cursor = null;
|
|
520
744
|
return;
|
|
521
745
|
}
|
|
746
|
+
// Replay the journal chain continuing this snapshot: entries, removals
|
|
747
|
+
// and the newest meta (a missing or unreadable segment ends the replay;
|
|
748
|
+
// the changefeed catches up from the last good cursor).
|
|
749
|
+
if (typeof meta.journalWriter === "string") {
|
|
750
|
+
try {
|
|
751
|
+
const chainPrefix = `${prefix}/journal/${meta.journalWriter}/`;
|
|
752
|
+
const base = meta.journalBase ?? 0;
|
|
753
|
+
const numbers = (await store.list("summaryj"))
|
|
754
|
+
.filter((id) => id.startsWith(chainPrefix))
|
|
755
|
+
.map((id) => Number(id.slice(chainPrefix.length)))
|
|
756
|
+
.filter((n) => Number.isInteger(n) && n >= base)
|
|
757
|
+
.sort((a, b) => a - b);
|
|
758
|
+
let expected = base;
|
|
759
|
+
for (const n of numbers) {
|
|
760
|
+
if (n !== expected)
|
|
761
|
+
break;
|
|
762
|
+
const bytes = await store.get("summaryj", `${chainPrefix}${String(n).padStart(10, "0")}`);
|
|
763
|
+
if (!bytes)
|
|
764
|
+
break;
|
|
765
|
+
const segment = JSON.parse(new TextDecoder().decode(bytes));
|
|
766
|
+
for (const entry of segment.entries) {
|
|
767
|
+
this.entries.set(entry.docId, entry);
|
|
768
|
+
this.dirtyBuckets.add(this.bucketIndexFor(entry.docId));
|
|
769
|
+
}
|
|
770
|
+
for (const docId of segment.removed) {
|
|
771
|
+
this.entries.delete(docId);
|
|
772
|
+
this.dirtyBuckets.add(this.bucketIndexFor(docId));
|
|
773
|
+
}
|
|
774
|
+
let tombstones = [...(meta.tombstones ?? []), ...(segment.tombstones ?? [])];
|
|
775
|
+
let horizon = segment.meta.tombstoneHorizon ?? meta.tombstoneHorizon ?? 0;
|
|
776
|
+
if (tombstones.length > MAX_TOMBSTONES) {
|
|
777
|
+
const dropped = tombstones.splice(0, tombstones.length - MAX_TOMBSTONES);
|
|
778
|
+
horizon = Math.max(horizon, dropped[dropped.length - 1][0]);
|
|
779
|
+
}
|
|
780
|
+
meta = { ...segment.meta, tombstones, tombstoneHorizon: horizon };
|
|
781
|
+
expected = n + 1;
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
catch {
|
|
785
|
+
// Keep what was replayed.
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
// This instance continues with its own chain: its first flush writes a
|
|
789
|
+
// snapshot (the buckets the replay touched plus meta).
|
|
790
|
+
this.ownSnapshot = false;
|
|
522
791
|
this.cursor = meta.cursor ?? null;
|
|
792
|
+
if (typeof meta.generation === "string" && typeof meta.updateSeq === "number") {
|
|
793
|
+
this.generation = meta.generation;
|
|
794
|
+
this.updateSeq = meta.updateSeq;
|
|
795
|
+
this.tombstoneHorizon = meta.tombstoneHorizon ?? 0;
|
|
796
|
+
this.tombstones = meta.tombstones ?? [];
|
|
797
|
+
// Entries written after the meta record (crash between bucket and meta
|
|
798
|
+
// writes) may carry higher seqs: never hand out a seq twice.
|
|
799
|
+
for (const entry of this.entries.values()) {
|
|
800
|
+
if (typeof entry.updateSeq === "number" && entry.updateSeq > this.updateSeq) {
|
|
801
|
+
this.updateSeq = entry.updateSeq;
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
// The previous process may have handed out (and readers may have
|
|
805
|
+
// seen) seqs after the persisted state: never reuse them.
|
|
806
|
+
this.lostSeqRanges = [...(meta.lostSeqRanges ?? []), [this.updateSeq, this.updateSeq + LOST_SEQ_JUMP]];
|
|
807
|
+
if (this.lostSeqRanges.length > 20) {
|
|
808
|
+
const dropped = this.lostSeqRanges.splice(0, this.lostSeqRanges.length - 20);
|
|
809
|
+
this.tombstoneHorizon = Math.max(this.tombstoneHorizon, dropped[dropped.length - 1][1]);
|
|
810
|
+
}
|
|
811
|
+
this.updateSeq += LOST_SEQ_JUMP;
|
|
812
|
+
this.metaDirty = true;
|
|
813
|
+
}
|
|
814
|
+
else {
|
|
815
|
+
// Cache of an older version: no usable sequence, readers rescan once.
|
|
816
|
+
this.generation = (0, idGeneration_1.generateRandomUuid)();
|
|
817
|
+
this.updateSeq = 0;
|
|
818
|
+
for (const entry of this.entries.values()) {
|
|
819
|
+
delete entry.updateSeq;
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
this.rebuildSeqLog();
|
|
523
823
|
if (meta.configFingerprint !== this.configFingerprint) {
|
|
524
824
|
// Entries were extracted with a different configuration: keep them
|
|
525
825
|
// usable, re-extract everything in the background.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentSummaryStore.js","sourceRoot":"","sources":["../../../../src/core/indexing/summary/DocumentSummaryStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DocumentSummaryStore.js","sourceRoot":"","sources":["../../../../src/core/indexing/summary/DocumentSummaryStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { MindooDBAppBooleanExpression } from "../../expressions/types";
|
|
|
4
4
|
import { type MindooQueryTextClause } from "../../query/types";
|
|
5
5
|
import type { DocumentFullTextIndex } from "../fulltext/DocumentFullTextIndex";
|
|
6
6
|
import type { DocumentSummaryStore } from "./DocumentSummaryStore";
|
|
7
|
+
import { type FilingRefChanges, type IFilingAwareDataProvider } from "../virtualviews/VirtualViewFilingJoin";
|
|
7
8
|
export interface SummaryVirtualViewDataProviderOptions {
|
|
8
9
|
/** Unique origin identifier for this data provider */
|
|
9
10
|
origin: string;
|
|
@@ -28,6 +29,13 @@ export interface SummaryVirtualViewDataProviderOptions {
|
|
|
28
29
|
index: DocumentFullTextIndex;
|
|
29
30
|
clause: MindooQueryTextClause;
|
|
30
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Physical identity `"<tenantId>/<dbId>"` of the summarized database.
|
|
34
|
+
* Needed to match filing references (`folders()` / `inFolder()` against
|
|
35
|
+
* stores joined with `withFilingStore`); without it the provider sees
|
|
36
|
+
* every document as not filed.
|
|
37
|
+
*/
|
|
38
|
+
dbKey?: string;
|
|
31
39
|
}
|
|
32
40
|
/**
|
|
33
41
|
* VirtualView data provider backed by the {@link DocumentSummaryStore}
|
|
@@ -42,14 +50,14 @@ export interface SummaryVirtualViewDataProviderOptions {
|
|
|
42
50
|
* `valueFunction` columns are NOT supported here (there is no materialized
|
|
43
51
|
* document to pass them).
|
|
44
52
|
*/
|
|
45
|
-
export declare class SummaryVirtualViewDataProvider implements IVirtualViewDataProvider {
|
|
53
|
+
export declare class SummaryVirtualViewDataProvider implements IVirtualViewDataProvider, IFilingAwareDataProvider {
|
|
46
54
|
private readonly origin;
|
|
47
55
|
private readonly summary;
|
|
48
56
|
private readonly filter;
|
|
49
57
|
private readonly text;
|
|
50
58
|
private view;
|
|
51
59
|
/** Highest summary entry changeSeq already applied to the view. */
|
|
52
|
-
private
|
|
60
|
+
private appliedPosition;
|
|
53
61
|
/** Documents currently present in the view from this provider. */
|
|
54
62
|
private knownDocIds;
|
|
55
63
|
/**
|
|
@@ -60,7 +68,30 @@ export declare class SummaryVirtualViewDataProvider implements IVirtualViewDataP
|
|
|
60
68
|
* which the changeSeq watermark alone would skip.
|
|
61
69
|
*/
|
|
62
70
|
private lastTextScores;
|
|
71
|
+
private readonly dbKey;
|
|
72
|
+
/**
|
|
73
|
+
* Documents (ids of this database) whose folder membership changed and
|
|
74
|
+
* that must be re-evaluated on the next update even when their summary
|
|
75
|
+
* entry is unchanged — the filing counterpart of `lastTextScores`.
|
|
76
|
+
*/
|
|
77
|
+
private pendingFilingDocIds;
|
|
78
|
+
/** Re-evaluate everything on the next update (first build, log overflow). */
|
|
79
|
+
private pendingFilingAll;
|
|
63
80
|
constructor(options: SummaryVirtualViewDataProviderOptions);
|
|
81
|
+
onFilingChanges(changes: FilingRefChanges): void;
|
|
82
|
+
/** Build the `folders()` lookup for one document. */
|
|
83
|
+
private foldersLookup;
|
|
84
|
+
/**
|
|
85
|
+
* The summary entries to look at in this run:
|
|
86
|
+
* - without a usable delta (first run, summary rebuilt): every entry;
|
|
87
|
+
* - with a delta: the entries written since the last run plus documents
|
|
88
|
+
* that must be re-checked (`forced`: folder or text-match changes);
|
|
89
|
+
* - when the filter is driven by one folder (`inFolder(store, id)` as
|
|
90
|
+
* (part of a top-level AND) filter): that folder's members (plus
|
|
91
|
+
* `forced`, plus known rows on a full run), skipping members that did
|
|
92
|
+
* not change when a delta exists.
|
|
93
|
+
*/
|
|
94
|
+
private candidateEntries;
|
|
64
95
|
getOrigin(): string;
|
|
65
96
|
init(view: VirtualView): void;
|
|
66
97
|
update(options?: VirtualViewUpdateOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SummaryVirtualViewDataProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/indexing/summary/SummaryVirtualViewDataProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACnH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAM5E,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"SummaryVirtualViewDataProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/indexing/summary/SummaryVirtualViewDataProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACnH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAM5E,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAG/C,MAAM,WAAW,qCAAqC;IACpD,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,OAAO,EAAE,oBAAoB,CAAC;IAE9B;;;OAGG;IACH,MAAM,CAAC,EAAE,4BAA4B,CAAC;IAEtC;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,qBAAqB,CAAC;QAC7B,MAAM,EAAE,qBAAqB,CAAC;KAC/B,CAAC;IAEF;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,8BAA+B,YAAW,wBAAwB,EAAE,wBAAwB;IACvG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuD;IAE5E,OAAO,CAAC,IAAI,CAA4B;IACxC,mEAAmE;IACnE,OAAO,CAAC,eAAe,CAAqC;IAC5D,kEAAkE;IAClE,OAAO,CAAC,WAAW,CAA0B;IAC7C;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAA0B;IACrD,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB,CAAkB;gBAE9B,OAAO,EAAE,qCAAqC;IAQ1D,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAiBhD,qDAAqD;IACrD,OAAO,CAAC,aAAa;IASrB;;;;;;;;;OASG;IACH,OAAO,CAAE,gBAAgB;IA8CzB,SAAS,IAAI,MAAM;IAInB,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAYvB,MAAM,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6J/D,OAAO,CAAC,mBAAmB;IAiB3B,KAAK,IAAI,IAAI;IAab,gBAAgB,IAAI,OAAO;IAS3B,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CAiBvC"}
|