Tupl Versions Save

The Unnamed Persistence Library

1.8.0

2 months ago

Main changes:

  • The Table.load, insert, replace, update, merge, and delete methods now throw an exception instead of returning a boolean value. The original methods are supported in the form of newly added "try" variants: tryLoad, tryInsert, tryReplace, tryUpdate, tryMerge, and tryDelete.
  • Defined a new Query interface which directly represents a runnable query. It can be used as an alternative to passing query strings to the Table class all the time.
  • The Table methods for obtaining QueryPlan instances have been moved to the new Query interface.
  • Added new Table methods for supporting custom filtering, transformation, aggregation, grouping, joins, and views.
  • Various bug fixes and performance improvements.

See changelog for more details.

1.7.0

1 year ago

Main changes:

  • Removed the EntryConsumer, EntryFunction, RowScanner, and RowUpdater interfaces.
  • Repurposed the Scanner and Updater interfaces to only work with tables.
  • Reading from a closed/deleted index now throws ClosedIndexException or DeletedIndexException.
  • Support remote database access.
  • Support table query ordering, which selects an appropriate index or performs a sort.

See changelog for more details.

1.6.0

2 years ago
  • Fix race condition which can cause the JVM to crash when the database is closed.
  • Fix deadlock during compaction caused by releasing the wrong node latch.
  • Fix improper lock release when writing cache primer.
  • Fix improper lock release/acquire when when opening indexes.
  • Fix BoundedCursor such that it doesn't observe uncommitted deletes when initially positioning it.
  • Fix possible reporting of negative cursor count in the database stats.
  • Fix safety of using updaters that require lock mode upgrades.
  • Improve utility of the suspendCheckpoints method by waiting for an in-progress checkpoint to complete.
  • Don't reset checkpoint duration stat when thresholds aren't met.
  • Depends on Java 17.
  • Add an API for supporting relational collections of persistent rows.

1.5.3.3

2 years ago
  • Ensure that index passed to verification observer is unmodifiable when called from an unmodifiable index.

1.5.3.2

2 years ago
  • Fix storage leaks caused by fragmented keys.
  • Fix NPE when obtaining stats on a closed database.
  • Compaction scan now finds fragmented keys.
  • Suppress uncaught exception from background sorter thread when database is closed.

1.5.3.1

2 years ago
  • Fix potential race condition when concurrently deleting and truncating the checkpoint undo log.

1.5.3

2 years ago
  • Avoid holding global commit lock when deleting an index.
  • Add a method to check if transaction is bogus.

1.5.2

2 years ago
  • Newly entered transaction scopes always select the UPGRADABLE_READ lock mode instead of inheriting the mode from the parent scope.
  • Use stronger random number for database id.

1.5.1

2 years ago
  • Add more utilities for decoding short integers and unsigned integers.
  • Ignore interrupts during critical operations, preventing database panics.
  • Prune empty nodes when deleting ghost entries. If this isn't done, then an index whose entries have been fully deleted can claim to be non-empty.

1.5.0.1

2 years ago
  • Support fully mapped databases when the page size doesn't match the OS page size.
  • Use a faster hash implementation for the lock manager.
  • Fix edge case where a non-stored database would prematurely run out of space.