--- nfo/perl/libs/Data/Storage/Handler/Tangram.pm 2003/05/13 16:38:38 1.38 +++ nfo/perl/libs/Data/Storage/Handler/Tangram.pm 2003/06/06 11:40:40 1.39 @@ -1,8 +1,11 @@ ############################################ # -# $Id: Tangram.pm,v 1.38 2003/05/13 16:38:38 joko Exp $ +# $Id: Tangram.pm,v 1.39 2003/06/06 11:40:40 jonen Exp $ # # $Log: Tangram.pm,v $ +# Revision 1.39 2003/06/06 11:40:40 jonen +# fixed bug at 'getFilteredList' +# # Revision 1.38 2003/05/13 16:38:38 joko # problems with "tied" on 5.6.1/win32 # @@ -526,7 +529,9 @@ # TODO: is_op? # dispatch un-common operators if exists if($filter->{op} eq "ref") { - push @tfilters, 'ref($remote->{' . $filter->{key} . '})' . " eq '$filter->{val}'"; + # do nothing, results will be filtered later cause 'tangram-filter' doesn't support 'ref' query + #print "Filter->op eq 'ref'.\n"; + #push @tfilters, 'ref($remote->{' . $filter->{key} . '})' . " eq '$filter->{val}'"; } else { # HACK: build eval-string (sorry) to get filtered list - please give advice here push @tfilters, '$remote->{' . $filter->{key} . '}' . " $filter->{op} '$filter->{val}'"; @@ -552,6 +557,23 @@ @results = eval($evalstring); die $@ if $@; + + # filter results + if($filters->[0]->{op} eq "ref") { + #print "Filter->op eq 'ref'.\n"; + my $att_name = $filters->[0]->{key}; + my $att_val = $filters->[0]->{val}; + my @filtered; + foreach(@results) { + if(ref($_->{$att_name}) eq $att_val) { + push @filtered, $_; + } + } + @results = @filtered; + } + + #print "results: " . Dumper(\@results); + return \@results; }