66048470246ceb2aa9df86cbac4d656706ccfdd1
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Oracle / WhereJoins.pm
1 package DBIx::Class::Storage::DBI::Oracle::WhereJoins;
2
3 use strict;
4 use warnings;
5
6 use base qw( DBIx::Class::Storage::DBI::Oracle::Generic );
7 use mro 'c3';
8
9 __PACKAGE__->sql_maker_class('DBIx::Class::SQLAHacks::OracleJoins');
10
11 1;
12
13 __END__
14
15 =pod
16
17 =head1 NAME
18
19 DBIx::Class::Storage::DBI::Oracle::WhereJoins - Oracle joins in WHERE syntax
20 support (instead of ANSI).
21
22 =head1 PURPOSE
23
24 This module was originally written to support Oracle < 9i where ANSI joins
25 weren't supported at all, but became the module for Oracle >= 8 because
26 Oracle's optimising of ANSI joins is horrible.  (See:
27 http://scsys.co.uk:8001/7495)
28
29 =head1 SYNOPSIS
30
31 DBIx::Class should automagically detect Oracle and use this module with no
32 work from you.
33
34 =head1 DESCRIPTION
35
36 This class implements Oracle's WhereJoin support.  Instead of:
37
38     SELECT x FROM y JOIN z ON y.id = z.id
39
40 It will write:
41
42     SELECT x FROM y, z WHERE y.id = z.id
43
44 It should properly support left joins, and right joins.  Full outer joins are
45 not possible due to the fact that Oracle requires the entire query be written
46 to union the results of a left and right join, and by the time this module is
47 called to create the where query and table definition part of the sql query,
48 it's already too late.
49
50 =head1 METHODS
51
52 See L<DBIx::Class::SQLAHacks::OracleJoins> for implementation details.
53
54 =head1 BUGS
55
56 Does not support full outer joins.
57 Probably lots more.
58
59 =head1 SEE ALSO
60
61 =over
62
63 =item L<DBIx::Class::SQLAHacks>
64
65 =item L<DBIx::Class::SQLAHacks::OracleJoins>
66
67 =item L<DBIx::Class::Storage::DBI::Oracle::Generic>
68
69 =item L<DBIx::Class>
70
71 =back
72
73 =head1 AUTHOR
74
75 Justin Wheeler C<< <jwheeler@datademons.com> >>
76
77 =head1 CONTRIBUTORS
78
79 David Jack Olrik C<< <djo@cpan.org> >>
80
81 =head1 LICENSE
82
83 This module is licensed under the same terms as Perl itself.
84
85 =cut