my $self = shift;
my $f = shift;
- $self->{_from} = OpenILS::Reporter::SQLBuilder::Relation->parse( $f, $self );
+ $self->{_from} = OpenILS::Reporter::SQLBuilder::Relation->parse( $f, $self->builder );
return $self;
}
return $self unless (@cols && defined($cols[0]));
@cols = @{ $cols[0] } if (@cols == 1 && ref($cols[0]) eq 'ARRAY');
- push @{ $self->{_where} }, map { OpenILS::Reporter::SQLBuilder::Column::Where->new( $_, $self->{_from}->builder->{_rels} )->set_builder( $self->builder ) } @cols;
+ push @{ $self->{_where} }, map { OpenILS::Reporter::SQLBuilder::Column::Where->new( $_ )->set_builder( $self->builder ) } @cols;
return $self;
}
$self->{_aggregate} = $col_data->{aggregate};
- $self->{_rels} = shift;
-
if (ref($self->{_column})) {
my $trans = $self->{_column}->{transform} || 'Bare';
my $pkg = "OpenILS::Reporter::SQLBuilder::Column::Transform::$trans";
sub find_relation {
my $self = shift;
- return $self->{_rels}->{$self->{_relation}};
+ return $self->builder->{_rels}->{$self->{_relation}};
}
sub name {
bless $self => "OpenILS::Reporter::SQLBuilder::Join::$self->{_join_type}";
+ if ( $self->{_join_type} eq 'inner' or !$self->{_join_type}) {
+ $self->{_join_type} eq 'i';
+ } else {
+ if ($self->{_join_type} eq 'left') {
+ $self->{_right_rel}->{_nullable} = 'l';
+ } elsif ($self->{_join_type} eq 'right') {
+ $self->{_left_rel}->{_nullable} = 'r';
+ } else {
+ $self->{_right_rel}->{_nullable} = 'f';
+ $self->{_left_rel}->{_nullable} = 'f';
+ }
+ }
+
return $self;
}
my $dir = shift;
#return $self->{_sql} if ($self->{_sql});
- my $_nullable_rel = $dir && $dir eq 'r' ? '_left_rel' : '_right_rel';
- $self->{_right_rel}->{_nullable} = 'l';
- $self->{$_nullable_rel}->{_nullable} = $dir;
-
my $j = $dir && $dir eq 'r' ? 'FULL OUTER' : 'LEFT OUTER';
my $sql = "\n\t$j ". $self->SUPER::toSQL('l');
current_link.getAttribute('reltype') != 'has_a' ||
prev_type == 'left' ||
rel.reltype != 'has_a'
- ) && (
- getKeys(rel.fields.filter_tab).length == 0 &&
- getKeys(rel.fields.aggfitler_tab).length == 0
+// ) && (
+// getKeys(rel.fields.filter_tab).length == 0 &&
+// getKeys(rel.fields.aggfitler_tab).length == 0
)
) current_obj.type = 'left';