/**
  * @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.");
 }
 /**
  * @param QOM\OperandInterface $operand
  */
 private function walkOperand(QOM\OperandInterface $operand)
 {
     if ($operand instanceof QOM\NodeNameInterface) {
         return ZendSearchAdapter::IDX_NODENAME;
     }
     if ($operand instanceof QOM\NodeLocalNameInterface) {
         return ZendSearchAdapter::IDX_NODELOCALNAME;
     }
     if ($operand instanceof QOM\LiteralInterface) {
         return $this->escape($operand->getLiteralValue());
     }
     if ($operand instanceof QOM\PropertyValueInterface) {
         return $this->escape($operand->getPropertyName());
     }
     if ($operand instanceof QOM\LowerCaseInterface) {
         return $this->walkOperand($operand->getOperand());
     }
     if ($operand instanceof QOM\UpperCaseInterface) {
         return $this->walkOperand($operand->getOperand());
     }
     throw new InvalidQueryException("Dynamic operand " . get_class($operand) . " not yet supported.");
 }