|
Pkgsrc changes:
o Add perl>=5.10 as an alternative to p5-version
Upstream changes:
0.53 Wed Mar 25 15:27:03 EDT 2009
- Major bugfixes:
* On rollback, flush the record cache. This fixes a bug when SQLite
reuses primary keys after rollback, and thus the record cache is
wrong.
* Apply filters to "default is ..." values, so "is boolean, default is
0" works on postgres, for instance
* $self->_new_collection_args is passed to the ->new constructor of a
collection, not its ->new_item method
- Performance fixes:
* Don't call accessor twice when we have values around
* Don't create temporary variables we don't need around, just return
* Optimize for the case when there are no output filters
* Play with self/class only when passed argument is not a reference
* In _do_search, separate prefetch and non-prefetch paths; the latter
is a much tighter loop
* Refactor first pass over results in prefetch path
* Move a ->new_item call where we only need it
* Jifty::DBI::Handle::SQLite - LOWER() in SQLite is expensive; it's
easier just put COLLATE NOCASE on the column side. Bump DBD::SQLite
to 1.14 which gives us COLLATE NOCASE.
* Cache on record table, not record class so subclasses also get
cached correctly. If the data in the underlying table changes,
regardless of the class you're using, you want to load the new data.
* Refactor _qualified_record_columns
* call ->table for defaulting only when we actually want defaulting
* Selay some method calls when possible in limit
* Minor refactoring of _get_alias
* grep before looping to loop over fewer values in load_from_hash
* Cache load attempts in new_item in a local static cache
* Cache filter class load attempts in _apply_filters
* Save some slow Class::Accessor calls in Jifty::DBI::Filter
* Stick aliases into COLUMNS as well, for faster lookup
* Provide a faster load_from_hash for when we're being called from
do_search
- Datetime fixes:
* _formatter is *inheritable* class data. If it happens to get set by
the DateTime filter before getting set by one of its subclasses (the
Date and Time filters), than it is stuck on the DateTime _formatter
setting because the subclasses don't override it. There are a
couple solutions, the simplest being to check the value of _strptime
and update/override _formatter if it is different, which is what
I've done here. (This may not be the most optimized solution.)
* Require Time::Duration::Parse 0.06 to win us decimal durations like
1.5h
* Fix a broken regex that just happened to work because we only fed it
correct data
* Add date_only method in date and datetime filters
* For date-only timestamps, set hour, minute, and second to zero
* Include the datetime string we're trying to decode in parse failure
cluck
* Use DateTime's strptime since we don't want additional logic
- Documentation fixes:
* Minor POD improvement for debian lintian in Jifty::DBI::Column
* Adding an example of open_paren/close_paren and limit subclause.
* Added documentation for "IS" on limit().
* Additional docs for load_by_cols
* Update record_class' docs
- Minor bugfixes:
* Perltidy, primarily for indentation fixes
* Update copyright year to 2009
* collections can now clear_order_by
* requires('perl' => '5.8.3') confuses M:I. the "correct" incantation
is perl_version('5.8.3')
* Add the ability to unload columns and prefetched values
* Use $args{'collection'}->limit instead of
$self->Jifty::DBI::Collection::limit so we don't break
* We accept IN or = as operators for array ref. values, so match
against that (and do it case insensitively to boot)
* Allow validators to get extra arguments
* Storable with non-bytea is OK if we base64
* add double naming schema for record references, using name, name_by
* fixed situation with 'column X_not_id refers_to M by "not_id"'
* Aliases should be virtual
* When we have group_by, the first column may not be enough to
distinctify the rows. But since they're grouped, they're all
distinct by definition.
* turn _handle _is_limited rows_per_page into accessors
* Clean out fetched when we load_from_hash
* Pass arguments database_Version to the super method
* Don't chomp Collection or s if prev character is ':', die instead,
it can happen for annon collections based either on JDBI::Collection
or J::Collection
* No need to setup the pager, its constructor does that for us;
actually it's really questionable that we need to setup pager when
there is no paging by default
* Don't optimize left joins on mysql 5.0 and newer, may be other DBs
can drop this too
* $caller->COLUMNS should not contain virtual methods from plugins
* Add "raw value" internal values
* Plugin import must not call ->columns which causes incorrect
caching.
|