SQL::Statement::Operation(3p)

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.

  op
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.