Release v0.08270
[dbsrgits/DBIx-Class.git] / Changes
diff --git a/Changes b/Changes
index 16f2251..d557c39 100644 (file)
--- a/Changes
+++ b/Changes
 Revision history for DBIx::Class
 
+0.08270 2014-01-30 21:54 (PST)
+    * Fixes
+        - Fix 0.08260 regression in DBD::SQLite bound int handling. Inserted
+          data was not affected, but any function <=> integer comparison would
+          have failed (originally fixed way back in 0e773352)
+        - Fix failure to load DateTime formatter when connecting to Firebird
+          over ODBC
+
+    * Misc
+        - All drivers based on ::Storage::DBI::Firebird::Common now return the
+          same sqlt_type value (affects ::DBI::Interbase, ::DBI::Firebird and
+          ::DBI::ODBC::Firebird)
+
+0.08260 2014-01-28 18:52 (UTC)
+    * New Features
+        - A new zero-to-DBIC style manual: DBIx::Class::Manual::QuickStart
+
+    * Notable Changes and Deprecations
+        - Explicitly deprecate combination of distinct and selecting a
+          non-column via $rs->get_column()
+
+    * Fixes
+        - More robust handling of circular relationship declarations by loading
+          foreign classes less frequently (should resolve issues like
+          http://lists.scsys.co.uk/pipermail/dbix-class/2013-June/011374.html)
+          Note that none of this is a manifestations of a DBIC bug, but rather
+          unexpected (but correct) behavior of load-order-dependent (hence
+          logically broken) Resultclass hierarchies. In order to deal with this
+          DBIC is scaling back a large number of sanity checks, which are to be
+          reintroduce pending a better framework for source registration
+        - Fix multiple edge cases of complex prefetch combining incorrectly
+          with correlated subquery selections
+        - Fix multiple edge cases stemming from interaction of a non-selecting
+          order_by specification and distinct and/or complex prefetch
+        - Fix unbound growth of a resultset during repeated execute/exhaust
+          cycles (GH#29)
+        - Work around (and be very vocal about the fact) when DBIC encounters
+          an exception object with broken string overloading
+        - Clarify ambiguous behavior of distinct when used with ResultSetColumn
+          i.e. $rs->search({}, { distinct => 1 })->get_column (...)
+        - Setting quote_names propagates to SQL::Translator when producing
+          SQLite DDL (it is one of the few producers *NOT* quoting by default)
+        - Fix incorrect binding of large integers on old versions of
+          DBD::SQLite (now DBIC simply always binds SQLite ints as BIGINT)
+        - Silence (harmless) warnings on recent DBD::SQLite versions, when
+          inserting/updating large integers on 32bit ivsize systems (RT#76395)
+        - Back out self-cleaning from DBIx::Class::Carp for the time being
+          (as a side effect fixes RT#86267)
+        - Fix incorrect internal use of implicit list context in copy()
+        - Fix 0.08250 regression in driver determination when DBI_DSN is used
+        - Tests no longer fail if $ENV{DBI_DSN} is set
+        - Throw clearer exception on ->new_related() with a non-existent
+          relationship
+        - Fix incorrect parethesis unroll with multicolumn in, (never noticed
+          before fixing false positive in SQLA::Test 1.77)
+        - Fix t/storage/replicated.t class loading problem
+        - Stop using the deprecated Class::MOP::load_class()
+        - Fix warning in t/54taint.t with explicitly unset PERL5LIB (RT#91972)
+        - Fix t/54taint.t failing under a local::lib with installed earlier
+          DBIC version (RT#92486)
+
+    * Misc
+        - Massive incompatible change of ::BlockRunner internals (was never
+          documented as usable externally, this last set of changes settles
+          the design for proper documentation and opening up)
+        - Adjust exceptions in tests to accommodate changes in the upcoming
+          DBD::SQLite based on libsqlite 3.8.2
+        - More robust lock file naming scheme - allow tests to work on exotic
+          MSWin32 filesystems (habitual offender being http://is.gd/iy5XVP)
+        - Better diagnostics when File::Spec->tmpdir gives us crap in testing
+        - Replace $row with $result in all docs to be consistent and to
+          clarify various return values
+
+0.08250 2013-04-29 22:00 (UTC)
+    * New Features / Changes
+        - Rewrite from scratch the result constructor codepath - many bugfixes
+          and performance improvements (the current codebase is now capable of
+          outperforming both DBIx::DataModel and Rose::DB::Object on some
+          workloads). Some notable benefits:
+          - Multiple has_many prefetch
+          - Partial prefetch - you now can select only columns you are
+            interested in, while preserving the collapse functionality
+            (collapse is now exposed as a first-class API attribute)
+          - Prefetch of resultsets with arbitrary order
+            (RT#54949, RT#74024, RT#74584)
+          - Prefetch no longer inserts right-side table order_by clauses
+            (massively helps the deficient MySQL optimizer)
+          - Prefetch with limit on right-side ordered resultsets now works
+            correctly (via aggregated grouping)
+          - No longer order the insides of a complex prefetch subquery,
+            unless required to satisfy a limit
+          - Stop erroneously considering order_by criteria from a join under
+            distinct => 1 (the distinct should apply to the main source only)
+        - Massively optimize codepath around ->cursor(), over 10x speedup
+          on some iterating workloads.
+        - Support standalone \[ $sql, $value ] in literal SQL with bind
+          specifications: \[ '? + ?', 42, 69 ] is now equivalent to
+          \[ '? + ?', [ {} => 42 ], [ {} => 69 ] ]
+        - Changing the result_class of a ResultSet in progress is now
+          explicitly forbidden. The behavior was undefined before, and
+          would result in wildly differing outcomes depending on $rs
+          attributes.
+        - Deprecate returning of prefetched 'filter' rels as part of
+          get_columns() and get_inflated_columns() data
+        - Invoking get_inflated_columns() no longer fires get_columns() but
+          instead retrieves data from individual non-inflatable columns via
+          get_column()
+        - Emit a warning on incorrect use of nullable columns within a
+          primary key
+        - Limited checks are performed on whether columns without declared
+          is_nullable => 1 metadata do in fact sometimes fetch NULLs from
+          the database (the check is currently very limited and is performed
+          only on resultset collapse when the alternative is rather worse)
+
     * Fixes
         - Fix _dbi_attrs_for_bind() being called befor DBI has been loaded
           (regression in 0.08210)
         - Fix update/delete operations on resultsets *joining* the updated
           table failing on MySQL. Resolves oversights in the fixes for
           RT#81378 and RT#81897
-        - Even more robust behavior of GenericSubQuery limit dialect
+        - Fix open cursors silently resetting when inherited across a fork
+          or a thread
+        - Properly support "MySQL-style" left-side group_by with prefetch
+        - Fix $grouped_rs->get_column($col)->func($func) producing incorrect
+          SQL (RT#81127)
         - Stop Sybase ASE storage from generating invalid SQL in subselects
           when a limit without offset is encountered
-        - Correctly recognize root source unqualified columns when
-          resolving right-side ordered limited prefetch
+        - Even more robust behavior of GenericSubQuery limit dialect
+        - Make sure deployment_statements() and cursor_class() are called on
+          a resolved storage subclass
+
+    * Misc
+        - Fix tests failing due to unspecified resultset retrieval order
+          (test suite now will pass with newest SQLite libs)
 
 0.08210 2013-04-04 15:30 (UTC)
     * New Features / Changes
@@ -26,29 +149,6 @@ Revision history for DBIx::Class
         - Fix incorrect warning/exception originator reported by carp*() and
           throw_exception()
 
-0.08242-TRIAL (EXPERIMENTAL BETA RELEASE) 2013-03-10 14:44 (UTC)
-    * New Features / Changes
-        - Prefetch with limit on right-side ordered resultsets now works
-          correctly (via aggregated grouping)
-        - Changing the result_class of a ResultSet in progress is now
-          explicitly forbidden. The behavior was undefined before, and
-          would result in wildly differing outcomes depending on $rs
-          attributes.
-        - Scale back validation of the 'as' attribute - in the field
-          there are legitimate-ish uses of a inflating into an apparently
-          invalid relationship graph
-        - Warn in case of iterative collapse being upgraded to an eager
-          cursor slurp
-        - No longer order the insides of a complex prefetch subquery,
-          unless required to satisfy a limit
-
-    * Fixes
-        - Properly consider unselected order_by criteria during complex
-          subqueried prefetch
-        - Properly support "MySQL-style" left-side group_by with prefetch
-        - Fix $grouped_rs->get_column($col)->func($func) producing incorrect
-          SQL (RT#81127)
-
 0.08209 2013-03-01 12:56 (UTC)
     * New Features / Changes
         - Debugging aid - warn on invalid result objects created by what
@@ -77,45 +177,6 @@ Revision history for DBIx::Class
           tarball contents (implicitly fixes RT#83084)
         - Added strict and warnings tests for all lib and test files
 
-0.08241-TRIAL (EXPERIMENTAL BETA RELEASE) 2013-02-20 11:37 (UTC)
-    * New Features / Changes
-        - Revert to passing the original (pre-0.08240) arguments to
-          inflate_result() and remove the warning about ResultClass
-          inheritance.
-        - Optimize the generated rowparsers even more - no user-visible
-          changes.
-        - Emit a warning on incorrect use of nullable columns within a
-          primary key
-
-0.08240-TRIAL (EXPERIMENTAL BETA RELEASE) 2013-02-14 05:56 (UTC)
-    * New Features / Changes
-        - Rewrite from scratch the result constructor codepath - many bugfixes
-          and performance improvements (the current codebase is now capable of
-          outperforming both DBIx::DataModel and Rose::DB::Object on some
-          workloads). Some notable benefits:
-          - Multiple has_many prefetch
-          - Partial prefetch - you now can select only columns you are
-            interested in, while preserving the collapse functionality
-            (collapse is now exposed as a first-class API attribute)
-          - Prefetch of resultsets with arbitrary order
-            (RT#54949, RT#74024, RT#74584)
-          - Prefetch no longer inserts right-side table order_by clauses
-            (massively helps the deficient MySQL optimizer)
-        - Massively optimize codepath around ->cursor(), over 10x speedup
-          on some iterating workloads.
-
-    * Fixes
-        - Fix open cursors silently resetting when inherited across a fork
-          or a thread
-        - Fix duplicated selected columns when calling 'count' when a same
-          aggregate function is used more than once in a 'having' clause
-          (RT#83305)
-
-    * Misc
-        - Fixup our distbuilding process to stop creating world-writable
-          tarball contents (implicitly fixes RT#83084)
-        - Added strict and warnings tests for all lib and test files
-
 0.08206 2013-02-08
     * Fixes
         - Fix dbh_do() failing to properly reconnect (regression in 0.08205)