UR

Rich Transactional Objects for Perl

Archive for the ‘Uncategorized’ Category.

UR 0.35 – special queries, better sets, smarter joins

UR 0.35 sports several bug fixes in the query engine. The -offset, -limit and -page options allow selecting subsets of data work more reliable ways.

Set objects have bug fixes too, in cases where the description of the set included calculated properties not stored directly in the database.

Other bug fixes for cases when the same table is traversed in different joins, with mutually exclusive filtering.

UR 0.33 – Data Access

The new UR release has lots of bug fixes for Postgres and MySQL and SQLite to better handle schema introspection.

Developers can now split a namespace across different directory trees and the “ur” commands will recognize the whole correctly when working on any part.

Software transactional memory now correctly does the same validity checks as raw database transactions

The query engine how accepts dot-separated chains of properties for ad-hoc joins, instead of requiring that wrapper properties be made on the class in question with via/to.

The set class has been revamped to do min, max, count, and sum optimally regardless of whether the set members are currently in memory or not.  The relaying from one set definition to another is now correctly lazy as well.

Updates to the concurrency issue detection logic now detect deletions from the database of data previously cached by the application and handle those changes smoothly.

The view classes now support custom views for primitive data types.

A new environment variable: UR_DBI_SUMMARIZE_SQL aggregates queries across the running of an application and summarizes execution counts.  This allows developers to use hints and pre-caching of data to pull the data used by complex views in an optimal way.

 

UR 0.29 – smarter joins

UR’s query engine now handles the N+1 problem in additional difficult cases. Using hints with has-many relationships while iterating now work as efficiently as the other cases.

UR 0.20-0.28: more speed

Lots of iterations over the past few weeks:

Compile time for UR down to < .5s on our test machines (down from a painful 1s):
- .465 on my MacBook
- .431 on a Linux server

Object creation is at around 10k/s for a 5 property object. This is about 15% faster than Moose, and as the number of properties increases the gap widens.

When loading objects from a database with a single expression, the rate increases 6-8x.

The distribution now includes a benchmark script for the curious, and for developers doing tuning.

UR 0.19 released

We revamped the “ur” command-line interface to be simpler and cleaner.

Projects can now be started with a single command, including database schema interrogation, and autogen of initial classes:

$ ur init MyApp dbi:XXXXXXX

Lots of internals were streamlined in this release as well, with more to come…

New UR Release 0.18

UR version 0.18 was uploaded to CPAN this morning.  This is primarily a bugfix release.

From the Change log:

  • Bugfix for queries involving subclasses without tables
  • Bugfixes for queries with the ‘in’ and ‘not in’ operators
  • Object cache indexing sped up by replacing regexes with direct string comparisons

UR now on github

http://github.com/sakoht/UR/

The history contains a commit for each of the CPAN releases, and several development commits since.

I hope to eventually import older svn history if I can get the dump/filter/load to work without errors.

Enjoy.