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.

op

Returns the name of the executed operation.

left

Returns the left operand (if any).

right

Returns the right operand (if any).

\s-1DESTROY\s0

Destroys the term and undefines the weak reference to the owner as well as the stored operation, the left and the right operand.

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.

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 \*(C`and\*(C' 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 \*(C`and\*(C' operation for the values of the left and right operand.

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 \*(C`or\*(C' 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 \*(C`or\*(C' operation for the values of the left and right operand.

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: \*(C`IS NULL\*(C', \*(C`IS TRUE\*(C' and \*(C`IS FALSE\*(C'. The right operand is always evaluated in boolean context in case of \*(C`IS TRUE\*(C' and \*(C`IS FALSE\*(C'. \*(C`IS NULL\*(C' 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.

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: \*(C`IS NULL\*(C', \*(C`IS TRUE\*(C' and \*(C`IS FALSE\*(C'. The right operand is always evaluated in boolean context in case of \*(C`IS TRUE\*(C' and \*(C`IS FALSE\*(C'. \*(C`IS NULL\*(C' 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.

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

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

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.

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 \*(C`$left == $right\*(C'

strcmp

Return true when \*(C`$left eq $right\*(C'

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 \*(C`$left != $right\*(C'

strcmp

Return true when \*(C`$left ne $right\*(C'

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 \*(C`$left < $right\*(C'

strcmp

Return true when \*(C`$left lt $right\*(C'

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 \*(C`$left gt $right\*(C'

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 \*(C`$left <= $right\*(C'

strcmp

Return true when \*(C`$left le $right\*(C'

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 \*(C`$left ge $right\*(C'

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 \*(C`LIKE\*(C' 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 \*(C`a LIKE b\*(C' in not supported.

regexp

Abstract method which must return a regular expression (\*(C`qr//\*(C') from the given string. Must be overridden by derived classes.

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 \*(C`LIKE\*(C' operation.

INHERITANCE

SQL::Statement::Operation::Like ISA SQL::Statement::Operation::Regexp ISA SQL::Statement::Operation ISA SQL::Statement::Term

METHODS

regexp

Returns \*(C`qr/^$right$/s\*(C'

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 \*(C`CLIKE\*(C' operation.

INHERITANCE

SQL::Statement::Operation::Clike ISA SQL::Statement::Operation::Regexp ISA SQL::Statement::Operation ISA SQL::Statement::Term

METHODS

regexp

Returns \*(C`qr/^$right$/si\*(C'

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 \*(C`RLIKE\*(C' operation.

INHERITANCE

SQL::Statement::Operation::RLike ISA SQL::Statement::Operation::Regexp ISA SQL::Statement::Operation ISA SQL::Statement::Term

METHODS

regexp

Returns \*(C`qr/$right$/s\*(C'

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 \s-1GNU\s0 General Public License or the Artistic License, as specified in the Perl \s-1README\s0 file.