public function execute($functionMap, $row)
    {
        $this->replaceColumnOperands($functionMap, $row);

        $functionName = $this->getFunctionName();
        if (!isset($functionMap[$functionName])) {
            throw new InvalidQueryException(sprintf('Unknown function "%s", known functions are "%s"',
                $functionName,
                implode(', ', array_keys($functionMap))
            ));
        }

        $callable = $functionMap[$functionName];
        $args = $this->getArguments();
        array_unshift($args, $row);
        array_unshift($args, $this);
        $value = call_user_func_array($callable, $args);

        return $value;
    }