Revision history for DBIx::Class
* New Features / Changes
+ - 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()
+ - 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
+ - Stop erroneously considering order_by criteria from a join under
+ distinct => 1 (the distinct should apply to the main source only)
+ - Even more robust behavior of GenericSubQuery limit dialect
+ - 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
+
+0.08210 2013-04-04 15:30 (UTC)
+ * New Features / Changes
+ - Officially deprecate the 'cols' and 'include_columns' resultset
+ attributes
+ - Remove ::Storage::DBI::sth() deprecated in 0.08191
+
+ * Fixes
+ - Work around a *critical* bug with potential for data loss in
+ DBD::SQLite - RT#79576
+ - Audit and correct potential bugs associated with braindead reuse
+ of $1 on unsuccessful matches
+ - 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
+ seems like an invalid inheritance hierarchy
+
+ * Fixes
+ - Fix another embarrassing regression preventing correct refining of
+ the search criteria on a prefetched relation (broken in 0.08205)
+ - Fix incorrect callsite reporting by DBIC::Carp
+
+0.08208 2013-02-20 09:56 (UTC)
+ * New Features / Changes
+ - A bunch of nonsensically named arguments to the SQL::Translator
+ parser have been marked as deprecated (while still fully
+ supported)
+
+ * Fixes
+ - Fix duplicated selected columns when calling 'count' when a same
+ aggregate function is used more than once in a 'having' clause
+ (RT#83305)
+ - Prevent SQL::Translator::Producer::YAML from seeing the $dbh
+ in a potentially connected $schema instance (RT#75394)
+
+ * 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.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)
+ - Extra sanity check of a fresh DBI handle ($dbh). Fixes
+ connection coderefs returning garbage (seen in the wild)
+
+ * Misc
+ - Only allow known globals in SQL::Translator leak allowance
+ - General cleanup of error message texts - quote names/identifiers
+ for easier reading
+ - Stop t/52leaks.t from failing when AUTOMATED_TESTING=1
+
+0.08205 2013-01-22
+ * New Features / Changes
+ - The emulate_limit() arbitrary limit dialect emulation mechanism is
+ now deprecated, and will be removed when DBIx::Class migrates to
+ Data::Query
+ - Support for the source_bind_attributes() storage method has been
+ removed after a lengthy deprecation cycle
+ * Fixes
+ - When performing resultset update/delete only strip condition
+ qualifiers - leave the source name alone (RT#80015, RT#78844)
+ - Fix incorrect behavior on resultset update/delete invoked on
+ composite resultsets (e.g. as_subselect_rs)
+ - Fix update/delete operations referencing the updated table failing
+ on MySQL, due to its refusal to modify a table being directly
+ queried. As a workaround induce in-memory temp-table creation
+ (RT#81378, RT#81897)
+ - More robust behavior under heavily threaded environments - make
+ sure we do not have refaddr reuse in the global storage registry
+ - Fix failing test on 5.8 under Win32 (RT#81114)
+ - Fix hash-randomization test issues (RT#81638)
+ - Disallow erroneous calling of connect_info on a replicated storage
+ (RT#78436)
+ * Misc
+ - Improve the populate docs in ::Schema and ::ResultSet
+ - ::Storage::DBI::source_bind_attributes() removed as announced
+ on Jan 2011 in 0e773352a
+
+0.08204 2012-11-08
+ * New Features / Changes
+ - SQLMaker now accepts \'literal' with the 'for' rs attribute as an
+ override to the builtin FOR options
+ * Fixes
+ - Fix unique constraint violations in Ordered.pm blanket movement
+ (RT#79773, rolls back short-sighted 5e6fde33e)
+ - Fix API mismatch between new_result() and new_related() (originally
+ broken by fea3d045)
+ - Fix test failure on perl 5.8
+ * Misc
+ - Much more extensive diagnostics when a new RDBMS/DSN combination is
+ encountered (RT#80431)
+
+0.08203 2012-10-18
+ * Fixes
+ - Really fix inadequate $dbh->ping SQLite implementation (what shipped
+ in 0.08201 tickled other deficiencies in DBD::SQLite itself)
+
+0.08202 2012-10-06
+ * Fixes
+ - Replace inadequate $dbh->ping SQLite implementation with our own,
+ fixes RT#78420
+
+0.08200 2012-08-24 (UTC)
+ * Fixes
+ - Change one of the new tests for the previous release to not require
+ SQL::Translator
+
+0.08199 2012-08-22 (UTC)
+ * Fixes
+ - Roll back incomplete (and broken) internal changes - restore prefetch functionality
+
+0.08198 2012-07-11 03:43 (UTC)
+ * Fixes
+ - Fix a number of Win32 Test issues
+ - Fix silent Oracle connection failures
+
+0.08197 2012-07-10 10:32 (UTC)
+ * New Features / Changes
+ - Issue a warning when DateTime objects are passed to ->search
+ - Fast populate() in void context is now even more efficient by
+ going directly through execute_for_fetch bypassing execute_array
+ - Fix update()/delete() on complex resultsets to no longer fall back
+ to silly row-by-row deletion, construct a massive OR statement
+ instead
+ - Allow complex update/delete operations on sources without a
+ primary key, as long as they have at least one non-nullable
+ unique constraint
+ - dbicadmin now better supports catalyst-style config files, by
+ unrolling 'config_info' hashkeys
+ - Multiple Improvements MSSQL over DBD::ADO
+ - Transaction support
+ - Support for VARCHAR(MAX)/VARBINARY(MAX)/NVARCHAR(MAX) datatypes
+ - Nomalization of retrieved GUID values
+
+ * Fixes
+ - Fix complex has_many prefetch with resultsets not selecting identity
+ columns from the root result source
+ - Fix SkipFirst and FirstSkip limit dialects (Informix and Firebird)
+ - Fix "Skimming limit" dialects (Top, FetchFirst) to properly check
+ the order_by criteria for stability
+ - Fix "Skimming limit" dialects (Top, FetchFirst) to propagate
+ non-selected order criteria when part of a larger subquery
+ - Fix RowNumberOver and all "skimming limits" to correctly assemble
+ bind values when supplied for both select and order_by
+ - Fix all subquery-based dialects to not lose a subquery fragment
+ when we both select and order by the result of the same subquery
+ - Fix the Sybase hubrid limit dialect (RowCountOrGenericSubQ) losing
+ Group/Having/Order clauses when called without an offset (RT#73244)
+ - No longer generate incorrect SQL on ->as_query called on resultsets
+ with software_limit enabled
+ - A number of corner case fixes of void context populate() with \[]
+ - Fix corner case of forked children disconnecting the parents DBI
+ handle
+ - Improve identity/autoinc retrieval code in MSSQL and Sybase -
+ should reduce weird side-effects especially with populate()
+ - Explicitly disable DBD::ODBC batch operations (as of DBD::ODBC 1.35)
+ for the following drivers too buggy to handle the optimized path:
+ - FreeTDS ODBC driver (when used with MSSQL)
+ - The Firebird ODBC driver
+ - The MSAccess ODBC driver
+ - Explicitly disable DBD::ODBC dynamic_cursors when using freetds 0.83
+ or later - they made enough ODBC incompatible changes making it
+ impossible to support sanely
+ - Explicitly disable SCOPE_IDENTITY queries and statement caching for
+ MSSQL on DBD::Sybase compiled against freetds 0.83 or later - way too
+ buggy
+ - Disable statement caching when using Sybase ASE and DBD::Sybase
+ compiled against freetds 0.83 or later
+ - Fix leakage of $schema on in-memory new_related() calls
+ - Fix more cases of $schema leakage in SQLT::Parser::DBIC
+ - Fix leakage of $storage in ::Storage::DBI::Oracle
+ - Fix pessimization of Oracle RowNum limit dialect query when no
+ offset has been specified
+ - Remove useless vestigial pessimization in Ordered.pm for cases
+ when the position column is part of a unique constraint
+ - Fix dbicadmin to no longer ignore the documented 'config' option
+ - The schema-resultsource entanglement is now much more robust
+ under threads
+ - Fix ::Schema::ddl_filename() failing miserably on paths containing
+ certain numeric sequences
+ - t/53lean_startup.t adjusted for new 5.15.x base.pm behavior
+
+ * Misc
+ - Centralized leak-checks for all instances of DBICTest::Schema
+ from within any test
+ - Now passes all tests with Test::Builder 1.005
+ - Codebase is now trailing-whitespace-free
+ - Cleanup of complex resultset update/delete oprations - storage
+ specific code moved back to ResultSet and replaced by checks
+ of storage capabilities
+ - Fixed carp_once only emitting one single warning per package
+ regardless of warning content
+ - Test suite now can be safely executed in parallel (prove -jN
+ or HARNESS_OPTIONS=jN)
+
+0.08196 2011-11-29 05:35 (UTC)
+ * Fixes
+ - Fix tests for DBD::SQLite >= 1.34.
+ - Fix test failures with DBICTEST_SQLITE_USE_FILE set
+ - Fix the find() condition heuristics being invoked even when the
+ call defaults to 'primary' (i.e. when invoked with bare values)
+ - Throw much clearer error on incorrect inflation spec
+ - Fix incorrect storage behavior when first call on a fresh schema
+ is with_deferred_fk_checks
+ - Fix incorrect dependency on Test::Simple/Builder (RT#72282)
+ - Fix uninitialized warning in ::Storage::Sybase::ASE
+ - Improve/cache DBD-specific datatype bind checks (also solves a
+ nasty memleak with version.pm on multiple ->VERSION invocations)
+ - The internal carp module now correctly skips CAG frames when
+ reporting a callsite
+ - Fix test failures on perl < 5.8.7 and new Package::Stash::XS
+ - Fix TxnScopeGuard not behaving correctly when $@ is set at the
+ time of $guard instantiation
+ - Fix the join/prefetch resolver when dealing with ''/undef/()
+ relation specifications
+
+ * Misc
+ - No longer depend on Variable::Magic now that a pure-perl
+ namespace::clean is available
+ - Drop Oracle's Math::BigInt req down to 1.80 - no fixes concerning
+ us were made since
+
+0.08195 2011-07-27 16:20 (UTC)
+ * Fixes
+ - Fix horrible oversight in the Oracle sqlmaker when dealing with
+ queries updating blobs (RT#69829)
+
+0.08194 2011-07-20 16:10 (UTC)
+ * Fixes
+ - Fix $rs->populate([]) to be a no-op rather than an exception
+ - Overhaul t/53lean_startup.t to better dodge false positives
+ - Stop Data::Compare from loading random plugins
+ - Oracle: Recalculate LOB bind indices for UPDATE with LOBs in WHERE
+ (RT#69548)
+
+0.08193 2011-07-14 17:00 (UTC)
+ * New Features / Changes
+ - Allow schema cloning to mutate attributes
+ - DBIC now attempts more aggressive de-duplication of where
+ conditions on resultset chaining
+ - The Ordered component is now smarter wrt reordering of dirty
+ objects, and does its job with less storage queries
+ - Logging via DBIC_TRACE=1=<filename> no longer overwrites the
+ logfile on every program startup, appending loglines instead
+
+ * Fixes
+ - Fix issue where the query was becoming overly mangled when trying
+ to use pagination with a query that has a sub-select in the WHERE
+ clause
+ - Fix possible incorrect pagination on Oracle, when a resultset
+ is not ordered by a unique column
+ - Revert "Fix incorrect signature of the default sqlt_deploy_hook"
+ from 0.08191 - documentation was in fact incorrect, not the code
+ - Fix Sybase ASE IC::DateTime support (::Storage going out of sync
+ with new default format expected by DateTime::Format::Sybase)
+ - Fix a bug in update_all() resulting in the first row receiving a
+ different dataset than the subsequent ones
+ - Accomodate MSAccess supporting only 'INNER JOIN' (not plain 'JOIN')
+ - InflateColumn::DateTime option datetime_undef_if_invalid no longer
+ masks missing dependency exceptions (RT#66823)
+ - Fix bug in Schema::Versioned failing to insert a schema version row
+ during upgrades at the turn of the second
+ - Fix incorrect bind of integers >= 2^^32 (bigint columns) to
+ SQL_INTEGER, resulting in silent conversion to '-1'
+ - Fix pre 5.10 failures of t/55namespaces_cleaned.t due to buggy
+ require() (RT#68814)
+ - Oracle autoinc inserts no longer leave open cursors behind
+
+0.08192 2011-05-10 04:20 (UTC)
+ * Fixes
+ - Fix serious regression on SQLite, corrupting data when an alphanum
+ value does not correspond to a stale numeric datatype in colinfo
+
+0.08191 2011-05-02 00:45 (UTC) (deleted from CPAN)
+ * 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
+ - Bring back strict ordering of selectors in complex search chains
+ (an ill-fated attempt was made in 0.08127 to order intelligently)
- 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
- 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
- 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
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
+ - Fix inadequate handling of internal storage methods within
+ ::Storage::Replicated (RT#66295)
* Misc
- Rewire all warnings to a new Carp-like implementation internal
- 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)