RDF-Query
view release on metacpan or search on metacpan
lib/RDF/Query/Plan.pm view on Meta::CPAN
use Scalar::Util qw(blessed reftype refaddr);
use RDF::Query::Error qw(:try);
use RDF::Query::BGPOptimizer;
use RDF::Query::Plan::Aggregate;
use RDF::Query::Plan::BasicGraphPattern;
use RDF::Query::Plan::Constant;
use RDF::Query::Plan::Construct;
use RDF::Query::Plan::Distinct;
use RDF::Query::Plan::Filter;
use RDF::Query::Plan::Join::NestedLoop;
use RDF::Query::Plan::Join::PushDownNestedLoop;
use RDF::Query::Plan::Limit;
use RDF::Query::Plan::Offset;
use RDF::Query::Plan::Project;
use RDF::Query::Plan::Extend;
use RDF::Query::Plan::Quad;
use RDF::Query::Plan::Service;
use RDF::Query::Plan::Sort;
use RDF::Query::Plan::ComputedStatement;
use RDF::Query::Plan::ThresholdUnion;
use RDF::Query::Plan::Union;
use RDF::Query::Plan::SubSelect;
use RDF::Query::Plan::Iterator;
use RDF::Query::Plan::Load;
use RDF::Query::Plan::Clear;
use RDF::Query::Plan::Update;
use RDF::Query::Plan::Minus;
use RDF::Query::Plan::Sequence;
use RDF::Query::Plan::Path;
use RDF::Query::Plan::NamedGraph;
use RDF::Query::Plan::Copy;
use RDF::Query::Plan::Move;
use RDF::Trine::Statement;
use RDF::Trine::Statement::Quad;
use constant READY => 0x01;
use constant OPEN => 0x02;
use constant CLOSED => 0x04;
######################################################################
our ($VERSION, %PLAN_CLASSES);
BEGIN {
$VERSION = '2.919';
%PLAN_CLASSES = (
service => 'RDF::Query::Plan::Service',
);
}
######################################################################
=item C<< new >>
=cut
sub new {
my $class = shift;
my @args = @_;
return bless( [ { __state => $class->READY }, @args ], $class );
}
=item C<< execute ( $execution_context ) >>
=cut
sub execute ($);
=item C<< next >>
=cut
sub next;
=item C<< get_all >>
Returns all remaining rows.
=cut
sub get_all {
my $self = shift;
unless ($self->state == $self->OPEN) {
throw RDF::Query::Error::ExecutionError -text => "get_all can't be called on an unopen plan";
}
my @rows;
while (my $row = $self->next) {
push(@rows, $row);
}
return @rows;
}
=item C<< close >>
=cut
sub close {
my $self = shift;
$self->state( CLOSED );
}
=item C<< state ( [ $state ] ) >>
Returns the current state of the plan (either READY, OPEN, or CLOSED).
If C<< $state >> is provided, updates the plan to a new state.
=cut
sub state {
my $self = shift;
if (scalar(@_)) {
$self->[0]{__state} = shift;
}
return $self->[0]{__state};
}
=item C<< logging_keys >>
=cut
( run in 0.553 second using v1.01-cache-2.11-cpan-99c4e6809bf )