Hi, I may have found a bug. 

ClickHouse client version 21.10.1.8013 (official build).

```
CREATE FUNCTION now_debug AS () -> toDateTime('2021-07-01 12:35:34');
```

```
:) select now_debug() as _now_debug, now() as _now;

SELECT
    now_debug() AS _now_debug,
    now() AS _now

Query id: 4f7840e9-4a92-4d16-a33e-a307af1316d2

┌─toDateTime('2021-07-01 12:35:34')─┬────────────────_now─┐
│               2021-07-01 12:35:34 │ 2021-10-10 19:50:44 │
└───────────────────────────────────┴─────────────────────┘

1 rows in set. Elapsed: 0.002 sec.
```

Expected _now_debug, result toDateTime('2021-07-01 12:35:34')

{
        const auto & identifier = identifiers_raw[parameter_index]->as<ASTIdentifier>();
        const auto & function_argument = function_arguments[parameter_index];
        const auto & identifier_name = identifier->name();
        identifier_name_to_function_argument.emplace(identifier_name, function_argument);
    }
    auto function_body_to_update = function_core_expression->children.at(1)->clone();
    std::stack<ASTPtr> ast_nodes_to_update;
    ast_nodes_to_update.push(function_body_to_update);
    while (!ast_nodes_to_update.empty())
    {
        auto ast_node_to_update = ast_nodes_to_update.top();
        ast_nodes_to_update.pop();
        for (auto & child : ast_node_to_update->children)
        {
            auto identifier_name_opt = tryGetIdentifierName(child);
            if (identifier_name_opt)
            {
                auto function_argument_it = identifier_name_to_function_argument.find(*identifier_name_opt);
                assert(function_argument_it != identifier_name_to_function_argument.end());
                child = function_argument_it->second->clone();
                continue;
            }
            ast_nodes_to_update.push(child);
        }
    }
    return function_body_to_update;
}
}