public function build(array $parsed)
{
if ($parsed['expr_type'] !== ExpressionType::AGGREGATE_FUNCTION && $parsed['expr_type'] !== ExpressionType::SIMPLE_FUNCTION && $parsed['expr_type'] !== ExpressionType::CUSTOM_FUNCTION) {
return "";
}
if ($parsed['sub_tree'] === false) {
return $parsed['base_expr'] . "()" . $this->buildAlias($parsed);
}
$sql = "";
foreach ($parsed['sub_tree'] as $k => $v) {
$len = strlen($sql);
$sql .= $this->build($v);
$sql .= $this->buildConstant($v);
$sql .= $this->buildSubQuery($v);
$sql .= $this->buildColRef($v);
$sql .= $this->buildReserved($v);
$sql .= $this->buildSelectBracketExpression($v);
$sql .= $this->buildSelectExpression($v);
if ($len == strlen($sql)) {
throw new UnableToCreateSQLException('function subtree', $k, $v, 'expr_type');
}
$sql .= $this->isReserved($v) ? " " : ",";
}
return $parsed['base_expr'] . "(" . substr($sql, 0, -1) . ")" . $this->buildAlias($parsed);
}