dataply 0.0.24-alpha.2 → 0.0.24-alpha.4

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/dist/cjs/index.js CHANGED
@@ -8514,6 +8514,11 @@ var PageFileSystem = class {
8514
8514
  const emptyManager = this.pageFactory.getManagerFromType(PageManager.CONSTANT.PAGE_TYPE_EMPTY);
8515
8515
  const firstFreeIndex = newPageIndex + 1;
8516
8516
  const lastFreeIndex = newPageIndex + preallocationCount - 1;
8517
+ metadataManager.setPageCount(metadata, newTotalCount);
8518
+ if (preallocationCount > 1) {
8519
+ metadataManager.setFreePageId(metadata, firstFreeIndex);
8520
+ }
8521
+ await this.setPage(0, metadata, tx);
8517
8522
  for (let i = firstFreeIndex; i <= lastFreeIndex; i++) {
8518
8523
  const emptyPage = emptyManager.create(this.pageSize, i);
8519
8524
  const nextId = i < lastFreeIndex ? i + 1 : -1;
@@ -8521,11 +8526,6 @@ var PageFileSystem = class {
8521
8526
  await this.setPage(i, emptyPage, tx);
8522
8527
  await this.updateBitmap(i, true, tx);
8523
8528
  }
8524
- if (preallocationCount > 1) {
8525
- metadataManager.setFreePageId(metadata, firstFreeIndex);
8526
- }
8527
- metadataManager.setPageCount(metadata, newTotalCount);
8528
- await this.setPage(0, metadata, tx);
8529
8529
  return newPageIndex;
8530
8530
  }
8531
8531
  /**
@@ -8607,8 +8607,7 @@ var PageFileSystem = class {
8607
8607
  }
8608
8608
  /**
8609
8609
  * Frees the page and marks it as available in the bitmap.
8610
- * Inserts the page into the free list in ascending order by page ID
8611
- * to support HDD sequential reads.
8610
+ * It also adds the page to the linked list of free pages in metadata.
8612
8611
  * @param pageId Page ID
8613
8612
  * @param tx Transaction
8614
8613
  */
@@ -8618,30 +8617,13 @@ var PageFileSystem = class {
8618
8617
  await tx.__acquireWriteLock(pageId);
8619
8618
  const metadata = await this.getMetadata(tx);
8620
8619
  const metadataManager = this.pageFactory.getManager(metadata);
8620
+ const currentHeadFreePageId = metadataManager.getFreePageId(metadata);
8621
8621
  const emptyPageManager = this.pageFactory.getManagerFromType(PageManager.CONSTANT.PAGE_TYPE_EMPTY);
8622
8622
  const emptyPage = emptyPageManager.create(this.pageSize, pageId);
8623
- const headFreePageId = metadataManager.getFreePageId(metadata);
8624
- if (headFreePageId === -1 || pageId < headFreePageId) {
8625
- emptyPageManager.setNextPageId(emptyPage, headFreePageId);
8626
- await this.setPage(pageId, emptyPage, tx);
8627
- metadataManager.setFreePageId(metadata, pageId);
8628
- } else {
8629
- let prevPageId = headFreePageId;
8630
- let prevPage = await this.get(prevPageId, tx);
8631
- let prevManager = this.pageFactory.getManager(prevPage);
8632
- let nextPageId = prevManager.getNextPageId(prevPage);
8633
- while (nextPageId !== -1 && nextPageId < pageId) {
8634
- prevPageId = nextPageId;
8635
- prevPage = await this.get(prevPageId, tx);
8636
- prevManager = this.pageFactory.getManager(prevPage);
8637
- nextPageId = prevManager.getNextPageId(prevPage);
8638
- }
8639
- emptyPageManager.setNextPageId(emptyPage, nextPageId);
8640
- await this.setPage(pageId, emptyPage, tx);
8641
- prevManager.setNextPageId(prevPage, pageId);
8642
- await this.setPage(prevPageId, prevPage, tx);
8643
- }
8623
+ emptyPageManager.setNextPageId(emptyPage, currentHeadFreePageId);
8624
+ await this.setPage(pageId, emptyPage, tx);
8644
8625
  await this.updateBitmap(pageId, true, tx);
8626
+ metadataManager.setFreePageId(metadata, pageId);
8645
8627
  await this.setPage(0, metadata, tx);
8646
8628
  }
8647
8629
  /**
@@ -127,8 +127,7 @@ export declare class PageFileSystem {
127
127
  freeChain(startPageId: number, tx: Transaction): Promise<void>;
128
128
  /**
129
129
  * Frees the page and marks it as available in the bitmap.
130
- * Inserts the page into the free list in ascending order by page ID
131
- * to support HDD sequential reads.
130
+ * It also adds the page to the linked list of free pages in metadata.
132
131
  * @param pageId Page ID
133
132
  * @param tx Transaction
134
133
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dataply",
3
- "version": "0.0.24-alpha.2",
3
+ "version": "0.0.24-alpha.4",
4
4
  "description": "A lightweight storage engine for Node.js with support for MVCC, WAL.",
5
5
  "license": "MIT",
6
6
  "author": "izure <admin@izure.org>",