NAME¶
SQL::Statement::Operation - base class for all operation terms
SYNOPSIS¶
# create an operation with an SQL::Statement object as owner, specifying
# the operation name (for error purposes), the left and the right
# operand
my $term = SQL::Statement::Operation->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation is an abstract base class providing the interface for
all operation terms.
INHERITANCE¶
SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
new¶
Instantiates new operation term.
value¶
Return the result of the operation of the term by calling operate
operate¶
Abstract method which will do the operation of the term. Must be
overridden by derived classes.
Returns the name of the executed operation.
left¶
Returns the left operand (if any).
right¶
Returns the right operand (if any).
DESTROY¶
Destroys the term and undefines the weak reference to the owner as well as the
stored operation, the left and the right operand.
NAME¶
SQL::Statement::Operation::Neg - negate operation
SYNOPSIS¶
# create an <not> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and B<no> right operand
my $term = SQL::Statement::Neg->new( $owner, $op, $left, undef );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Neg
INHERITANCE¶
SQL::Statement::Operation::Neg
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Return the logical negated value of the left operand.
NAME¶
SQL::Statement::Operation::And - and operation
SYNOPSIS¶
# create an C<and> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::And->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::And implements the logical "and" operation
between two terms.
INHERITANCE¶
SQL::Statement::Operation::And
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Return the result of the logical "and" operation for the values of the
left and right operand.
NAME¶
SQL::Statement::Operation::Or - or operation
SYNOPSIS¶
# create an C<or> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Or->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Or implements the logical "or" operation
between two terms.
INHERITANCE¶
SQL::Statement::Operation::Or
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Return the result of the logical "or" operation for the values of the
left and right operand.
NAME¶
SQL::Statement::Operation::Is - is operation
SYNOPSIS¶
# create an C<is> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Is->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Is supports: "IS NULL", "IS TRUE"
and "IS FALSE". The right operand is always evaluated in boolean
context in case of "IS TRUE" and "IS FALSE". "IS
NULL" returns
true even if the left term is an empty string ('').
INHERITANCE¶
SQL::Statement::Operation::Is
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Returns true when the left term is null, true or false - based on the requested
right value.
NAME¶
SQL::Statement::Operation::ANSI::Is - is operation
SYNOPSIS¶
# create an C<is> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Is->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::ANSI::Is supports: "IS NULL", "IS
TRUE" and "IS FALSE". The right operand is always evaluated in
boolean context in case of "IS TRUE" and "IS FALSE".
"IS NULL" returns
true if the right term is not defined,
false otherwise.
INHERITANCE¶
SQL::Statement::Operation::Is
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Returns true when the left term is null, true or false - based on the requested
right value.
NAME¶
SQL::Statement::Operation::Contains - in operation
SYNOPSIS¶
# create an C<in> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Contains->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Contains expects the right operand is an array of
SQL::Statement::Term instances. It checks whether the left operand is in the
list of the right operands or not like:
$left->value($eval) ~~ map { $_->value($eval) } @{$right}
INHERITANCE¶
SQL::Statement::Operation::Contains
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Returns true when the left term is equal to any of the right terms
NAME¶
SQL::Statement::Operation::Between - between operation
SYNOPSIS¶
# create an C<between> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Between->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Between expects the right operand is an array of 2
SQL::Statement::Term instances. It checks whether the left operand is between
the right operands like:
( $left->value($eval) >= $right[0]->value($eval) )
&& ( $left->value($eval) <= $right[1]->value($eval) )
INHERITANCE¶
SQL::Statement::Operation::Between
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Returns true when the left term is between both right terms
NAME¶
SQL::Statement::Operation::Equality - abstract base class for comparisons
SYNOPSIS¶
# create an C<equality> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Equality->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Equality implements compare operations between two
terms - choosing either numerical comparison or string comparison, depending
whether both operands are numeric or not.
INHERITANCE¶
SQL::Statement::Operation::Equality
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Return the result of the comparison.
numcmp¶
Abstract method which will do the numeric comparison of both terms. Must
be overridden by derived classes.
strcmp¶
Abstract method which will do the string comparison of both terms. Must
be overridden by derived classes.
NAME¶
SQL::Statement::Operation::Equal - implements equal operation
SYNOPSIS¶
# create an C<equal> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Equal->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Equal implements compare operations between two
numbers and two strings.
INHERITANCE¶
SQL::Statement::Operation::Equal
ISA SQL::Statement::Operation::Equality
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
numcmp¶
Return true when "$left == $right"
strcmp¶
Return true when "$left eq $right"
NAME¶
SQL::Statement::Operation::NotEqual - implements not equal operation
SYNOPSIS¶
# create an C<not equal> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::NotEqual->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::NotEqual implements negated compare operations
between two numbers and two strings.
INHERITANCE¶
SQL::Statement::Operation::NotEqual
ISA SQL::Statement::Operation::Equality
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
numcmp¶
Return true when "$left != $right"
strcmp¶
Return true when "$left ne $right"
NAME¶
SQL::Statement::Operation::Lower - implements lower than operation
SYNOPSIS¶
# create an C<lower than> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Lower->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Lower implements lower than compare operations
between two numbers and two strings.
INHERITANCE¶
SQL::Statement::Operation::Lower
ISA SQL::Statement::Operation::Equality
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
numcmp¶
Return true when "$left < $right"
strcmp¶
Return true when "$left lt $right"
NAME¶
SQL::Statement::Operation::Greater - implements greater than operation
SYNOPSIS¶
# create an C<greater than> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Greater->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Greater implements greater than compare operations
between two numbers and two strings.
INHERITANCE¶
SQL::Statement::Operation::Greater
ISA SQL::Statement::Operation::Equality
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
numcmp¶
Return true when $left $right>
strcmp¶
Return true when "$left gt $right"
NAME¶
SQL::Statement::Operation::LowerEqual - implements lower equal operation
SYNOPSIS¶
# create an C<lower equal> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::LowerEqual->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::LowerEqual implements lower equal compare operations
between two numbers and two strings.
INHERITANCE¶
SQL::Statement::Operation::LowerEqual
ISA SQL::Statement::Operation::Equality
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
numcmp¶
Return true when "$left <= $right"
strcmp¶
Return true when "$left le $right"
NAME¶
SQL::Statement::Operation::GreaterEqual - implements greater equal operation
SYNOPSIS¶
# create an C<greater equal> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::GreaterEqual->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::GreaterEqual implements greater equal compare
operations between two numbers and two strings.
INHERITANCE¶
SQL::Statement::Operation::GreaterEqual
ISA SQL::Statement::Operation::Equality
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
numcmp¶
Return true when $left = $right>
strcmp¶
Return true when "$left ge $right"
NAME¶
SQL::Statement::Operation::Regexp - abstract base class for comparisons based on
regular expressions
SYNOPSIS¶
# create an C<regexp> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Regexp->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Regexp implements the comparisons for the
"LIKE" operation family.
INHERITANCE¶
SQL::Statement::Operation::Regexp
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
operate¶
Return the result of the comparison.
right¶
Returns the regular expression based on the right term. The right term is
expected to be constant - so "a LIKE b" in not supported.
regexp¶
Abstract method which must return a regular expression ("qr//")
from the given string. Must be overridden by derived classes.
NAME¶
SQL::Statement::Operation::Like - implements the like operation
SYNOPSIS¶
# create an C<like> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Like->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Like is used to to the comparisons for the
"LIKE" operation.
INHERITANCE¶
SQL::Statement::Operation::Like
ISA SQL::Statement::Operation::Regexp
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
regexp¶
Returns "qr/^$right$/s"
NAME¶
SQL::Statement::Operation::Clike - implements the clike operation
SYNOPSIS¶
# create an C<clike> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::Clike->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::Clike is used to to the comparisons for the
"CLIKE" operation.
INHERITANCE¶
SQL::Statement::Operation::Clike
ISA SQL::Statement::Operation::Regexp
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
regexp¶
Returns "qr/^$right$/si"
NAME¶
SQL::Statement::Operation::RLike - implements the rlike operation
SYNOPSIS¶
# create an C<rlike> operation with an SQL::Statement object as owner,
# specifying the operation name, the left and the right operand
my $term = SQL::Statement::RLike->new( $owner, $op, $left, $right );
# access the result of that operation
$term->value( $eval );
DESCRIPTION¶
SQL::Statement::Operation::RLike is used to to the comparisons for the
"RLIKE" operation.
INHERITANCE¶
SQL::Statement::Operation::RLike
ISA SQL::Statement::Operation::Regexp
ISA SQL::Statement::Operation
ISA SQL::Statement::Term
METHODS¶
regexp¶
Returns "qr/$right$/s"
AUTHOR AND COPYRIGHT¶
Copyright (c) 2009,2010 by Jens Rehsack: rehsackATcpan.org
All rights reserved.
You may distribute this module under the terms of either the GNU General Public
License or the Artistic License, as specified in the Perl README file.