Changes for version 0.082700_06

  • Notable Changes and Deprecations
    • DBIC::FilterColumn now properly bypasses \'' and \[] literals, just like the rest of DBIC
    • DBIC::FilterColumn "from_storage" handler is now invoked on NULLs returned from storage
    • find() now throws an exception if some of the supplied values are managed by DBIC::FilterColumn (RT#95054)
    • Custom condition relationships are now invoked with a slightly different signature (existing coderefs will continue to work)
    • Add extra custom condition coderef attribute 'foreign_values' to allow for proper reverse-relationship-like behavior (i.e. $result->set_from_related($custom_rel, $foreign_result_object)
    • When in a transaction, DBIC::Ordered now seamlesly handles result objects that went out of sync with the storage (RT#96499)
    • CDBICompat::columns() now supports adding columns through supplied Class::DBI::Column instances (GH#52)
  • Fixes
    • Fix Resultset delete/update affecting *THE ENTIRE TABLE* in cases of empty (due to conditions) resultsets with multi-column keys
    • Fix on_connect_* not always firing in some cases - a race condition existed between storage accessor setters and the determine_driver routines, triggering a connection before the set-cycle is finished
    • Fix collapse being ignored on single-origin selection (RT#95658)
    • Fix incorrect behavior on custom result_class inflators altering the amount of returned results
    • Fix failure to detect stable order criteria when in iterator mode of a has_many prefetch off a search_related chain
    • Prevent erroneous database hit when accessing prefetched related resultsets with no rows
    • Proper exceptions on malformed relationship conditions (RT#92234)
    • Fix incorrect handling of custom relationship conditions returning SQLA literal expressions
    • Fix long standing bug with populate() missing data from hashrefs with different keysets: (RT#92723)
    • Fix multi-value literal populate not working with simplified bind specifications
    • Massively improve the implied resultset condition parsing - now all applicable conditions within a resultset should be properly picked up by create() and populate()
    • Ensure definitive condition extractor handles bizarre corner cases without bombing out (RT#93244)
    • Fix set_column on non-native (+columns) selections (RT#86685)
    • Fix set_inflated_column incorrectly handling \[] literals (GH#44)
    • Ensure that setting a column to a literal invariably marks it dirty
    • Work around exception objects with broken string overloading in one additional codepath (missed in 0.08260)
    • Fix more inconsistencies of the quote_names attribute propagating to SQL::Translator (partially RT#87731)
    • Fix SQLT constraint naming when DBIC table names are fully qualified (PR#48)
    • Fix inability to handle multiple consecutive transactions with savepoints on DBD::SQLite < 1.39
    • Fix CDBICompat to match Class::DBI behavior handling non-result blessed has_a (implicit deflate via stringification and inflate via blind new) (GH#51)
  • Misc
    • A bunch of fixes for the botched condition parsing in the previous devrels (082700_01 ~ 082700_05) (RT#98161)
    • Ensure source metadata calls always take place on the result source instance registered with the caller
    • IFF DBIC_TRACE output defaults to STDERR we now silence the possible wide-char warnings if the trace happens to contain unicode
    • Remove ::ResultSource::resolve_condition - the underlying machinery is in flux, and the method has had a deprecation warning for 5 years


Index of the Manual
Developing DBIx::Class Components
Miscellaneous recipes
What documentation do we have?
Simple CD database example
Frequently Asked Questions (in theory)
A boatload of DBIx::Class features with links to respective documentation
Clarification of terms used.
Introduction to DBIx::Class
Manual on joining tables with DBIx::Class
up and running with DBIC in 10 minutes
How to read and write DBIx::Class POD.
Representing a single result (row) from a DB query
Got a problem? Shoot it.
utility for administrating DBIx::Class schemata


Extensible and flexible object <-> relational mapper.
See Class::Accessor::Grouped
Administration object for schemas
Class::DBI Compatibility layer.
Provides advanced Carp::Clan-like warning functions for DBIx::Class internals
Core set of DBIx::Class modules
Abstract object representing a query cursor on a resultset.
(DEPRECATED) classdata schema component
Exception objects for DBIx::Class
Automatically convert column data
Automatically create references from column data
Auto-create DateTime objects from date and datetime columns.
DEPRECATED (superseded by DBIx::Class::InflateColumn::FS)
Optional module dependency specifications (for module authors)
Modify the position of objects in an ordered list.
Primary Key class
Automatic primary key class
Inter-table relationships
Inter-table relationships
Get raw hashrefs from a resultset
Represents a query used for fetching a set of results.
helpful methods for messing with a single column of the resultset
scheduled for deletion in 09000
Result source object
ResultSource object representing a view
Serializable pointers to ResultSource instances
provides a classdata table object and method proxies
Basic row methods
An SQL::Abstract-based SQL maker class
SQL::Abstract::Limit-like functionality for DBIx::Class::SQLMaker
Pre-ANSI Joins-via-Where-Clause Syntax
composable schemas
DBIx::Class::Schema plugin for Schema upgrades
hooks for Storable nfreeze/thaw
Run environment checks on startup
Generic Storage Handler
Try running a block of code until success with a configurable retry logic
DBI storage handler
Support specific to MS Access
Support for DBD::ADO
Support for MS Access over ADO
GUID Support for MS Access over ADO
Support for Microsoft SQL Server via DBD::ADO
Remove trailing NULLs in binary data and normalize GUIDs for MSSQL over ADO
Storage component for RDBMS requiring explicit placeholder typing
Object representing a query cursor on a resultset.
IBM DB2 support for DBIx::Class
Driver for the Firebird RDBMS via DBD::Firebird
Driver Base Class for the Firebird RDBMS
Storage Component for Sybase ASE and MSSQL for Identity Inserts / Updates
Base Storage Class for Informix Support
Driver for the Firebird RDBMS via DBD::InterBase
Base Class for Microsoft SQL Server support in DBIx::Class
Sometime DBDs have poor to no support for bind variables
Base class for ODBC drivers
Support specific to MS Access over ODBC
Support specific to DB2/400 over ODBC
Driver for using the Firebird RDBMS through ODBC
Support specific to Microsoft SQL Server over ODBC
Driver for using Sybase SQL Anywhere through ODBC
Base class for Oracle driver
Oracle Support for DBIx::Class
Oracle joins in WHERE syntax support (instead of ANSI).
Automatic primary key class for PostgreSQL
BETA Replicated database support
Manage a pool of replicants
A replicated DBI Storage Role
A DBI Storage Role with DSN information in trace output
Driver for SQL Anywhere
GUID Support for SQL Anywhere over DBD::SQLAnywhere
Automatic primary key class for SQLite
Base class for drivers using DBD::Sybase
Sybase ASE SQL Server support for DBIx::Class
Storage::DBI subclass for Sybase ASE without placeholder support
Base class for drivers using DBD::Sybase over FreeTDS.
(DEPRECATED) Legacy storage class for MSSQL via DBD::Sybase
Support for Microsoft SQL Server via DBD::Sybase
Support for Microsoft SQL Server via DBD::Sybase without placeholders
Storage component for RDBMSes supporting GUID types
Storage::DBI class implementing MySQL specifics
Scope-based transaction handling
Force UTF8 (Unicode) flag on columns (DEPRECATED)
Create a SQL::Translator schema from a DBIx::Class::Schema instance