Provided by: lire-devel-doc_2.1.1-2.1_all bug

NAME

       Lire::DlfQuery - Interface to specialized SQL wrappers used internally by the Lire API.

SYNOPSIS

         use Lire::DlfQuery;

DESCRIPTION

   new( $stream_name )
       This is the constructor method for the Lire::DlfQuery class. It takes a dlf stream name
       and a Lire::DlfStore object as parameters. Lire::DlfStore is expected to contain the
       specified stream. Both parameters are mandatory. This method returns an instance of
       Lire::DlfQuery.

   stream_name()
       Returns the DLF stream's name upon which this DlfQuery is defined.

   join_stream( $stream_name )
       This method can be used to add an ExtendedSchema stream which will be joined in the query.

   joined_streams()
       Returns as an array reference all the streams that are part of the query.

   release()
       Nested DlfQuery introduce a circular reference between the children and the parent. Call
       release() on the top-level DlfQuery to remove the circular when the DlfQuery object isn't
       needed anymore, so that perl can garbage collect the objects.

   create_nested_query()
       This method will create and return an instance of Lire::DlfQuery nested within the current
       query. The returned query will be modified later with regular methods.

   nested_queries()
       This method returns a reference to an array containing all the nested queries of the
       current query.

   has_field( $field_name )
       Returns true if there is a field $field_name defined in the query.

   field_def( $field_name )
       Returns the SQL expression that is associated with the field $field_name in the query.
       This method will throw an exception if there is no field $field_name defined in the query.

   fields()
       Returns the name of the fields defined as simple fields in an array reference. These are
       fields added through the add_field() method.

   group_fields()
       Returns the name of the fields defined as group fields in an array reference. These are
       fields added through the add_group_field() method.

   aggr_fields()
       Returns the name of the fields defined as aggregate fields in an array reference. These
       are fields added through the add_aggr_field() method.

   add_field( $field_name, $expr )
       Add a simple field to the current query. The first parameter will be the field name. The
       second represents an expression that will then be aliased with the specified field name.
       Only the field name is mandatory.

       Certain restrictions apply: simple fields cannot be added to queries containing either
       subqueries or group fields.

   add_aggr_field( $field_name, $aggregate )
       Add a group field to the current query. The first parameter will be the field name. The
       second represents the aggregate expression that will then be aliased with the specified
       field name. Both parameters are mandatory.

       Aggregate field can only be added to queries which contain group fields.

   add_group_field( $field_name, $expr )
       Add a group field to the current query. The first parameter will be the field name. The
       second represents an expression that will then be aliased with the specified field name.
       Only the field name is mandatory.

       Certain restrictions apply: group fields cannot be added to queries containing simple
       fields.

   set_order_by_clause( $clause )
       Sets the order clause of the query, that is, what will appear in the "ORDER BY" clause of
       the SQL statement.

   order_by_clause()
       Returns the current ORDER BY clause or undef when none was set.

   set_sort_spec( $spec )
   sort_spec()
       Returns the sort specification that was set using set_sort_spec(). If no sort
       specification was set (or it was set using the set_order_by_clause() method), this will be
       undef.

   set_limit()
       Sets the limit clause of the query, that is, what will appear in the "LIMIT" clause of the
       SQL statement. This method will also have an impact on the internal handling of the query.

   limit()
       Returns the maximum number of records that should be returned by the query. When no limit
       was set, it returns 0.

   set_filter_clause( $clause, @params )
       Sets the filter clause of the query, the filter clause being the SQL restrictions on the
       results that will be return by the query, i.e. what will appear in the "WHERE" clause of
       the SQL statement.

       It is compatible with the DBI handling of placeholders ('?'). Of course, the amount of
       placeholders has to be the same of the amount of values and variables that are passed in
       @params.

       Only the clause parameter is mandatory, the number of elements in @params being dependent
       on the amount of placeholders specified therein.

   filter_clause()
       Returns the current WHERE clause or undef when none was set.

   execute()
       This method executes the query through the database interface and returns an instance of
       Lire::DlfResult to obtain the data.

   execute_summary()
       Same as the execute() except that the query is executed as a summary query.

SEE ALSO

       Lire::DlfQuery(3pm) Lire::DlfStream(3pm) Lire::DlfStore(3pm)

AUTHORS

         Francis J. Lacoste <flacoste@logreport.org>
         Wolfgang Sourdeau <Wolfgang.Sourdeau@Contre.COM>

VERSION

       $Id: DlfQuery.pm,v 1.44 2006/07/23 13:16:28 vanbaal Exp $

COPYRIGHT

       Copyright (C) 2003 Stichting LogReport Foundation LogReport@LogReport.org

       This file is part of Lire.

       Lire is free software; you can redistribute it and/or modify it under the terms of the GNU
       General Public License as published by the Free Software Foundation; either version 2 of
       the License, or (at your option) any later version.

       This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
       without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
       See the GNU General Public License for more details.

       You should have received a copy of the GNU General Public License along with this program
       (see COPYING); if not, check with http://www.gnu.org/copyleft/gpl.html.