implemented _collapse_result and _merge_result
[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.
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