X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Changes;h=d557c3946b73c9d1917642947564de85d3ba28bc;hb=a8de639b29afc6645820ba346b47d53117dbbe7e;hp=2eb1ca30ed650e400bc78880d6815e47ad5d676f;hpb=c6b7885ff32a9c0238698da49d40ce75a651c1cd;p=dbsrgits%2FDBIx-Class.git diff --git a/Changes b/Changes index 2eb1ca3..d557c39 100644 --- a/Changes +++ b/Changes @@ -1,16 +1,410 @@ 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 + - 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 + - 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 + - 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.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.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= 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