```
select count() from numbers(10) where number in tuple(1, 2, 3, 4, 5) settings max_temporary_columns = 3

Received exception from server (version 20.7.1):
Code: 165. DB::Exception: Received from localhost:9000. DB::Exception: Too many temporary columns: _dummy, 1, 2, 3. Maximum: 3. 
```

Workaround: Avoid function in tuple.
```select count() from numbers(10) where number in (1, 2, 3, 4, 5) settings max_temporary_columns = 3```
bool has_lambda_arguments = false;
    for (size_t arg = 0; arg < node.arguments->children.size(); ++arg)
    {
        auto & child = node.arguments->children[arg];
        const auto * lambda = child->as<ASTFunction>();
        const auto * identifier = child->as<ASTIdentifier>();
        if (lambda && lambda->name == "lambda")
        {
            
            if (lambda->arguments->children.size() != 2)
                throw Exception("lambda requires two arguments", ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH);
            const auto * lambda_args_tuple = lambda->arguments->children.at(0)->as<ASTFunction>();
            if (!lambda_args_tuple || lambda_args_tuple->name != "tuple")
                throw Exception("First argument of lambda must be a tuple", ErrorCodes::TYPE_MISMATCH);
            has_lambda_arguments = true;
            argument_types.emplace_back(std::make_shared<DataTypeFunction>(DataTypes(lambda_args_tuple->arguments->children.size())));
            
            argument_names.emplace_back();
        }
        else if (checkFunctionIsInOrGlobalInOperator(node) && arg == 1 && prepared_set)
        {
            ColumnWithTypeAndName column;
            column.type = std::make_shared<DataTypeSet>();
            
            
            if (!prepared_set->empty())
                column.name = data.getUniqueName("__set");
            else
                column.name = child->getColumnName();