DBIx::SQLEngine::Driver::Trait::NoUnions - For databases without select unions
# Classes can import this behavior if they don't have native unions
use DBIx::SQLEngine::Driver::Trait::NoUnions ':all';
# Implements a workaround for unavailable sql_union capability
$rows = $sqldb->fetch_select_rows( union => [
{ table => 'foo', columns => '*' },
{ table => 'bar', columns => '*' },
] );
This package supports SQL database servers which do natively provide a SQL
select with unions. Instead, queries with unions are executed separately and
their results combined.
You do not need to use this package directly; it is used internally by those
driver subclasses which need it.
For more information about Driver Traits, see "About Driver
Traits" in DBIx::SQLEngine::Driver.
The following methods are provided:
- dbms_union_unsupported()
-
$sqldb->dbms_union_unsupported() : 1
Capability Limitation: This driver does not support native
select unions.
- fetch_select()
-
$sqldb->fetch_select( %sql_clauses ) : $row_hashes
$sqldb->fetch_select( %sql_clauses ) : ($row_hashes,$column_hashes)
Unless passed a "union" argument pair, simply calls
the superclass method. Runs each of the provided queries separately and
concatenates their results. Munges the keys used to turn rows into
hashes, so that all results use the column names produced by the first
of the queries.
- fetch_select_rows()
-
$sqldb->fetch_select_rows( %sql_clauses ) : $row_arrays
$sqldb->fetch_select_rows( %sql_clauses ) : ($row_arrays,$column_hashes)
Unless passed a "union" argument pair, simply calls
the superclass method. Runs each of the provided queries separately and
concatenates their results.
- visit_select()
-
$sqldb->visit_select( $code_ref, %sql_clauses ) : @results
$sqldb->visit_select( %sql_clauses, $code_ref ) : @results
Unless passed a "union" argument pair, simply calls
the superclass method. Runs each of the provided queries separately and
concatenates their results.
To Do: This method doesn't yet munge the column names retrived
by the later queries to match the first.
- visit_select_rows()
-
$sqldb->visit_select_rows( $code_ref, %sql_clauses ) : @results
$sqldb->visit_select_rows( %sql_clauses, $code_ref ) : @results
Unless passed a "union" argument pair, simply calls
the superclass method. Runs each of the provided queries separately and
concatenates their results.
- fetchsub_select()
-
$sqldb->fetchsub_select( %sql_clauses ) : $coderef
Unless passed a "union" argument pair, simply calls
the superclass method. Runs each of the provided queries separately and
concatenates their results.
To Do: This method doesn't yet munge the column names retrived
by the later queries to match the first.
- fetchsub_select_rows()
-
$sqldb->fetchsub_select_rows( %sql_clauses ) : $coderef
Unless passed a "union" argument pair, simply calls
the superclass method. Runs each of the provided queries separately and
concatenates their results.
- sql_union()
- Calls Carp::confess().
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.