5dd6e2fa29fb0c549d38cabd549d0881cda980b8
[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::SQLMaker::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 is used with Oracle < 9.0 due to lack of support for standard
25 ANSI join syntax.
26
27 =head1 SYNOPSIS
28
29 DBIx::Class should automagically detect Oracle and use this module with no
30 work from you.
31
32 =head1 DESCRIPTION
33
34 This class implements Oracle's WhereJoin support.  Instead of:
35
36     SELECT x FROM y JOIN z ON y.id = z.id
37
38 It will write:
39
40     SELECT x FROM y, z WHERE y.id = z.id
41
42 It should properly support left joins, and right joins.  Full outer joins are
43 not possible due to the fact that Oracle requires the entire query be written
44 to union the results of a left and right join, and by the time this module is
45 called to create the where query and table definition part of the SQL query,
46 it's already too late.
47
48 =head1 METHODS
49
50 See L<DBIx::Class::SQLMaker::OracleJoins> for implementation details.
51
52 =head1 BUGS
53
54 Does not support full outer joins.
55 Probably lots more.
56
57 =head1 SEE ALSO
58
59 =over
60
61 =item L<DBIx::Class::SQLMaker>
62
63 =item L<DBIx::Class::SQLMaker::OracleJoins>
64
65 =item L<DBIx::Class::Storage::DBI::Oracle::Generic>
66
67 =item L<DBIx::Class>
68
69 =back
70
71 =head1 FURTHER QUESTIONS?
72
73 Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>.
74
75 =head1 COPYRIGHT AND LICENSE
76
77 This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE>
78 by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can
79 redistribute it and/or modify it under the same terms as the
80 L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>.