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