Matthew Simon Cavalletto


DBIx::SQLEngine::DriverTrait::NoComplexJoins - For databases without complex joins


  # Classes can import this behavior if they don't have joins using ON
  use DBIx::SQLEngine::DriverTrait::NoComplexJoins ':all';
  # Implements a workaround for unavailable "inner join on ..." capability
  $rows = $sqldb->fetch_select_rows( tables => [
    'foo', inner_join=>[ ' =' ], 'bar'
  ] );
  # Attempts to use the "outer join" produce an exception
  $rows = $sqldb->fetch_select_rows( tables => [
    'foo', inner_join=>[ ' =' ], 'bar'
  ] );


This package supports SQL database servers which do natively provide a SQL select with inner and outer joins. Instead, inner joins are replaced with cross joins and a where clause. Outer joins, including left and right joins, are not supported and will cause an exception.

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.


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.