/**
  * @param QOM\OperandInterface $operand
  *
  * @return string
  *
  * @throws InvalidQueryException
  */
 public function walkOperand(QOM\OperandInterface $operand)
 {
     if ($operand instanceof QOM\NodeNameInterface) {
         $selectorName = $operand->getSelectorName();
         $alias = $this->getTableAlias($selectorName);
         return $this->platform->getConcatExpression("{$alias}.namespace", "(CASE {$alias}.namespace WHEN '' THEN '' ELSE ':' END)", "{$alias}.local_name");
     }
     if ($operand instanceof QOM\NodeLocalNameInterface) {
         $selectorName = $operand->getSelectorName();
         $alias = $this->getTableAlias($selectorName);
         return "{$alias}.local_name";
     }
     if ($operand instanceof QOM\LowerCaseInterface) {
         return $this->platform->getLowerExpression($this->walkOperand($operand->getOperand()));
     }
     if ($operand instanceof QOM\UpperCaseInterface) {
         return $this->platform->getUpperExpression($this->walkOperand($operand->getOperand()));
     }
     if ($operand instanceof QOM\LiteralInterface) {
         return $this->conn->quote($this->getLiteralValue($operand));
     }
     if ($operand instanceof QOM\PropertyValueInterface) {
         $alias = $this->getTableAlias($operand->getSelectorName() . '.' . $operand->getPropertyName());
         $property = $operand->getPropertyName();
         if ($property == "jcr:path") {
             return $alias . ".path";
         }
         if ($property == "jcr:uuid") {
             return $alias . ".identifier";
         }
         return $this->sqlXpathExtractValue($alias, $property);
     }
     if ($operand instanceof QOM\LengthInterface) {
         $alias = $this->getTableAlias($operand->getPropertyValue()->getSelectorName());
         $property = $operand->getPropertyValue()->getPropertyName();
         return $this->sqlXpathExtractValueAttribute($alias, $property, 'length');
     }
     throw new InvalidQueryException("Dynamic operand " . get_class($operand) . " not yet supported.");
 }
 /**
  * Returns the SQL to change all characters to uppercase.
  *
  * @param string $value
  *
  * @return string
  */
 public function upper($value)
 {
     return $this->platform->getUpperExpression($value);
 }
Exemple #3
0
 /**
  * {@inheritdoc}
  */
 public function convertToDatabaseValueSQL($sqlExpr, AbstractPlatform $platform)
 {
     self::$calls[__FUNCTION__][] = array('sqlExpr' => $sqlExpr, 'platform' => $platform);
     // changed to upper expression to keep the test compatible with other Databases
     //sprintf('to_tsvector(%s)', $sqlExpr);
     return $platform->getUpperExpression($sqlExpr);
 }