The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.08197 - 2012-07-10

  • 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)

Documentation

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
How to read and write DBIx::Class POD.
Got a problem? Shoot it.
utility for administrating DBIx::Class schemata

Modules

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