DBIx::SQLEngine::Mixin::NoUnions - For databases without select unions
# Classes can import this behavior if they don't have native unions use DBIx::SQLEngine::Mixin::NoUnions ':all'; # Implements a workaround for unavailable sql_union capability $rows = $sqldb->fetch_select_rows( union => [ { table => 'foo', columns => '*' }, { table => 'bar', columns => '*' }, ] );
This mixin supports SQL database servers which do natively provide a SQL select with unions. Instead, queries with unions are executed separately and their results combined.
Note: this feature has been added recently, and the interface is subject to change.
Because of the way DBIx::AnyDBD munges the inheritance tree, DBIx::SQLEngine subclasses can not reliably inherit from this package. To work around this, we export all of the methods into their namespace using Exporter and @EXPORT.
Note that, strictly speaking, this is not a real mixin class, but the above implementation issue was not discovered and worked around until after the package namespace had already been put into service.
In addition we go through some effort to re-dispatch methods because we can't rely on SUPER and we don't want to require NEXT. This isn't too complicated, as we know the munged inheritance tree only uses single inheritance. See the source code for the _super_dispatch function that handles this.
The following methods are provided:
Set to 1.
Calls Carp::confess().
Simply calls the superclass method unless the union clause is provided. Runs each of the provided queries separately and concatenates their results.
Note: This method doesn't yet munge the column names retrived by the later queries.
See DBIx::SQLEngine for the overall interface and developer documentation.
See DBIx::SQLEngine::Docs::ReadMe for general information about this distribution, including installation and license information.
To install DBIx::SQLEngine, copy and paste the appropriate command in to your terminal.
cpanm
cpanm DBIx::SQLEngine
CPAN shell
perl -MCPAN -e shell install DBIx::SQLEngine
For more information on module installation, please visit the detailed CPAN module installation guide.