The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension Jifty::DBI.

0.39_999 Fri Jan 26 21:30:48 CST 2007

- Improved error message for "length is 42":

 Due to an incompatible API change, the "length" field in
 Jifty::DBI columns has been renamed to "max_length":
 
     column foo =>
         length is 10;       # NOT VALID 

 Please write this instead:
 
     column foo =>
         max_length is 10    # VALID

- Calling 'column' within a schema class is an error:
 
    package TestApp::Address::Schema;
    column address => ...;        # NOT VALID

  Please write this instead:

    package TestApp::Address;
    use Jifty::DBI::Schema;
    use Jifty::DBI::Record schema {
        column address => ...;    # VALID
    };


0.39_99 Fri Jan 26 19:57:48 CST 2007

- INCOMPATIBLE API CHANGE: "length is 42" must be written as "max_length is 42" instead.
- Switch to Object::Declare for schema declaration, fixing many annoyances such as the inability for two modules to refer to each other in their columns.
- "refers Foo::Bar", a new alias to "refers_to Foo::Bar".

0.31 Fri Jan 26 19:52:08 CST 2007

- load, load_by_cols, load_from_hash and create are now optionally class methods.
- "length is 42" in schema declarations is deprecated; please write "max_length is 42" instead.
- Jifty::DBI::Collection - document the "LIKE" and "MATCHES" limit operators correctly.

0.30 Wed Jan 17 15:29:44 EST 2007

- update version dependency on DateTime to 0.34
- fixed a "use of uninitialized value" warning in the tests.  [t/01records.t]
- Make sure we don't go looking for the validate_COLUMN sub everytime for columns without validators (thanks to Alex for pointing that out)
- Fix bug where validator_COLUMN subs weren't getting set as validators (thanks to Audrey for help)
-  Test that the declarative syntax automagically sets validators as it should (these fail at the moment, though a fix should be forthcoming)
- fixed the "order_by" bug in sub distinct_query.  [Jifty::DBI::Handle::Pg]
- added unit tests for the Handle::Pg patch.  [t/14handle-pg.t]
- fixed the desc string in the last test.  [t/13collection.t]
- made _order_clause more flexible by dealing with empty aliases [lib/Jifty/DBI/Collection.pm]
- added one test for it.  [t/13collection.t]
- added t/13collection.t to test methods in Jifty::DBI::Collection.
- Jifty::DBI::Handle::ODBC - Bring in the missing build_dsn method from
  DBIx::SearchBuilder such that this backend can work again.
  Requested by: agentzh++
- Jifty::DBI::Column - Recognize "is autocompleted".
- Jifty::DBI::Collection - The "function" argument to the "column" method
  was broken when passed with trailing "?" characters.
- Also clean up the documentation about ->distinct_required.
- Jifty::DBI::Collection - Document the long-undocumented ->column method.
- Jifty::DBI::Handle::ODBC - Doc fixup and author name fixup.
- Jifty::DBI::Schema - Add "is autocompleted".
- Jifty::DBI::Schema - Backport "order is 3" as alias of "sort_order is 3"
  from Jifty::Param land.
- Make "valid are ..." an alias for "valid_values are ..." for real.
-  add 'is indexed' syntax to the declaritive schema generator
- remove sort, it causes CREATE INDEX to run before CREATE TABLE
- add sqlite sql so that these tests run without needing postgres configured
- reorganize the code so its easier to add more databases later, and uses util.pl more
- Jifty::DBI::Collection - More CORE::join() to avoid warnings.
- Jifty::DBI::Collection: Pass through the arguments to L</new> to  L<clean_slate> and on to L<implicit_clauses>
- import Carp::croak so the error message in apply works


0.28, 0.29 Thu Nov 23 22:11:37 EST 2006

* The last upload didn't take

0.27 Thu Nov 23 22:06:09 EST 2006

* Initial implementation of prefetching for related records and collections


0.26 Mon Nov 13 11:11:31 EST 2006

Usability

 * avoid a warning in Jifty::DBI::Schema when our user is executing
   a .pm file. When that is the case, caller(1) is not defined. --gaal
 * Small error string change to suggest looking for missing use lines in models where refer_to is used --bartb

Core code

 * fixed sort_order setting in Jifty::DBI::Schema  --wolfgang
 * Don't use main.*, ever. --clkao
 * Jifty::DBI::Schema - Backport "valid are qw(...)" and "render as '...'"
   support from Jifty::Param::Schema as aliases to "valid_values are" and
   "render_as".  --audreyt
 * added as_hash to Jifty::DBI::Record --jesse
 * @ISA => use base --schwern
 * Use DBIx::DBScehma::Column and ::Table rather than trust that DBIx::DBScehma
   will load them. --schwern

Installation

 * Bump DateTime dependency, as older versions didn't provide the API 
   we're using. (0.22 is known bad) --jesse (Thanks to Matt Trout)

Testing

 * make sure to skip 04memcached.t if you don't have Cache::Memcached --ishigaki
 * Tests updated to not have $sth in scope when we $dbh->disconnect


