Commit Graph

1 Commits

Author SHA1 Message Date
Azat Khuzhin
308e094d04 Fix arrayJoin() capturing in lambda
Fixes the following LOGICAL_ERROR:

    $ clickhouse-client -q 'select arrayFilter((a) -> ((a, arrayJoin([[]])) IN (Null, [Null])), [])'
    2020.08.16 00:32:01.967102 [ 1744189 ] {b40a5ebd-d710-4f03-bb18-57db67de1181} <Error> : Logical error: 'Lambda captured argument arrayJoin(array(array())) not found in required columns.'.
    clickhouse-server: ../src/Common/Exception.cpp:45: DB::Exception::Exception(const string&, int): Assertion `false' failed.

Since there are multiple input columns for arrayJoin():

    (gdb) p captured_names_
    $6 = std::vector of length 3, capacity 4 = {"arrayJoin(array(array()))", "arrayJoin(array(array()))", "__set"}

While FunctionCaptureOverloadResolver cannot handle non-unique columns.
2020-08-25 21:06:21 +03:00