/** * @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); }
/** * {@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); }