Doc
 * demonstrate the valid_values alternate syntax that allows display and value to be separate 
 * Document columns and column --schwern
 * Minor changes to pod --evdb




0.25 Tue Sep 12 23:52:45 BST 2006

 * cleaned up DSN generation. 
 * Allowed arbitrary parameter specification in DSNs
 * Corrected the method name "DSN" to "dsn" throughout.
 * ( If a user tries to load a record by columns that happen ot be foriegn keys, and values that are objects, do the right thing
 * Propery cache DBI::Record entries when aliased.
 * Fewer accessor calls.
 * Only apply filters if we have values fetched.
 * make passing a J:D:Collection as a value DTRT
 * Jifty::DBI::Schema - s/die/croak/ to aid debugging.
 * Refactor Jifty::DBI::Filter::Date to be a subclass of ::Filter::DateTime.
 * New ::Filter::Time filter for time of day. ('time' sql type).
 * Update to Module::Install 0.64 to fix auto_install() when Makefile.PL is
   run from the command line and CPANPLUS is not installed.
 * The number of fixed tests in t/10schema.t for Jifty::DBI was wrong.
 * documented limit a bit more
 
 * JDBI::Filter::Date clones dates before setting timezone, so that we
   don't alter the object we're passed.
 * Spelling fixes.
 * Remove the @ISA-mocking code from Jifty::DBI::Schema, so that
 
     use MyApp::Record schema {
         ...;
     }
 
   can work even if MyApp::Record overrides Jifty::Record's column
   building methods.  We do that by arranging the schema callback
   to run after the @ISA chain is set up.
 
 * Jifty::DBI::Schema - defer initialization for columns created via the
  schema{} wrapper, so that users can continue to define column names
  that overlaps with the helper functions, such as "label" and "type".
 * attempt to test "label" and "type" column definitions.
   however, as I don't have Pg, I cannot run this test; help welcome.
 
 * cleaned up case sensitivity code
 * fixed SQLite docs
 * abstract out checking whether it's possible to make a clause case 
    insensitive so that subclasses of Handle can use those tests
 * doc'd Filter::DateTime special behavior when the column type is 'date'
 * Adding a filter to salt and hash passwords
 * Adding an after_set hook to Jifty::DBI::Record
 * Jifty::DBI::Schema: Lift the restriction to use another ::Schema
   package on the record model class; you can now directly write:
 
     package Wifty::Model::Page;
     use Jifty::DBI::Schema;
 
     schema {
     # ... your columns here ...
     };
 
   because &schema will unregister all symbols exported by Jifty::DBI::Schema
   after it runs the column initialization code.  Backward compatibility is
   preserved -- as long as you don't name your record model "Schema"...
 
 * update the testmodels.pl to use new schema decl syntax
 * Lift the call of schema to BEGIN time:
 
 * fixed handling of case sensitivity and numeric columns so opertions 
   like '>' do numeric instead of lexical comparisons
 * Allow collection SELECTs to have preload_columns defined.
 * Case insensitive searches should be, euh, case insensitive in Pg
 * Mark case-sensitive tests as TODO for MySQL
 * drop ::Cachable::new as it does nothing
 * add cache tests: columns names are case insensetive so we should
   generate cache key insenstive too
 ::Cachable::_gen_record_cache_key
  * hash key couldn't be undefined, but '' and 0 are different keys
  * values undef, 0 and '' are different, use '__undef' only when it's
    really undef
  * apply the same logic when $value is hash reference
  * use lower case for key part
  
 ::Cachable::load_from_cache
  * don't generate PK cache key, we do that in subcequent _store call
 
 ::Cachable::__set
  * don't create local arguments hash, just pass @_ throught
 
 ::Cachable::__delete
  * don't eat arguments, may be somebody wants to subclass
    and pass arguments to delete.
 
 ::Cachable::_fetch 
  * fetch again only when we found something in cache with
    keys' aliases
 ::Cachable::_primary_record_cache_key
  * avoid check for $self->id definess as if it's undef then
    record couldn't have pk cache key
  * use $self->primary_keys to get columns of the PK and its
    values, as result we get support for compound PKs here
 
  * Mark undef PK loading as TODO

  * Only mark the one failing test under mysql as TODO
 
  * make Collection smart about guessing table names
 
  * removed a lie from create() pod
  * Make _open_paren and _close_paren into public methods open_paren and close_paren

0.24 Tue Aug  8 23:33:34 EDT 2006
 * artificial version increment

0.23 Thu Jun 15 14:12:20 CEST 2006
 * Add tests for case sensitivity in limits
 * Caching for columns and readable/writable attributes. Only gains us 2% performance. But hey. 2% free
 * Added DateTime::Format::Strptime to requires
 * Do fewer ->COLUMNS calls from ->column, and do fewer ->column calls from
->value.
 * Make Jifty::DBI::Record::_init() expect a hash like Jifty::Record does
 * Fixes 'is_distinct' failure when used in Jifty
 * Use Class::Accessor::Fast.
 * Remove Carp::cluck, as it  hates END and vice versa.
 * Integrate today's hack for dumping callers for sql queries in question.
 * Add tests for case sensitivity in limits
 * Integrate today's hack for dumping callers for sql queries in question.
 * Enforce mandatory things at a Jifty::DBI layer
 * Cleanup 'distinct' column check and tests
 * Tests for column constraints 'mandatory' and 'distinct'
 * Implement support for 'distinct' column checks
 * Perltidy
 * Set validator on the column to validate_whatever (even if it's just
   the autogenerated one)
 * Update Module::Install to 0.21+ to prevent make loop; also
   avoid the use of "our" in VERSION strings for compat with
   older MMs. (Ditto with the previous commit)
 * Oracle fixes from Mark Gardner
 * Jifty::DBI::Filter::Storable - Do not die when the storable image is somehow
   corrupt; instead, simply return undef.
 * upgrade inc/ trees to 0.62+ to reflect the version::vpp fix.
 * Jifty::DBI::Collection - minor POD style and typo fix.
 * add_record now works on empty collections
 * removed a debug warning from alex
 * Enforce "default is ''" on columns
 * Document the use and behavior of refers_to
 * Cache::Memcached was being tested whether or not it was installed. Thanks to Matt Trout
 * Fixed Pod typo
 * Doc fixes relating to filters
 * lib/Jifty/DBI/Record.pm - removed incorrect '=for' directive
 * lib/Jifty/DBI/SchemaGenerator.pm - removed incorrect '=for' directive
 * t/01-version_checks.t - test for CPAN VERSION parsing hang-ups
 * lib/Jifty/DBI/Record.pm - added Class::ReturnValue's to disallowed accessors
 * lib/Jifty/DBI/Record.pm - do not try to set_<foo>() a collection
 * t/11schema_records.t - added tests for trying to set a collection
 * t/10schema.t - silence undef warning
 * lib/Jifty/DBI/Record.pm - catch attempts to set a refers_to
 * lib/Jifty/DBI/SchemaGenerator.pm - crediting myself per Jesse's suggestion :-O (ewilhelm)
 * lib/Jifty/DBI/SchemaGenerator.pm - pod edits:
   Redid synopsis with real example -- 
    maybe somewhat incorrect WRT Model::Schema, but it does work.
   Stripped boilerplate sections.
   Clarified add_model $model requirement.
   Cleanup odd =for public... pod bits.
   Spelling fix.
 * lib/Jifty/DBI/Handle.pm - documentation fixes/cleanup
 * created an api to allow distinct toggling


0.21 Wed May  3 14:14:41 EDT 2006

* We no longer do a count when setting up a collection's pager object by default
* order_by now returns the current orders
* added a "do_search" method to force a search, say before a count
* Added a filter for Dates, lib/Jifty/DBI/Filter/Date.pm
* Switched Jifty::DBI::Record to autocreate methods on object load rather than
  use AUTOLOAD.

0.20 Fri Apr 21 10:23:14 EDT 2006

* Documentation updates and misc bugfixes from Eric Wilhelm
* Performance optimization for the "standard case" of __value
* Postgres sequence parsing fix from Daniel Tabuenca

0.19 Sun Apr  2 18:59:53 JST 2006

* Columns now have a "sort_order" attribute. This way when auto-rendering
  forms, we can render them by "order defined" rather than just alphabetically.
    - idea by Tatsuhiko Miyagawa

0.18 Fri Mar 31 22:15:59 JST 2006

* Test fixes to remove databases after testing. This fixes
  Win32 test failures. -- Kenichi Ishigaki

* Added "filters" method to records, which adds both 
  input_filters and output_filters.

0.17 Sun Mar  5 00:41:41 PST 2006

* Memcached correctness fixes

0.16 Sat Mar  4 18:02:44 PST 2006

* Memcached installation fixes

0.15


* Added support for Memcached
* Updated record docs to show hooks

0.09 Thu Dec 29 07:56:30 EST 2005

* Fixed dependency on Class::Data::Inheritable

* Audrey Tang added "smarter" schema declaration processing to get us warnings on bogus usage.

0.08 Sun Dec 25 14:34:12 EST 2005

* Added a missing prereq: Exporter::Lite. Thanks to sri

0.06 Fri Dec 23 15:44:17 EST 2005

* Added more tests for mysql and Pg now that DBSchema supports them. Tests want more love

0.05_03

Forward-ported features from DBIx::SearchBuilder:
  1.37_01 Thu Dec  8 15:56:50 EST 2005
  * Switched Postgres sequence lookups to use CURRVAL, rather than OIDs
  
  1.36 Fri Dec  2 18:04:21 EST 2005
  
  * Change to how we resolve virtual columns to deal with a  
    "no such attribute" bug in RT
  
  1.35 Wed Nov  2 22:36:02 EST 2005
  * Doc fixes and OrderBy cleanup from ruslan
  
  1.34 Wed Nov  2 22:26:15 EST 2005
  
  * Clone support from Ruslan
  


0.05_02

* Added support for "virtual" columns
* Added support for named references between tables

    column owner =>
        refers_to MyApp::User by 'email';


* not_null deprecated in favor of mandatory

0.05_01 Tue Nov  8 16:29:02 EST 2005

* Initial release