Changes for version 0.45 - 2026-01-22

  • [REFACTOR] Extracted unique constraint discovery into internal helper _extract_unique_lookup to unify logic across ResultSet operations.
  • [FEATURE] Refactored find_or_new to use Smart Discovery for lookups, improving search accuracy.
  • [FIX] Enhanced find_or_new to correctly strip "me." prefixes from ResultSet conditions when instantiating new result objects.
  • [FIX] Cleaned up find_or_create logic by utilizing the new lookup helper and streamlining the race-condition recovery path.
  • [DOCS] Added POD documentation for internal _extract_unique_lookup method.
  • [FIX] Refactored update_or_create to utilize _extract_unique_lookup and implement atomic race-condition recovery.
  • [FIX] Corrected update_or_new behavior to properly return a volatile new_result object instead of persisting via create() on find failure.
  • [IMPROVEMENT] Standardized prefix stripping (me/self/foreign) in update_or_new to prevent invalid column crashes on filtered ResultSets.
  • [REFACTOR] Streamlined identity discovery across all upsert-style methods to ensure consistent unique key prioritization.

Modules

Asynchronous database operations for DBIx::Class
Non-blocking row-level CRUD for DBIx::Class::Async
Asynchronous resultset for DBIx::Class::Async
Asynchronous pagination handling for Async ResultSets
Asynchronous row object for DBIx::Class::Async
Asynchronous schema for DBIx::Class::Async
Storage Layer for DBIx::Class::Async
DBI-based async storage backend for DBIx::Class::Async
Asynchronous cursor for DBIx::Class ResultSets using Futures