Skip to content

[CI crash] Type mismatch during set insertion in CreatingSetsTransform #97474

@robot-clickhouse-ci-2

Description

@robot-clickhouse-ci-2
Stack trace details

The sipHash64(st.trace_full) is 10512148362646127883
The trace is from the master or release branch: True

The query for CIDB to compare the trace with the known one:

WITH
    (
        SELECT groupArrayDistinct(cleanStackTrace(trace_full) AS trace) FROM default.stack_traces
        WHERE sipHash64(trace) IN (10512148362646127883, {ANOTHER_TRACE_HASH}) -- FIXME: replace with the known hash
    ) AS traces,
    1.97 AS alpha,
    stack_frame_weights AS (
        WITH
            (
                SELECT count()
                FROM default.stack_traces
                FINAL
            ) AS total,
            2.0 AS beta,
            3.7 AS gamma
        SELECT
            arrayJoin(cleanStackTrace(trace_full)) AS frame,
            countDistinct(trace_full) AS count,
            log(total / count) AS IDF,
            sigmoid(beta * (IDF - gamma)) AS weight
        FROM default.stack_traces
        FINAL
        GROUP BY frame
    ),
    (SELECT groupArray(weight) AS w, groupArray(frame) AS f FROM stack_frame_weights) AS weights,
    (trace -> arrayMap((_frame, pos) -> (pow(pos, -alpha) * arrayFirst(w, f -> (f = _frame), weights.w, weights.f)), trace, arrayEnumerate(trace))) AS get_trace_weights,
    (arr -> arrayStringConcat(arr, '\n')) AS joinArr

SELECT arraySimilarity(traces[1], traces[2], get_trace_weights(traces[1]) AS weights1, get_trace_weights(traces[2]) AS weights2) AS similarity,
    arrayLevenshteinDistanceWeighted(traces[1], traces[2], weights1, weights2),
    joinArr(traces[1]), joinArr(traces[2]), joinArr(weights1), joinArr(weights2)

The following new stack trace from CI Logs system.crash_log found:

   DB::IColumn::assertTypeEquality(DB::IColumn const&) const
   DB::ColumnTuple::doInsertRangeFrom(DB::IColumn const&, unsigned long, unsigned long)
   DB::Set::appendSetElements(DB::SetKeyColumns&)
   DB::Set::insertFromColumns(std::vector<COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::allocator<COW<DB::IColumn>::immutable_ptr<DB::IColumn>>> const&)
   DB::Set::insertFromBlock(std::vector<DB::ColumnWithTypeAndName, std::allocator<DB::ColumnWithTypeAndName>> const&)
   DB::CreatingSetsTransform::consume(DB::Chunk)
   DB::IAccumulatingTransform::work()
   DB::CreatingSetsTransform::work()
   DB::ExecutionThreadContext::executeTask()
   DB::PipelineExecutor::executeStepImpl(unsigned long, DB::IAcquiredSlot*, std::atomic<bool>*)
   ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::worker()
   ThreadFromGlobalPoolImpl<false, true>::ThreadFromGlobalPoolImpl<void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*)(), ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*>(void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&&)(), ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*&&)::'lambda'()::operator()()
   ThreadPoolImpl<std::thread>::ThreadFromThreadPool::worker()
   void* std::__thread_proxy[$ABI]<std::tuple<std::unique_ptr<std::__thread_struct, std::default_delete<std::__thread_struct>>, void (ThreadPoolImpl<std::thread>::ThreadFromThreadPool::*)(), ThreadPoolImpl<std::thread>::ThreadFromThreadPool*>>(void*)

Possible causes:

  • Incorrect type compatibility between columns and set elements
  • Mismatch in data types when inserting into a set structure
  • Improper handling of column types during tuple insertion
  • Invalid data conversion during block processing in transform

The stack trace appeared in the following checks:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions