Revert incorrect assumption about non-functional cached pagers 65245220
[dbsrgits/DBIx-Class.git] / Changes
diff --git a/Changes b/Changes
index 3fb0f4d..69b553d 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,329 @@
 Revision history for DBIx::Class
 
+    * New Features / Changes
+        - Add quote_names connection option. When set to true automatically
+          sets quote_char and name_sep appropriate for your RDBMS
+        - Add retrieve_on_insert column info flag, allowing to retrieve any
+          column value instead of just autoinc primary keys
+        - All limit dialects (except for the older Top and FetchFirst) are
+          now using bind parameters for the limits/offsets, making DBI's
+          prepare_cached useful across paged resutsets
+        - Support for savepoints for SQLite
+        - Support for MS Access databases via DBD::ODBC and DBD::ADO (only
+          Win32 support currently tested)
+        - Support for the Firebird RDBMS over the new DBD::Firebird driver
+        - IC::DateTime support for MSSQL over DBD::ADO
+        - Both the ::ODBC and ::ADO dispatchers now warn if a rdbms-specific
+          driver is not found for this connection before falling back to
+          plain ::Storage::DBI
+        - ::Storage::DBI::sth was mistakenly marked/documented as public,
+          privatize and warn on deprecated use
+        - Massive overhaul of bind values/attributes handling - slightly
+          changes the output of as_query (should not cause compat issues)
+        - Support ancient DB2 versions (5.4 and older), with proper limit
+          dialect
+        - Support sub-second precision for TIMESTAMPs for Firebird over ODBC
+        - Support BLOBs and CLOBs in WHERE clauses for Oracle, including LIKE
+          queries for CLOBs.
+
+    * Fixes
+        - Fix ::Storage::DBI::* MRO problems on 5.8.x perls
+        - Disable mysql_auto_reconnect for MySQL - depending on the ENV
+          it sometimes defaults to on and causes major borkage on older
+          DBD::mysql versions
+        - Fix dropped bind values in select/group_by on Oracle (omission
+          from 0542ec57 and 4c2b30d6)
+        - Fix remaining errors with Oracle and identifiers longer than the
+          Oracle-imposed maximum of 30 characters (RT#66390)
+        - Fix older oracle-specific "WhereJoins" to work properly with
+          name quoting
+        - Fix problems with M.A.D. under CGI::SpeedyCGI (RT#65131)
+        - Reenable paging of cached resultsets - breakage erroneously added
+          in 0.08127
+        - Better error handling when prepare() fails silently
+        - Fixes skipped lines when a comment is followed by a statement
+          when deploying a schema via sql file
+        - Fix reverse_relationship_info on prototypical result sources
+          (sources not yet registered with a schema)
+        - Warn and skip relationships missing from a partial schema during
+          dbic cascade_delete
+        - Automatically require the requested cursor class before use
+          (RT#64795)
+        - Work around a Firebird ODBC driver bug exposed by DBD::ODBC 1.29
+        - Fix (to the extent allowed by the driver) transaction support in
+          DBD::Sybase compiled against FreeTDS
+        - Fix exiting via next warnings in ResultSource::sequence()
+        - Fix stripping of table qualifiers in update/delete in arrayref
+          condition elements
+        - Change SQLMaker carp-monkeypatch to be compatible with versions
+          of SQL::Abstract >= 1.73
+        - Fix using \[] literals in the from resultset attribute
+        - Fix populate() with \[], arrays (datatype) and other exotic values
+        - Fix handling of rollbacks in nested transactions
+        - Fix complex limits (RNO/RowNum/FetchFirst/Top/GenSubq) with
+          sub-selects in the selectors list (correlated subqueries)
+        - Fix inconsistency between $rs->next with and without HRI when all
+          the "root" columns are in fact injected from the right rs side
+        - Fix the join optimizer to correctly preserve the non-multi path to
+          a multi relationship ( x -> might_have y -> has_many z )
+        - Fix object-derived custom-relationship resultsets to resultsources
+          with multilevel monikers (e.g. $schema->source('Foo::Bar') )
+        - Fix incorrect signature of the default sqlt_deploy_hook - it now
+          matches the documentation of passing in the result source object
+
+    * Misc
+        - Rewire all warnings to a new Carp-like implementation internal
+          to DBIx::Class, and remove the Carp::Clan dependency
+        - Only load Class::C3 and friends if necessary ($] < 5.010)
+        - Greatly reduced loading of non-essential modules to aid startup
+          time (mainly benefiting CGI users)
+        - Make sure all namespaces are clean of rogue imports
+        - Dropped DBI req 2 years back - everything works with 1.57, no
+          point requiring something newer
+
+0.08190-TRIAL 2011-01-24 15:35 (UTC)
+
+    * New Features / Changes
+        - Support for completely arbitrary SQL::Abstract-based conditions
+          in all types of relationships
+
+0.08127 2011-01-19 16:40 (UTC)
+    * New Features / Changes
+        - Schema/resultsource instances are now crossreferenced via a new
+          system guaranteeing leak-free mutually assured destruction
+        - DBIx::Class now warns when the user erroneously supplies
+          AutoCommit => 0 to connect()
+        - A warning is also issued before forcing the RaiseError
+          setting of externally supplied DBI handles
+        - Switch to a warning when find() is invoked with both a 'key'
+          argument and a NULL-containing condition to satisfy the named
+          constraint. Previously (starting with 0.08124) an exception was
+          thrown
+        - Switch to a warning when a commit is attempted with an out-of-sync
+          transaction_depth (someone issued a begin externally to DBIC).
+          Previously (starting with 0.08124) an exception was thrown
+
+    * Fixes
+        - A number of improvements/diagnostics of multiple active resultset
+          handling on MSSQL over DBD::ODBC
+        - Revert default selection to being lazy again (eagerness introduced
+          in 0.08125) - fixes DBIx::Class::Helper::ResultSet::RemoveColumns
+        - Fix losing order of columns provided in select/as (regression from
+          0.08125)
+        - Unaliased "dark" selectors no longer throw off prefetch
+        - Fix proper composition of bind values across all possible
+          SQL areas ( group_by => \[ ... ] now works properly )
+        - Allow populate to skip empty has_many relationships which makes
+          it easier to pass HashRefInflator data directly to ->populate
+        - Improve freeze/thaw semantics and error messages (RT#62546)
+        - Fix inconsistency in Manual::Features (RT#64500)
+        - Fix incorrect SQL when using for => 'shared' with MySQL (RT#64590)
+        - Throw comprehensible exception on erroneous $schema->source()
+          invocation
+        - Fix sloppy refactor of ResultSource::sequence back from 89170201
+          (RT#64839)
+        - Fix incorrect error detection during populate() on Oracle
+        - Better handling of result_source-less row objects by
+          auto-calling result_source_instance when necessary
+        - Fix reverse_relationship_info and sqlt deploy on partially
+          loaded schemas (relationships point to non-existent sources)
+
+    * Misc
+        - Fix test warning on win32 - at this point the test suite is
+          warning-free on all known OSes
+        - Require newest namespace::clean which in turn depends on new
+          installable Package::Stash
+
+0.08126 2010-12-28 18:10 (UTC)
+    * Fixes
+        - Bump forgotten Class::Accessor::Grouped core dependency
+        - Promote forgotten Hash::Merge optdep to a hard requirement
+        - Skip t/storage/error.t on smokers with leaking perls
+        - Fix t/storage/txn.t deadlocks on slower machines
+        - Do not run on smokers if a trial Package::Stash is found
+
+0.08125 2010-12-27 04:30 (UTC)
+    * New Features / Changes
+        - New method ResultSource columns_info method, returning multiple
+          pairs of column name/info at once
+        - $rs->search now throws when called in void context, as it makes
+          no sense (and is nearly always a sign of a bug/misdesign)
+        - Restore long-lost ability to supply unbalanced select/as pairs
+          e.g. +select => \'DISTINCT(foo, bar)', +as => ['foo', 'bar']
+        - +columns now behaves just like columns by not stripping a
+          fully-qualified 'as' spec (i.e. foo.bar results in $obj->foo->bar)
+        - Deprecate legacy $rs->search( %condition ) syntax (warn once per
+          callsite)
+        - NULL is now supplied unquoted to all debug-objects, in order to
+          differentiate between a real NULL and the string 'NULL'
+        - New search() condition operator -value used to pass complex bind
+          values to DBI: search({ array_col => { -value => [1,2,3] }})
+        - Add full INSERT...RETURNING support for Oracle
+        - Deprecate use of -nest in search conditions (warn once per
+          callsite)
+        - Deprecate the completely useless DBIx::Class::Serialize::Storable
+          result component
+
+    * Fixes
+        - Fixed read-only attribute set attempt in ::Storage::Replicated
+          (RT#62642)
+        - Fix incomplete logic while detecting correct Oracle sequence
+          on insert
+        - Fix detection of Oracle sequences for tables without an explicitly
+          specified schema (RT#63493)
+        - Major overhaul of Storage::Oracle to handle enabled quoting
+        - Fixed incorrect composition of select/as/columns attributes during
+          chaining (RT#61235)
+        - Proper serialization of resultsets with open cursors
+        - Refactor handling of RDBMS-side values during insert() - fix
+          regression of inserts into a Postgres / ::Replicated combination
+        - Missing dependency check in t/60core.t (RT#62635)
+        - Fix regressions in IC::DT registration logic
+        - Fix regression in select-associated bind value handling (RT#61025)
+        - Simplify SQL generated by some LIMITed prefetching queries
+        - Throw an exception when a required group_by on a complex prefetch
+          can not be auto-constructed, instead of continuing to eventually
+          produce invalid SQL
+        - Fix infinite loops on old perls with a recent Try::Tiny
+        - Improve "fork()" on Win32 by reimplementing a more robust DBIC
+          thread support (still problematic, pending a DBI fix)
+        - Properly quote table name on INSERT with no values
+        - Work around possible Storage destruction warnings
+        - Fix count of grouped resultsets using HAVING with aliases
+        - Setting belongs_to columns/relationships no longer leaves the
+          FK value and related object out of sync
+        - Stop stripping newlines from SQL statements in the limit emulators
+          as it is possible that custom sql with comments was provided
+        - Add forgotten attributes to Admin.pm
+        - Fix incorrect 'having' attribute documentation (RT#64129)
+        - Improve fallback-to-master/return-to-slave reporting in
+          ::Replicated::Balancer
+        - Adjust txn_scope_guard code/tests to changes in $@ handling on
+          recent blead (RT#64251)
+
+    * Misc
+        - Add extra option groups to DBIC::Optional::Depencencies, to aid
+          users in requesting the prerequisites for a particular RDBMS
+        - Switch all serialization to use Storable::nfreeze for portable
+          architecture independent ice
+        - Fix the bogus META.yml dependency injection issue for good
+        - Refactor DBIx::Class::Storage::Statistics::debugfh() to be lazy
+
+0.08124 2010-10-28 14:23 (UTC)
+    * New Features / Changes
+        - Add new -ident "function" indicating rhs is a column name
+          { col => { -ident => 'othercol' } } vs { col => \'othercol' }
+        - Extend 'proxy' relationship attribute
+        - Use DBIx::Class::Storage::Debug::PrettyPrint when the
+          environment variable DBIC_TRACE_PROFILE is set, see
+          DBIx::Class::Storage for more information
+        - Implemented add_unique_constraints() which delegates to
+          add_unique_constraint() as appropriate
+        - add_unique_constraint() now poparly throws if called with
+          multiple constraint definitions
+        - No longer depend on SQL::Abstract::Limit - DBIC has been doing
+          most of the heavy lifting for a while anyway
+        - FilterColumn now passes data through when transformations
+          are not specified rather than throwing an exception.
+        - Optimized RowNum based Oracle limit-dialect (RT#61277)
+        - Requesting a pager on a resultset with cached entries now
+          throws an exception, instead of returning a 1-page object
+          since the amount of rows is always equal to the "pagesize"
+        - $rs->pager now uses a lazy count to determine the amount of
+          total entries only when really needed, instead of doing it
+          at instantiation time
+        - New documentation map organized by features
+          (DBIx::Class::Manual::Features)
+        - find( { ... }, { key => $constraint } ) now throws an exception
+          when the supplied data does not fully specify $constraint
+        - find( col1 => $val1, col2 => $val2, ... ) is no longer supported
+          (it has been in deprecated state for more than 4 years)
+        - Make sure exception_action does not allow exception-hiding
+          due to badly-written handlers (the mechanism was never meant
+          to be able to suppress exceptions)
+
+    * Fixes
+        - Fix memory leak during populate() on 5.8.x perls
+        - Temporarily fixed 5.13.x failures (RT#58225)
+          (perl-core fix still pending)
+        - Fix result_soutrce_instance leaks on compose_namespace
+        - Fix $_ volatility on load_namespaces (a class changing $_
+          at compile time no longer causes a massive fail)
+        - Fix find() without a key attr. choosing constraints even if
+          some of the supplied values are NULL (RT#59219)
+        - Fixed rels ending with me breaking subqueried limit realiasing
+        - Fixed $rs->update/delete on resutsets constrained by an
+          -or condition
+        - Remove rogue GROUP BY on non-multiplying prefetch-induced
+          subqueries
+        - Fix incorrect order_by handling with prefetch on
+          $ordered_rs->search_related ('has_many_rel') resultsets
+        - Oracle sequence detection now *really* works across schemas
+          (fixed some ommissions from 0.08123)
+        - dbicadmin now uses a /usr/bin/env shebang to work better with
+          perlbrew and other local perl builds
+        - bulk-inserts via $dbh->bind_array (void $rs->populate) now
+          display properly in DBIC_TRACE
+        - Incomplete exception thrown on relationship auto-fk-inference
+          failures
+        - Fixed distinct with order_by to not double-specify the same
+          column in the GROUP BY clause
+        - Properly support column names with symbols (e.g. single quote)
+          via custom accessors
+        - Fixed ::Schema::Versioned to work properly with quoting on
+          (RT#59619)
+        - Fixed t/54taint fails under local-lib
+        - Fixed SELECT ... FOR UPDATE with LIMIT regression (RT#58554)
+        - Fixed CDBICompat to preserve order of column-group additions,
+          so that test relying on the order of %{} will no longer fail
+        - Fixed mysterious ::Storage::DBI goto-shim failures on older
+          perl versions
+        - Non-blessed reference exceptions are now correctly preserved
+          when thrown from udner DBIC (e.g. from txn_do)
+        - No longer disconnecting database handles supplied to connect
+          via a coderef
+        - Fixed t/inflate/datetime_pg.t failures due to a low dependency
+          on DateTime::Format::Pg (RT#61503)
+        - Fix dirtyness detection on source-less objects
+        - Fix incorrect limit_dialect assignment on Replicated pool members
+        - Fix invalid sql on relationship attr order_by with prefetch
+        - Fix primary key sequence detection for Oracle
+          (first trigger instead of trigger for column)
+        - Add various missing things to Optional::Dependencies
+        - Skip a test that breaks due to serious bugs in current DBD::SQLite
+        - Fix tests related to leaks and leaky perls (5.13.5, 5.13.6)
+
+    * Misc
+        - Entire test suite now passes under DBIC_TRACE=1
+        - Makefile.PL no longer imports GetOptions() to interoperate
+          better with Catalyst installers
+        - Bumped minimum Module::Install for developers
+        - Bumped DBD::SQLite dependency and removed some TODO markers
+          from tests (RT#59565)
+        - Do not execute t/zzzzzzz_sqlite_deadlock.t for regular module
+          installs - test is prone to spontaneous blow up
+        - DT-related tests now require a DateTime >= 0.55 (RT#60324)
+        - Makefile.PL now provides a pre-parsed DBIC version to the
+          Opt::Dep pod generator
+        - t/52leaks.t now performs very aggressive leak detection in
+          author/smoker mode
+
+0.08123 2010-06-12 14:46 (UTC)
+    * Fixes
+        - Make sure Oracle identifier shortener applies to auto-generated
+          column names, so we stay within the 30-char limit (RT#58271)
+        - Oracle sequence detection now works across schemas
+        - Fix a Storage/$dbh leak introduced by the migration to
+          Try::Tiny (this is *not* a Try::Tiny bug)
+        - Fix corner case of count with group-by over a 1:1 join column
+          where the selector ends up with column name clashes
+        - POD fixes (RT#58247)
+
+    * Misc
+        - Test suite default on-disk database now checks for Win32
+          fail-conditions even when running on other OSes
+
+0.08122 2010-06-03 17:41 (UTC)
     * New Features
         - Add DBIx::Class::FilterColumn for non-ref filtering
         - ::Storage::DBI now correctly preserves a parent $dbh from
@@ -10,6 +334,8 @@ Revision history for DBIx::Class
         - InflateColumn::DateTime support for MSSQL via DBD::Sybase
         - Millisecond precision support for MSSQL datetimes for
           InflateColumn::DateTime
+        - Oracle-specific hierarchical query syntax support:
+          CONNECT BY (NOCYCLE) / START WITH / ORDER SIBLINGS BY
         - Support connecting using $ENV{DBI_DSN} and $ENV{DBI_DRIVER}
         - current_source_alias method on ResultSet objects to
           determine the alias to use in programatically assembled
@@ -21,7 +347,14 @@ Revision history for DBIx::Class
           the unsafe_subselect_ok attribute, due to optimized queries
         - Support for Generic Subquery limit "emulation" - awfully slow
           and inefficient but works on almost any db, and is preferred
-          to a soft-limit
+          to software limit emulation
+        - Sybase ASE driver now uses SET ROWCOUNT where possible, and
+          Generic Subquery otherwise for limit support instead of always
+          using software limit emulation
+        - create_ddl_dir (and derivatives) now attempt to create the given
+          $ddl_dir if it does not already exist
+        - deployment_statements now automatically supplies the current RDBMS
+          version to SQLT producer_args for MySQL, Pg, SQLite and Oracle
 
     * Fixes
         - Fix nasty potentially data-eating bug when deleting/updating
@@ -31,6 +364,8 @@ Revision history for DBIx::Class
         - Don't try and ensure_class_loaded an object. This doesn't work.
         - Fix as_subselect_rs to not inject resultset class-wide where
           conditions outside of the resulting subquery
+        - Fix count() failing with {for} resultset attribute (RT#56257)
+        - Fixed incorrect detection of Limit dialect on unconnected $schema
         - update() on row not in_storage no longer throws an exception
           if there are no dirty columns to update (fixes cascaded update
           annoyances)
@@ -46,12 +381,22 @@ Revision history for DBIx::Class
           MSSQL (RT#57467)
         - Fix ::DBI::Storage to always be able to present a full set of
           connect() attributes to e.g. Schema::Versioned
+        - Fix Oracle auto-inc trigger detection of "INSERT OR UPDATE"-type
+          triggers
 
     * Misc
-        - Add a warning to load_namespaces if a class in ResultSet/
-          is not a subclass of DBIx::Class::ResultSet
+        - Reformatted Changelog \o/
+        - DBIC goes git://git.shadowcat.co.uk/dbsrgits/DBIx-Class.git
+        - Allow developers to skip optional dependency forcing when working
+          from a checkout
+        - Add a warning to load_namespaces if a class in ResultSet/ is not
+          a subclass of DBIx::Class::ResultSet
         - All DBIC exception-handling switched to Try::Tiny
+        - All DBIC modules are now free of imports via namespace::clean
         - Depend on optimized SQL::Abstract (faster SQL generation)
+        - Depend on new Class::Accessor::Grouped reintroducing optional use
+          of Class::XSAccessor (just install C::XSA and get lightning fast
+          column accessors)
 
 0.08121 2010-04-11 18:43:00 (UTC)
         - Support for Firebird RDBMS with DBD::InterBase and ODBC