Adrian Witas > SQL-Entity > SQL::Entity::Index

Download:
SQL-Entity-0.05.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  1
View/Report Bugs
Module Version: 0.01   Source  

NAME ^

SQL::Entity::Index - Entity index abstraction.

SYNOPSIS ^

    use SQL::Entity::Index;

    my $index = SQL::Entity::Index->new(
        name    => 'idx_empno',
        columns => ['empno'],
        hint    => ' INDEX_ASC( emp empno ) '
    );

DESCRIPTION ^

    Represents index, that force resultset order by either generating ORDER BY sql fragment,
    or by adding hint sql fragement (Oracle, MySQL)


    my $entity = SQL::Entity->new(
        name                  => 'emp',
        primary_key           => ['empno'],
        unique_expression     => 'rowid',
        columns               => [
            sql_column(name => 'ename'),
            sql_column(name => 'empno'),
            sql_column(name => 'deptno')
        ],
        indexes => [
            sql_index(name => 'idx_emp_empno', columns => ['empno'], hint => 'INDEX_ASC(emp idx_emp_empno)'),
            sql_index(name => 'idx_emp_ename', columns => ['ename']),
        ],
        order_index => 'idx_emp_ename'
    );


    my ($sql, $bind_variables) = $query->query();
    will return
    SELECT emp.*
    FROM (
    SELECT /*+ INDEX_ASC(emp idx_emp_ename) */ ROWNUM AS the_rownum,
      emp.rowid AS the_rowid,
      emp.deptno,
      emp.ename,
      emp.empno
    FROM emp
    WHERE ROWNUM < ?) emp
    WHERE the_rownum >=

EXPORT ^

sql_index by 'all' tag.

ATTRIBUTES

name
order_by_cluase

order_by_cluase => 'empno desc, ename asc'

columns
hint

Cost base optymizer hitn (Oracle, MySQL)

#TODO add dybnamic hint based on condition objects

METHODS

sql_index

Creates a new instance of the SQL::Entity::Index

order_by_operand

Returns sql fragment operand to ORDER BY cluase

SEE ALSO ^

SQL::Entity SQL::Entity::Column

COPYRIGHT AND LICENSE ^

The SQL::Entity::Index module is free software. You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.

AUTHOR ^

Adrian Witas, adrian@webapp.strefa.pl

syntax highlighting: