fixed bug in prior commit now uses build_rows too
[Pqsl-Perl.git] / PSQL-Query / lib / PSQL / Query.pm
blobfde4a8d5f9834566c49ac2de31fde83ddd13e294
1 package PSQL::Query;
2 use Moose;
4 use PSQL::Query::Token::Row::Operation;
6 has 'rows_by_dom_depth' => (
7 isa => 'HashRef'
8 , is => 'ro'
9 , lazy => 1
10 , default => \&build_rows_by_dom_depth
13 has 'rows_by_query_order' => (
14 isa => 'ArrayRef'
15 , is => 'ro'
16 , 'default' => sub { [] }
19 sub shift_row {
20 my $self = shift;
21 shift @{$self->rows_by_query_order};
24 sub unshift_row {
25 my ( $self, $row ) = @_;
26 unshift @{$self->rows_by_query_order}, $row;
29 sub pop_row {
30 my $self = shift;
31 pop @{$self->rows_by_query_order};
34 sub push_row {
35 my ( $self, $row ) = @_;
36 push @{$self->rows_by_query_order}, $row;
39 sub build_rows_by_dom_depth {
40 my $self = shift;
42 my $rows = {};
44 foreach my $row (@{ $self->rows_by_query_order }) {
46 my $dom_level = $row->dom_level;
47 my $name = $row->name;
49 push @{ $rows->{ $dom_level }->{ $name } }, $row;
53 $rows;
57 =head1 NAME
59 PSQL::Query - A framework to parse pg-query plans via the output of Explain / Explain Analyze
61 =head1 DESCRIPTION
63 This module is currently a backend for L<psql-plus>, the release of .01 is largely dependant on it. The internals of this module are subject to change. Check the README for more information.
65 =head1 AUTHOR
67 Evan Carroll, C<< <me at evancarroll.com> >>
69 =head1 COPYRIGHT & LICENSE
71 Copyright 2007 Evan Carroll, all rights reserved.
73 This program is free software; you can redistribute it and/or modify it
74 under the same terms as Perl itself.
76 =cut