Coverage Report

Created: 2025-07-28 22:10

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/root/doris/be/src/vec/columns/column.h
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
// This file is copied from
18
// https://github.com/ClickHouse/ClickHouse/blob/master/src/Columns/IColumn.h
19
// and modified by Doris
20
21
#pragma once
22
23
#include <cstdint>
24
#include <functional>
25
#include <string>
26
#include <type_traits>
27
#include <utility>
28
#include <vector>
29
30
#include "common/status.h"
31
#include "olap/olap_common.h"
32
#include "runtime/define_primitive_type.h"
33
#include "vec/common/cow.h"
34
#include "vec/common/pod_array_fwd.h"
35
#include "vec/common/string_ref.h"
36
#include "vec/common/typeid_cast.h"
37
#include "vec/core/field.h"
38
#include "vec/core/types.h"
39
40
namespace doris {
41
class SipHash;
42
}
43
44
namespace doris::vectorized {
45
46
class Arena;
47
class ColumnSorter;
48
49
using EqualFlags = std::vector<uint8_t>;
50
using EqualRange = std::pair<int, int>;
51
52
/// Declares interface to store columns in memory.
53
class IColumn : public COW<IColumn> {
54
private:
55
    friend class COW<IColumn>;
56
57
    /// Creates the same column with the same data.
58
    /// This is internal method to use from COW.
59
    /// It performs shallow copy with copy-ctor and not useful from outside.
60
    /// If you want to copy column for modification, look at 'mutate' method.
61
    virtual MutablePtr clone() const = 0;
62
63
public:
64
    // 64bit offsets now only Array type used, so we make it protected
65
    // to avoid use IColumn::Offset64 directly.
66
    // please use ColumnArray::Offset64 instead if we need.
67
    using Offset64 = UInt64;
68
    using Offsets64 = PaddedPODArray<Offset64>;
69
70
    // 32bit offsets for string
71
    using Offset = UInt32;
72
    using Offsets = PaddedPODArray<Offset>;
73
74
    /// Name of a Column. It is used in info messages.
75
    virtual std::string get_name() const = 0;
76
77
    // used to check the column data is valid or not.
78
517k
    virtual void sanity_check() const {
79
        // do nothing by default, but some column may need to check
80
517k
    }
81
82
    /** If column isn't constant, returns nullptr (or itself).
83
      * If column is constant, transforms constant to full column (if column type allows such transform) and return it.
84
      */
85
7.65M
    virtual Ptr convert_to_full_column_if_const() const { return get_ptr(); }
86
87
    /** If in join. the StringColumn size may overflow uint32_t, we need convert to uint64_t to ColumnString64
88
  * The Column: ColumnString, ColumnNullable, ColumnArray, ColumnStruct need impl the code
89
  */
90
258k
    virtual Ptr convert_column_if_overflow() { return get_ptr(); }
91
92
    /// If column isn't ColumnDictionary, return itself.
93
    /// If column is ColumnDictionary, transforms is to predicate column.
94
5.02k
    virtual MutablePtr convert_to_predicate_column_if_dictionary() { return get_ptr(); }
95
96
    /// If column is ColumnDictionary, and is a range comparison predicate, convert dict encoding
97
12.3k
    virtual void convert_dict_codes_if_necessary() {}
98
99
    /// If column is ColumnDictionary, and is a bloom filter predicate, generate_hash_values
100
0
    virtual void initialize_hash_values_for_runtime_filter() {}
101
102
    /// Creates empty column with the same type.
103
444k
    virtual MutablePtr clone_empty() const { return clone_resized(0); }
104
105
    /// Creates column with the same type and specified size.
106
    /// If size is less current size, then data is cut.
107
    /// If size is greater, than default values are appended.
108
0
    virtual MutablePtr clone_resized(size_t s) const {
109
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
110
0
                               "Method clone_resized is not supported for " + get_name());
111
0
        return nullptr;
112
0
    }
113
114
    // shrink the end zeros for ColumnStr(also for who has it nested). so nest column will call it for all nested.
115
    // for non-str col, will reach here(do nothing). only ColumnStr will really shrink itself.
116
144
    virtual void shrink_padding_chars() {}
117
118
    // Only used in ColumnVariant to handle lifecycle of variant. Other columns would do nothing.
119
3
    virtual void finalize() {}
120
121
    // Only used on ColumnDictionary
122
1.40k
    virtual void set_rowset_segment_id(std::pair<RowsetId, uint32_t> rowset_segment_id) {}
123
124
0
    virtual std::pair<RowsetId, uint32_t> get_rowset_segment_id() const { return {}; }
125
126
    /// Returns number of values in column.
127
    virtual size_t size() const = 0;
128
129
    /// There are no values in columns.
130
99.7k
    bool empty() const { return size() == 0; }
131
132
    /// Returns value of n-th element in universal Field representation.
133
    /// Is used in rare cases, since creation of Field instance is expensive usually.
134
    virtual Field operator[](size_t n) const = 0;
135
136
    /// Like the previous one, but avoids extra copying if Field is in a container, for example.
137
    virtual void get(size_t n, Field& res) const = 0;
138
139
    /// If possible, returns pointer to memory chunk which contains n-th element (if it isn't possible, throws an exception)
140
    /// Is used to optimize some computations (in aggregation, for example).
141
    /// this function is used in ColumnString, ColumnFixedString, ColumnVector, not support in ColumnArray|ColumnMap...
142
    /// and should be pair with insert_data
143
9
    virtual StringRef get_data_at(size_t n) const {
144
9
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
145
9
                               "Method get_data_at is not supported for " + get_name());
146
9
    }
147
148
3
    virtual Int64 get_int(size_t /*n*/) const {
149
3
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
150
3
                               "Method get_int is not supported for " + get_name());
151
0
        return 0;
152
3
    }
153
154
5.39k
    virtual bool is_null_at(size_t /*n*/) const { return false; }
155
156
    /** If column is numeric, return value of n-th element, casted to bool.
157
      * For NULL values of Nullable column returns false.
158
      * Otherwise throw an exception.
159
      */
160
3
    virtual bool get_bool(size_t /*n*/) const {
161
3
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
162
3
                               "Method get_bool is not supported for " + get_name());
163
0
        return false;
164
3
    }
165
166
    /// Removes all elements outside of specified range.
167
    /// Is used in LIMIT operation, for example.
168
1.00k
    virtual Ptr cut(size_t start, size_t length) const final {
169
1.00k
        MutablePtr res = clone_empty();
170
1.00k
        res->insert_range_from(*this, start, length);
171
1.00k
        return res;
172
1.00k
    }
173
174
    /**
175
    * erase data from 'start' and length elements from the column.
176
    * @param length The number of elements to remove from the start position of the column
177
    * @throws doris::Exception with NOT_IMPLEMENTED_ERROR if the operation is not supported
178
    *         for this column type
179
    * eg: erase(3, 2) means remove the idx 3 and 4 elements (0-based)
180
    */
181
0
    virtual void erase(size_t start, size_t length) {
182
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
183
0
                               "Method erase is not supported for " + get_name());
184
0
    }
185
186
    /// cut or expand inplace. `this` would be moved, only the return value is avaliable.
187
1.08k
    virtual Ptr shrink(size_t length) const final {
188
        // NOLINTBEGIN(performance-move-const-arg)
189
1.08k
        MutablePtr res = std::move(*this).mutate();
190
1.08k
        res->resize(length);
191
        // NOLINTEND(performance-move-const-arg)
192
1.08k
        return res->get_ptr();
193
1.08k
    }
194
195
    /// Appends new value at the end of column (column's size is increased by 1).
196
    /// Is used to transform raw strings to Blocks (for example, inside input format parsers)
197
    virtual void insert(const Field& x) = 0;
198
199
    /// Appends n-th element from other column with the same type.
200
    /// Is used in merge-sort and merges. It could be implemented in inherited classes more optimally than default implementation.
201
    virtual void insert_from(const IColumn& src, size_t n);
202
203
    /// Appends range of elements from other column with the same type.
204
    /// Could be used to concatenate columns.
205
    virtual void insert_range_from(const IColumn& src, size_t start, size_t length) = 0;
206
207
    /// Appends range of elements from other column with the same type.
208
    /// Do not need throw execption in ColumnString overflow uint32, only
209
    /// use in join
210
    virtual void insert_range_from_ignore_overflow(const IColumn& src, size_t start,
211
257k
                                                   size_t length) {
212
257k
        insert_range_from(src, start, length);
213
257k
    }
214
215
    /// Appends one element from other column with the same type multiple times.
216
0
    virtual void insert_many_from(const IColumn& src, size_t position, size_t length) {
217
0
        for (size_t i = 0; i < length; ++i) {
218
0
            insert_from(src, position);
219
0
        }
220
0
    }
221
222
    // insert the data of target columns into self column according to positions
223
    // positions[i] means index of srcs whitch need to insert_from
224
    // the virtual function overhead of multiple calls to insert_from can be reduced to once
225
    virtual void insert_from_multi_column(const std::vector<const IColumn*>& srcs,
226
                                          const std::vector<size_t>& positions) = 0;
227
228
    /// Appends a batch elements from other column with the same type
229
    /// Also here should make sure indices_end is bigger than indices_begin
230
    /// indices_begin + indices_end represent the row indices of column src
231
    virtual void insert_indices_from(const IColumn& src, const uint32_t* indices_begin,
232
                                     const uint32_t* indices_end) = 0;
233
234
    /// Appends data located in specified memory chunk if it is possible (throws an exception if it cannot be implemented).
235
    /// used in ColumnString, ColumnFixedString, ColumnVector, not support in ColumnArray|ColumnMap...
236
    /// Is used to optimize some computations (in aggregation, for example).
237
    /// Parameter length could be ignored if column values have fixed size.
238
    /// All data will be inserted as single element
239
0
    virtual void insert_data(const char* pos, size_t length) {
240
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
241
0
                               "Method insert_data is not supported for " + get_name());
242
0
    }
243
244
129
    virtual void insert_many_fix_len_data(const char* pos, size_t num) {
245
129
        throw doris::Exception(
246
129
                ErrorCode::NOT_IMPLEMENTED_ERROR,
247
129
                "Method insert_many_fix_len_data is not supported for " + get_name());
248
129
    }
249
250
    // todo(zeno) Use dict_args temp object to cover all arguments
251
    virtual void insert_many_dict_data(const int32_t* data_array, size_t start_index,
252
                                       const StringRef* dict, size_t data_num,
253
129
                                       uint32_t dict_num = 0) {
254
129
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
255
129
                               "Method insert_many_dict_data is not supported for " + get_name());
256
129
    }
257
258
    /// Insert binary data into column from a continuous buffer, the implementation maybe copy all binary data
259
    /// in one single time.
260
    virtual void insert_many_continuous_binary_data(const char* data, const uint32_t* offsets,
261
129
                                                    const size_t num) {
262
129
        throw doris::Exception(
263
129
                ErrorCode::NOT_IMPLEMENTED_ERROR,
264
129
                "Method insert_many_continuous_binary_data is not supported for " + get_name());
265
129
    }
266
267
129
    virtual void insert_many_strings(const StringRef* strings, size_t num) {
268
129
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
269
129
                               "Method insert_many_strings is not supported for " + get_name());
270
129
    }
271
272
    virtual void insert_many_strings_overflow(const StringRef* strings, size_t num,
273
129
                                              size_t max_length) {
274
129
        throw doris::Exception(
275
129
                ErrorCode::NOT_IMPLEMENTED_ERROR,
276
129
                "Method insert_many_strings_overflow is not supported for " + get_name());
277
129
    }
278
279
    // Here `pos` points to the memory data type is the same as the data type of the column.
280
    // This function is used by `insert_keys_into_columns` in AggregationNode.
281
0
    virtual void insert_many_raw_data(const char* pos, size_t num) {
282
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
283
0
                               "Method insert_many_raw_data is not supported for " + get_name());
284
0
    }
285
286
36
    void insert_data_repeatedly(const char* pos, size_t length, size_t data_num) {
287
72
        for (size_t i = 0; i < data_num; ++i) {
288
36
            insert_data(pos, length);
289
36
        }
290
36
    }
291
292
    /// Appends "default value".
293
    /// Is used when there are need to increase column size, but inserting value doesn't make sense.
294
    /// For example, ColumnNullable(Nested) absolutely ignores values of nested column if it is marked as NULL.
295
    virtual void insert_default() = 0;
296
297
    /// Appends "default value" multiple times.
298
1.28k
    virtual void insert_many_defaults(size_t length) {
299
143M
        for (size_t i = 0; i < length; ++i) {
300
143M
            insert_default();
301
143M
        }
302
1.28k
    }
303
304
    /** Removes last n elements.
305
      * Is used to support exception-safety of several operations.
306
      *  For example, sometimes insertion should be reverted if we catch an exception during operation processing.
307
      * If column has less than n elements or n == 0 - undefined behavior.
308
      */
309
    virtual void pop_back(size_t n) = 0;
310
311
    /** Serializes n-th element. Serialized element should be placed continuously inside Arena's memory.
312
      * Serialized value can be deserialized to reconstruct original object. Is used in aggregation.
313
      * The method is similar to get_data_at(), but can work when element's value cannot be mapped to existing continuous memory chunk,
314
      *  For example, to obtain unambiguous representation of Array of strings, strings data should be interleaved with their sizes.
315
      * Parameter begin should be used with Arena::alloc_continue.
316
      */
317
    virtual StringRef serialize_value_into_arena(size_t n, Arena& arena,
318
                                                 char const*& begin) const = 0;
319
320
    /// Deserializes a value that was serialized using IColumn::serialize_value_into_arena method.
321
    /// Returns pointer to the position after the read data.
322
    virtual const char* deserialize_and_insert_from_arena(const char* pos) = 0;
323
324
0
    virtual void serialize_vec(StringRef* keys, size_t num_rows) const {
325
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
326
0
                               "Method serialize_vec is not supported for " + get_name());
327
0
    }
328
329
    // This function deserializes group-by keys into column in the vectorized way.
330
0
    virtual void deserialize_vec(StringRef* keys, const size_t num_rows) {
331
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
332
0
                               "Method deserialize_vec is not supported for " + get_name());
333
0
    }
334
    /// The exact size to serialize the `row`-th row data in this column.
335
0
    virtual size_t serialize_size_at(size_t row) const {
336
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
337
0
                               "Column {} should not be serialized.", get_name());
338
0
    }
339
    /// `serialize_impl` is the implementation to serialize a column into a continuous memory.
340
0
    virtual size_t serialize_impl(char* pos, const size_t row) const {
341
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
342
0
                               "Method serialize_impl is not supported for " + get_name());
343
0
    }
344
    /// `deserialize_impl` will deserialize data which is serialized by `serialize_impl`.
345
0
    virtual size_t deserialize_impl(const char* pos) {
346
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
347
0
                               "Method deserialize_impl is not supported for " + get_name());
348
0
    }
349
350
    /// Return the size of largest row.
351
    /// This is for calculating the memory size for vectorized serialization of aggregation keys.
352
0
    virtual size_t get_max_row_byte_size() const {
353
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
354
0
                               "Method get_max_row_byte_size is not supported for " + get_name());
355
0
        return 0;
356
0
    }
357
358
    /// TODO: SipHash is slower than city or xx hash, rethink we should have a new interface
359
    /// Update state of hash function with value of n-th element.
360
    /// On subsequent calls of this method for sequence of column values of arbitrary types,
361
    ///  passed bytes to hash must identify sequence of values unambiguously.
362
0
    virtual void update_hash_with_value(size_t n, SipHash& hash) const {
363
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
364
0
                               "Method update_hash_with_value is not supported for " + get_name());
365
0
    }
366
367
    /// Update state of hash function with value of n elements to avoid the virtual function call
368
    /// null_data to mark whether need to do hash compute, null_data == nullptr
369
    /// means all element need to do hash function, else only *null_data != 0 need to do hash func
370
    /// do xxHash here, faster than other sip hash
371
    virtual void update_hashes_with_value(uint64_t* __restrict hashes,
372
0
                                          const uint8_t* __restrict null_data = nullptr) const {
373
0
        throw doris::Exception(
374
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
375
0
                "Method update_hashes_with_value is not supported for " + get_name());
376
0
    }
377
378
    // use range for one hash value to avoid virtual function call in loop
379
    virtual void update_xxHash_with_value(size_t start, size_t end, uint64_t& hash,
380
0
                                          const uint8_t* __restrict null_data) const {
381
0
        throw doris::Exception(
382
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
383
0
                "Method update_xxHash_with_value is not supported for " + get_name());
384
0
    }
385
386
    /// Update state of crc32 hash function with value of n elements to avoid the virtual function call
387
    /// null_data to mark whether need to do hash compute, null_data == nullptr
388
    /// means all element need to do hash function, else only *null_data != 0 need to do hash func
389
    virtual void update_crcs_with_value(uint32_t* __restrict hash, PrimitiveType type,
390
                                        uint32_t rows, uint32_t offset = 0,
391
0
                                        const uint8_t* __restrict null_data = nullptr) const {
392
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
393
0
                               "Method update_crcs_with_value is not supported for " + get_name());
394
0
    }
395
396
    // use range for one hash value to avoid virtual function call in loop
397
    virtual void update_crc_with_value(size_t start, size_t end, uint32_t& hash,
398
0
                                       const uint8_t* __restrict null_data) const {
399
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
400
0
                               "Method update_crc_with_value is not supported for " + get_name());
401
0
    }
402
403
    /** Removes elements that don't match the filter.
404
      * Is used in WHERE and HAVING operations.
405
      * If result_size_hint > 0, then makes advance reserve(result_size_hint) for the result column;
406
      *  if 0, then don't makes reserve(),
407
      *  otherwise (i.e. < 0), makes reserve() using size of source column.
408
      */
409
    using Filter = PaddedPODArray<UInt8>;
410
    virtual Ptr filter(const Filter& filt, ssize_t result_size_hint) const = 0;
411
412
    /// This function will modify the original table.
413
    /// Return rows number after filtered.
414
    virtual size_t filter(const Filter& filter) = 0;
415
416
    /**
417
     *  used by lazy materialization to filter column by selected rowids
418
     *  Q: Why use IColumn* as args type instead of MutablePtr or ImmutablePtr ?
419
     *  A: If use MutablePtr/ImmutablePtr as col_ptr's type, which means there could be many 
420
     *  convert(convert MutablePtr to ImmutablePtr or convert ImmutablePtr to MutablePtr)
421
     *  happends in filter_by_selector because of mem-reuse logic or ColumnNullable, I think this is meaningless;
422
     *  So using raw ptr directly here.
423
     *  NOTICE: only column_nullable and predict_column, column_dictionary now support filter_by_selector
424
     *  // nullable -> predict_column
425
     *  // string (dictionary) -> column_dictionary
426
     */
427
0
    virtual Status filter_by_selector(const uint16_t* sel, size_t sel_size, IColumn* col_ptr) {
428
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
429
0
                               "Method filter_by_selector is not supported for {}, only "
430
0
                               "column_nullable, column_dictionary and predict_column support",
431
0
                               get_name());
432
0
    }
433
434
    /// Permutes elements using specified permutation. Is used in sortings.
435
    /// limit - if it isn't 0, puts only first limit elements in the result.
436
    using Permutation = PaddedPODArray<size_t>;
437
    virtual MutablePtr permute(const Permutation& perm, size_t limit) const = 0;
438
439
    /** Compares (*this)[n] and rhs[m]. Column rhs should have the same type.
440
      * Returns negative number, 0, or positive number (*this)[n] is less, equal, greater than rhs[m] respectively.
441
      * Is used in sortings.
442
      *
443
      * If one of element's value is NaN or NULLs, then:
444
      * - if nan_direction_hint == -1, NaN and NULLs are considered as least than everything other;
445
      * - if nan_direction_hint ==  1, NaN and NULLs are considered as greatest than everything other.
446
      * For example, if nan_direction_hint == -1 is used by descending sorting, NaNs will be at the end.
447
      *
448
      * For non Nullable and non floating point types, nan_direction_hint is ignored.
449
      * For array/map/struct types, we compare with nested column element and offsets size
450
      */
451
0
    virtual int compare_at(size_t n, size_t m, const IColumn& rhs, int nan_direction_hint) const {
452
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "compare_at for " + get_name());
453
0
    }
454
455
    /**
456
     * To compare all rows in this column with another row (with row_id = rhs_row_id in column rhs)
457
     * @param nan_direction_hint and direction indicates the ordering.
458
     * @param cmp_res if we already has a comparison result for row i, e.g. cmp_res[i] = 1, we can skip row i
459
     * @param filter this stores comparison results for all rows. filter[i] = 1 means row i is less than row rhs_row_id in rhs
460
     */
461
    virtual void compare_internal(size_t rhs_row_id, const IColumn& rhs, int nan_direction_hint,
462
                                  int direction, std::vector<uint8_t>& cmp_res,
463
                                  uint8_t* __restrict filter) const;
464
465
    /** Returns a permutation that sorts elements of this column,
466
      *  i.e. perm[i]-th element of source column should be i-th element of sorted column.
467
      * reverse - true: descending order, false: ascending order.
468
      * limit - if isn't 0, then only first limit elements of the result column could be sorted.
469
      * nan_direction_hint - see above.
470
      */
471
    virtual void get_permutation(bool reverse, size_t limit, int nan_direction_hint,
472
0
                                 Permutation& res) const {
473
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
474
0
                               "get_permutation for " + get_name());
475
0
    }
476
477
    /** Copies each element according offsets parameter.
478
      * (i-th element should be copied offsets[i] - offsets[i - 1] times.)
479
      * It is necessary in ARRAY JOIN operation.
480
      */
481
    virtual Ptr replicate(const Offsets& offsets) const = 0;
482
483
    /** Split column to smaller columns. Each value goes to column index, selected by corresponding element of 'selector'.
484
      * Selector must contain values from 0 to num_columns - 1.
485
      * For default implementation, see column_impl.h
486
      */
487
    using ColumnIndex = UInt64;
488
    using Selector = PaddedPODArray<ColumnIndex>;
489
490
    // The append_data_by_selector function requires the column to implement the insert_from function.
491
    // In fact, this function is just calling insert_from but without the overhead of a virtual function.
492
493
    virtual void append_data_by_selector(MutablePtr& res, const Selector& selector) const = 0;
494
495
    // Here, begin and end represent the range of the Selector.
496
    virtual void append_data_by_selector(MutablePtr& res, const Selector& selector, size_t begin,
497
                                         size_t end) const = 0;
498
499
    /// Insert data from several other columns according to source mask (used in vertical merge).
500
    /// For now it is a helper to de-virtualize calls to insert*() functions inside gather loop
501
    /// (descendants should call gatherer_stream.gather(*this) to implement this function.)
502
    /// TODO: interface decoupled from ColumnGathererStream that allows non-generic specializations.
503
    //    virtual void gather(ColumnGathererStream & gatherer_stream) = 0;
504
505
    /// Reserves memory for specified amount of elements. If reservation isn't possible, does nothing.
506
    /// It affects performance only (not correctness).
507
6
    virtual void reserve(size_t /*n*/) {}
508
509
    /// Resize memory for specified amount of elements. If reservation isn't possible, does nothing.
510
    /// It affects performance only (not correctness).
511
    /// Note. resize means not only change column self but also sub-columns if have.
512
0
    virtual void resize(size_t /*n*/) {}
513
514
    /// Size of column data in memory (may be approximate) - for profiling. Zero, if could not be determined.
515
    virtual size_t byte_size() const = 0;
516
517
    /**
518
    * @brief Checks whether the current column has enough capacity to accommodate the given source column.
519
    * 
520
    * This pure virtual function should be implemented by derived classes to determine whether the 
521
    * current column has enough reserved memory to hold the data of the specified `src` column.
522
    * 
523
    * @param src The source column whose data needs to be checked for fitting into the current column.
524
    * @return true if the current column has enough capacity to hold the `src` data, false otherwise.
525
    */
526
    virtual bool has_enough_capacity(const IColumn& src) const = 0;
527
528
    /// Size of memory, allocated for column.
529
    /// This is greater or equals to byte_size due to memory reservation in containers.
530
    /// Zero, if could not be determined.
531
    virtual size_t allocated_bytes() const = 0;
532
533
    /// If the column contains subcolumns (such as Array, Nullable, etc), do callback on them.
534
    /// Shallow: doesn't do recursive calls; don't do call for itself.
535
    using ColumnCallback = std::function<void(WrappedPtr&)>;
536
    using ImutableColumnCallback = std::function<void(const IColumn&)>;
537
2.02M
    virtual void for_each_subcolumn(ColumnCallback) {}
538
539
    /// Columns have equal structure.
540
    /// If true - you can use "compare_at", "insert_from", etc. methods.
541
0
    virtual bool structure_equals(const IColumn&) const {
542
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
543
0
                               "Method structure_equals is not supported for " + get_name());
544
0
        return false;
545
0
    }
546
547
2.66M
    MutablePtr mutate() const&& {
548
2.66M
        MutablePtr res = shallow_mutate();
549
2.66M
        res->for_each_subcolumn(
550
2.66M
                [](WrappedPtr& subcolumn) { subcolumn = std::move(*subcolumn).mutate(); });
551
2.66M
        return res;
552
2.66M
    }
553
554
0
    static MutablePtr mutate(Ptr ptr) {
555
0
        MutablePtr res = ptr->shallow_mutate(); /// Now use_count is 2.
556
0
        ptr.reset();                            /// Reset use_count to 1.
557
0
        res->for_each_subcolumn(
558
0
                [](WrappedPtr& subcolumn) { subcolumn = std::move(*subcolumn).mutate(); });
559
0
        return res;
560
0
    }
561
562
    /** Some columns can contain another columns inside.
563
      * So, we have a tree of columns. But not all combinations are possible.
564
      * There are the following rules:
565
      *
566
      * ColumnConst may be only at top. It cannot be inside any column.
567
      * ColumnNullable can contain only simple columns.
568
      */
569
570
    /// Various properties on behaviour of column type.
571
572
    /// It's true for ColumnNullable only.
573
4.33M
    virtual bool is_nullable() const { return false; }
574
    /// It's true for ColumnNullable, can be true or false for ColumnConst, etc.
575
0
    virtual bool is_concrete_nullable() const { return false; }
576
577
    // true if column has null element
578
9
    virtual bool has_null() const { return false; }
579
580
    // true if column has null element [0,size)
581
4.97k
    virtual bool has_null(size_t size) const { return false; }
582
583
1.81k
    virtual bool is_exclusive() const { return use_count() == 1; }
584
585
    /// Clear data of column, just like vector clear
586
    virtual void clear() = 0;
587
588
    /** Memory layout properties.
589
      *
590
      * Each value of a column can be placed in memory contiguously or not.
591
      *
592
      * Example: simple columns like UInt64 or FixedString store their values contiguously in single memory buffer.
593
      *
594
      * Example: Tuple store values of each component in separate subcolumn, so the values of Tuples with at least two components are not contiguous.
595
      * Another example is Nullable. Each value have null flag, that is stored separately, so the value is not contiguous in memory.
596
      *
597
      * There are some important cases, when values are not stored contiguously, but for each value, you can get contiguous memory segment,
598
      *  that will unambiguously identify the value. In this case, methods get_data_at and insert_data are implemented.
599
      * Example: String column: bytes of strings are stored concatenated in one memory buffer
600
      *  and offsets to that buffer are stored in another buffer. The same is for Array of fixed-size contiguous elements.
601
      *
602
      * To avoid confusion between these cases, we don't have isContiguous method.
603
      */
604
605
3
    virtual StringRef get_raw_data() const {
606
3
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
607
3
                               "Column {} is not a contiguous block of memory", get_name());
608
0
        return StringRef {};
609
3
    }
610
611
    /// Returns ratio of values in column, that are equal to default value of column.
612
    /// Checks only @sample_ratio ratio of rows.
613
0
    virtual double get_ratio_of_default_rows(double sample_ratio = 1.0) const { return 0.0; }
614
615
    // Column is ColumnString/ColumnArray/ColumnMap or other variable length column at every row
616
48
    virtual bool is_variable_length() const { return false; }
617
618
7.46k
    virtual bool is_column_string() const { return false; }
619
620
5.80k
    virtual bool is_column_string64() const { return false; }
621
622
13.3k
    virtual bool is_column_dictionary() const { return false; }
623
624
    /// If the only value column can contain is NULL.
625
65.7k
    virtual bool only_null() const { return false; }
626
627
    /**
628
     * ColumnSorter is used to sort each columns in a Block. In this sorting pattern, sorting a
629
     * column will produce a list of EqualRange which has the same elements respectively. And for
630
     * next column in this block, we only need to sort rows in those `range`.
631
     *
632
     * Besides, we do not materialize sorted data eagerly. Instead, the intermediate sorting results
633
     * are represendted by permutation and data will be materialized after all of columns are sorted.
634
     *
635
     * @sorter: ColumnSorter is used to do sorting.
636
     * @flags : indicates if current item equals to the previous one.
637
     * @perms : permutation after sorting
638
     * @range : EqualRange which has the same elements respectively.
639
     * @last_column : indicates if this column is the last in this block.
640
     */
641
    virtual void sort_column(const ColumnSorter* sorter, EqualFlags& flags,
642
                             IColumn::Permutation& perms, EqualRange& range,
643
                             bool last_column) const;
644
645
14.2M
    virtual ~IColumn() = default;
646
14.2M
    IColumn() = default;
647
1.98k
    IColumn(const IColumn&) = default;
648
649
    /** Print column name, size, and recursively print all subcolumns.
650
      */
651
    String dump_structure() const;
652
653
    // only used in agg value replace for column which is not variable length, eg.BlockReader::_copy_value_data
654
    // usage: self_column.replace_column_data(other_column, other_column's row index, self_column's row index)
655
    virtual void replace_column_data(const IColumn&, size_t row, size_t self_row = 0) = 0;
656
    // replace data to default value if null, used to avoid null data output decimal check failure
657
    // usage: nested_column.replace_column_null_data(nested_null_map.data())
658
    // only wrok on column_vector and column column decimal, there will be no behavior when other columns type call this method
659
717
    virtual void replace_column_null_data(const uint8_t* __restrict null_map) {}
660
661
protected:
662
    template <typename Derived>
663
1.28k
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
664
1.28k
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
665
1.28k
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_14ColumnNullableEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_11ColumnConstEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnNothingEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_9ColumnStrIjEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
663
3
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
664
3
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
665
3
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_23ColumnFixedLengthObjectEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_11ColumnArrayEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnVariantEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
663
3
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
664
3
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
665
3
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_9ColumnStrImEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
663
1.28k
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
664
1.28k
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
665
1.28k
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDictI32EEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE15EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE23EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE5EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE11EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE12EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnStructEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_9ColumnMapEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE20EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE25EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE26EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE2EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE36EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE37EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE3EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE4EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE6EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE7EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE8EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE9EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE28EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE29EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE30EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE35EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE21EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
666
    template <typename Derived>
667
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector, size_t begin,
668
1.60k
                                      size_t end) const {
669
1.60k
        size_t num_rows = size();
670
671
1.60k
        if (num_rows < selector.size()) {
672
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
673
0
                                   "Size of selector: {} is larger than size of column: {}",
674
0
                                   selector.size(), num_rows);
675
0
        }
676
1.60k
        DCHECK_GE(end, begin);
677
1.60k
        DCHECK_LE(end, selector.size());
678
        // here wants insert some value from this column, and the nums is (end - begin)
679
        // and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
680
        // so can't call res->reserve(num_rows), it's will be too mush waste memory
681
1.60k
        res->reserve(res->size() + (end - begin));
682
683
4.17k
        for (size_t i = begin; i < end; ++i) {
684
2.56k
            static_cast<Derived&>(*res).insert_from(*this, selector[i]);
685
2.56k
        }
686
1.60k
    }
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Line
Count
Source
668
3
                                      size_t end) const {
669
3
        size_t num_rows = size();
670
671
3
        if (num_rows < selector.size()) {
672
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
673
0
                                   "Size of selector: {} is larger than size of column: {}",
674
0
                                   selector.size(), num_rows);
675
0
        }
676
3
        DCHECK_GE(end, begin);
677
3
        DCHECK_LE(end, selector.size());
678
        // here wants insert some value from this column, and the nums is (end - begin)
679
        // and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
680
        // so can't call res->reserve(num_rows), it's will be too mush waste memory
681
3
        res->reserve(res->size() + (end - begin));
682
683
15
        for (size_t i = begin; i < end; ++i) {
684
12
            static_cast<Derived&>(*res).insert_from(*this, selector[i]);
685
12
        }
686
3
    }
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Line
Count
Source
668
3
                                      size_t end) const {
669
3
        size_t num_rows = size();
670
671
3
        if (num_rows < selector.size()) {
672
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
673
0
                                   "Size of selector: {} is larger than size of column: {}",
674
0
                                   selector.size(), num_rows);
675
0
        }
676
3
        DCHECK_GE(end, begin);
677
3
        DCHECK_LE(end, selector.size());
678
        // here wants insert some value from this column, and the nums is (end - begin)
679
        // and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
680
        // so can't call res->reserve(num_rows), it's will be too mush waste memory
681
3
        res->reserve(res->size() + (end - begin));
682
683
15
        for (size_t i = begin; i < end; ++i) {
684
12
            static_cast<Derived&>(*res).insert_from(*this, selector[i]);
685
12
        }
686
3
    }
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Line
Count
Source
668
153
                                      size_t end) const {
669
153
        size_t num_rows = size();
670
671
153
        if (num_rows < selector.size()) {
672
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
673
0
                                   "Size of selector: {} is larger than size of column: {}",
674
0
                                   selector.size(), num_rows);
675
0
        }
676
153
        DCHECK_GE(end, begin);
677
153
        DCHECK_LE(end, selector.size());
678
        // here wants insert some value from this column, and the nums is (end - begin)
679
        // and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
680
        // so can't call res->reserve(num_rows), it's will be too mush waste memory
681
153
        res->reserve(res->size() + (end - begin));
682
683
726
        for (size_t i = begin; i < end; ++i) {
684
573
            static_cast<Derived&>(*res).insert_from(*this, selector[i]);
685
573
        }
686
153
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_14ColumnNullableEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_11ColumnConstEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnNothingEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_9ColumnStrIjEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Line
Count
Source
668
3
                                      size_t end) const {
669
3
        size_t num_rows = size();
670
671
3
        if (num_rows < selector.size()) {
672
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
673
0
                                   "Size of selector: {} is larger than size of column: {}",
674
0
                                   selector.size(), num_rows);
675
0
        }
676
3
        DCHECK_GE(end, begin);
677
3
        DCHECK_LE(end, selector.size());
678
        // here wants insert some value from this column, and the nums is (end - begin)
679
        // and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
680
        // so can't call res->reserve(num_rows), it's will be too mush waste memory
681
3
        res->reserve(res->size() + (end - begin));
682
683
9
        for (size_t i = begin; i < end; ++i) {
684
6
            static_cast<Derived&>(*res).insert_from(*this, selector[i]);
685
6
        }
686
3
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_23ColumnFixedLengthObjectEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_11ColumnArrayEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Line
Count
Source
668
129
                                      size_t end) const {
669
129
        size_t num_rows = size();
670
671
129
        if (num_rows < selector.size()) {
672
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
673
0
                                   "Size of selector: {} is larger than size of column: {}",
674
0
                                   selector.size(), num_rows);
675
0
        }
676
129
        DCHECK_GE(end, begin);
677
129
        DCHECK_LE(end, selector.size());
678
        // here wants insert some value from this column, and the nums is (end - begin)
679
        // and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
680
        // so can't call res->reserve(num_rows), it's will be too mush waste memory
681
129
        res->reserve(res->size() + (end - begin));
682
683
645
        for (size_t i = begin; i < end; ++i) {
684
516
            static_cast<Derived&>(*res).insert_from(*this, selector[i]);
685
516
        }
686
129
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnVariantEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Line
Count
Source
668
3
                                      size_t end) const {
669
3
        size_t num_rows = size();
670
671
3
        if (num_rows < selector.size()) {
672
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
673
0
                                   "Size of selector: {} is larger than size of column: {}",
674
0
                                   selector.size(), num_rows);
675
0
        }
676
3
        DCHECK_GE(end, begin);
677
3
        DCHECK_LE(end, selector.size());
678
        // here wants insert some value from this column, and the nums is (end - begin)
679
        // and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
680
        // so can't call res->reserve(num_rows), it's will be too mush waste memory
681
3
        res->reserve(res->size() + (end - begin));
682
683
9
        for (size_t i = begin; i < end; ++i) {
684
6
            static_cast<Derived&>(*res).insert_from(*this, selector[i]);
685
6
        }
686
3
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_9ColumnStrImEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
_ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Line
Count
Source
668
1.31k
                                      size_t end) const {
669
1.31k
        size_t num_rows = size();
670
671
1.31k
        if (num_rows < selector.size()) {
672
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
673
0
                                   "Size of selector: {} is larger than size of column: {}",
674
0
                                   selector.size(), num_rows);
675
0
        }
676
1.31k
        DCHECK_GE(end, begin);
677
1.31k
        DCHECK_LE(end, selector.size());
678
        // here wants insert some value from this column, and the nums is (end - begin)
679
        // and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
680
        // so can't call res->reserve(num_rows), it's will be too mush waste memory
681
1.31k
        res->reserve(res->size() + (end - begin));
682
683
2.75k
        for (size_t i = begin; i < end; ++i) {
684
1.44k
            static_cast<Derived&>(*res).insert_from(*this, selector[i]);
685
1.44k
        }
686
1.31k
    }
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_13ColumnDictI32EEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE15EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE23EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE5EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE11EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE12EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnStructEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_9ColumnMapEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE20EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE25EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE26EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE2EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE36EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE37EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE3EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE4EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE6EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE7EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE8EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE9EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE28EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE29EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE30EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE35EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris10vectorized7IColumn28append_data_by_selector_implINS0_12ColumnVectorILNS_13PrimitiveTypeE21EEEEEvRNS_3COWIS1_E11mutable_ptrIS1_EERKNS0_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEmm
687
    template <typename Derived>
688
    void insert_from_multi_column_impl(const std::vector<const IColumn*>& srcs,
689
237
                                       const std::vector<size_t>& positions) {
690
237
        reserve(size() + srcs.size());
691
1.49k
        for (size_t i = 0; i < srcs.size(); ++i) {
692
1.25k
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
693
1.25k
        }
694
237
    }
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
_ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_14ColumnNullableEEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Line
Count
Source
689
195
                                       const std::vector<size_t>& positions) {
690
195
        reserve(size() + srcs.size());
691
804
        for (size_t i = 0; i < srcs.size(); ++i) {
692
609
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
693
609
        }
694
195
    }
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_11ColumnConstEEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_13ColumnNothingEEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_9ColumnStrIjEEEEvRKSt6vectorIPKS1_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_23ColumnFixedLengthObjectEEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_11ColumnArrayEEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_13ColumnVariantEEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
_ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Line
Count
Source
689
21
                                       const std::vector<size_t>& positions) {
690
21
        reserve(size() + srcs.size());
691
345
        for (size_t i = 0; i < srcs.size(); ++i) {
692
324
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
693
324
        }
694
21
    }
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_9ColumnStrImEEEEvRKSt6vectorIPKS1_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
_ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Line
Count
Source
689
21
                                       const std::vector<size_t>& positions) {
690
21
        reserve(size() + srcs.size());
691
345
        for (size_t i = 0; i < srcs.size(); ++i) {
692
324
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
693
324
        }
694
21
    }
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_13ColumnDictI32EEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE15EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE23EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE5EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE11EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE12EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnStructEEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_9ColumnMapEEEvRKSt6vectorIPKS1_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE20EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE25EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE26EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE2EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE36EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE37EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE3EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE4EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE6EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE7EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE8EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE9EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE28EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE29EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE30EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE35EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
Unexecuted instantiation: _ZN5doris10vectorized7IColumn29insert_from_multi_column_implINS0_12ColumnVectorILNS_13PrimitiveTypeE21EEEEEvRKSt6vectorIPKS1_SaIS8_EERKS6_ImSaImEE
695
};
696
697
using ColumnPtr = IColumn::Ptr;
698
using MutableColumnPtr = IColumn::MutablePtr;
699
using Columns = std::vector<ColumnPtr>;
700
using MutableColumns = std::vector<MutableColumnPtr>;
701
using ColumnPtrs = std::vector<ColumnPtr>;
702
using ColumnRawPtrs = std::vector<const IColumn*>;
703
704
template <typename... Args>
705
struct IsMutableColumns;
706
707
template <typename Arg, typename... Args>
708
struct IsMutableColumns<Arg, Args...> {
709
    static const bool value =
710
            std::is_assignable<MutableColumnPtr&&, Arg>::value && IsMutableColumns<Args...>::value;
711
};
712
713
template <>
714
struct IsMutableColumns<> {
715
    static const bool value = true;
716
};
717
718
// prefer assert_cast than check_and_get
719
template <typename Type>
720
2.36M
const Type* check_and_get_column(const IColumn& column) {
721
2.36M
    return typeid_cast<const Type*>(&column);
722
2.36M
}
_ZN5doris10vectorized20check_and_get_columnINS0_11ColumnArrayEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
183
const Type* check_and_get_column(const IColumn& column) {
721
183
    return typeid_cast<const Type*>(&column);
722
183
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnVariantEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
9
const Type* check_and_get_column(const IColumn& column) {
721
9
    return typeid_cast<const Type*>(&column);
722
9
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnNothingEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
162
const Type* check_and_get_column(const IColumn& column) {
721
162
    return typeid_cast<const Type*>(&column);
722
162
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEPKT_RKNS0_7IColumnE
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
11.5k
const Type* check_and_get_column(const IColumn& column) {
721
11.5k
    return typeid_cast<const Type*>(&column);
722
11.5k
}
_ZN5doris10vectorized20check_and_get_columnINS0_14ColumnNullableEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
2.19M
const Type* check_and_get_column(const IColumn& column) {
721
2.19M
    return typeid_cast<const Type*>(&column);
722
2.19M
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE5EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE5EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE11EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE11EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE12EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE12EEEEEPKT_RKNS0_7IColumnE
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
79.0k
const Type* check_and_get_column(const IColumn& column) {
721
79.0k
    return typeid_cast<const Type*>(&column);
722
79.0k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
966
const Type* check_and_get_column(const IColumn& column) {
721
966
    return typeid_cast<const Type*>(&column);
722
966
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
783
const Type* check_and_get_column(const IColumn& column) {
721
783
    return typeid_cast<const Type*>(&column);
722
783
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
663
const Type* check_and_get_column(const IColumn& column) {
721
663
    return typeid_cast<const Type*>(&column);
722
663
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
297
const Type* check_and_get_column(const IColumn& column) {
721
297
    return typeid_cast<const Type*>(&column);
722
297
}
_ZN5doris10vectorized20check_and_get_columnINS0_23ColumnFixedLengthObjectEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
6
const Type* check_and_get_column(const IColumn& column) {
721
6
    return typeid_cast<const Type*>(&column);
722
6
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
1.04k
const Type* check_and_get_column(const IColumn& column) {
721
1.04k
    return typeid_cast<const Type*>(&column);
722
1.04k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
1.63k
const Type* check_and_get_column(const IColumn& column) {
721
1.63k
    return typeid_cast<const Type*>(&column);
722
1.63k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
639
const Type* check_and_get_column(const IColumn& column) {
721
639
    return typeid_cast<const Type*>(&column);
722
639
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
7.63k
const Type* check_and_get_column(const IColumn& column) {
721
7.63k
    return typeid_cast<const Type*>(&column);
722
7.63k
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
69
const Type* check_and_get_column(const IColumn& column) {
721
69
    return typeid_cast<const Type*>(&column);
722
69
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
1.06k
const Type* check_and_get_column(const IColumn& column) {
721
1.06k
    return typeid_cast<const Type*>(&column);
722
1.06k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
1.61k
const Type* check_and_get_column(const IColumn& column) {
721
1.61k
    return typeid_cast<const Type*>(&column);
722
1.61k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
603
const Type* check_and_get_column(const IColumn& column) {
721
603
    return typeid_cast<const Type*>(&column);
722
603
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
306
const Type* check_and_get_column(const IColumn& column) {
721
306
    return typeid_cast<const Type*>(&column);
722
306
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
354
const Type* check_and_get_column(const IColumn& column) {
721
354
    return typeid_cast<const Type*>(&column);
722
354
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
255
const Type* check_and_get_column(const IColumn& column) {
721
255
    return typeid_cast<const Type*>(&column);
722
255
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
9
const Type* check_and_get_column(const IColumn& column) {
721
9
    return typeid_cast<const Type*>(&column);
722
9
}
_ZN5doris10vectorized20check_and_get_columnIKNS0_14ColumnNullableEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
4.05k
const Type* check_and_get_column(const IColumn& column) {
721
4.05k
    return typeid_cast<const Type*>(&column);
722
4.05k
}
_ZN5doris10vectorized20check_and_get_columnINS0_11ColumnConstEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
53.4k
const Type* check_and_get_column(const IColumn& column) {
721
53.4k
    return typeid_cast<const Type*>(&column);
722
53.4k
}
_ZN5doris10vectorized20check_and_get_columnINS0_9ColumnStrIjEEEEPKT_RKNS0_7IColumnE
Line
Count
Source
720
7.09k
const Type* check_and_get_column(const IColumn& column) {
721
7.09k
    return typeid_cast<const Type*>(&column);
722
7.09k
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_11ColumnConstEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE3EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE3EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE4EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE4EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE6EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE6EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE7EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE7EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE8EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE8EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE9EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE9EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE20EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE20EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE28EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE28EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE29EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE29EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE30EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE30EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE35EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE35EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDictI32EEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE15EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE15EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE23EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE23EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE25EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE25EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE26EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE26EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE2EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE2EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE36EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE36EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_19PredicateColumnTypeILNS_13PrimitiveTypeE37EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE37EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_9ColumnMapEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_12ColumnStructEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE21EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEPKT_RKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEPKT_RKNS0_7IColumnE
723
724
template <typename Type>
725
826M
const Type* check_and_get_column(const IColumn* column) {
726
826M
    return typeid_cast<const Type*>(column);
727
826M
}
_ZN5doris10vectorized20check_and_get_columnINS0_14ColumnNullableEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
298k
const Type* check_and_get_column(const IColumn* column) {
726
298k
    return typeid_cast<const Type*>(column);
727
298k
}
_ZN5doris10vectorized20check_and_get_columnINS0_11ColumnConstEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
824M
const Type* check_and_get_column(const IColumn* column) {
726
824M
    return typeid_cast<const Type*>(column);
727
824M
}
_ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE5EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
12.2k
const Type* check_and_get_column(const IColumn* column) {
726
12.2k
    return typeid_cast<const Type*>(column);
727
12.2k
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE11EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE12EEEEEPKT_PKNS0_7IColumnE
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
3.15k
const Type* check_and_get_column(const IColumn* column) {
726
3.15k
    return typeid_cast<const Type*>(column);
727
3.15k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
3.25k
const Type* check_and_get_column(const IColumn* column) {
726
3.25k
    return typeid_cast<const Type*>(column);
727
3.25k
}
_ZN5doris10vectorized20check_and_get_columnINS0_9ColumnStrIjEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
1.08M
const Type* check_and_get_column(const IColumn* column) {
726
1.08M
    return typeid_cast<const Type*>(column);
727
1.08M
}
_ZN5doris10vectorized20check_and_get_columnINS0_9ColumnStrImEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
129
const Type* check_and_get_column(const IColumn* column) {
726
129
    return typeid_cast<const Type*>(column);
727
129
}
_ZN5doris10vectorized20check_and_get_columnINS0_11ColumnArrayEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
6.23k
const Type* check_and_get_column(const IColumn* column) {
726
6.23k
    return typeid_cast<const Type*>(column);
727
6.23k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
6
const Type* check_and_get_column(const IColumn* column) {
726
6
    return typeid_cast<const Type*>(column);
727
6
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
2.75k
const Type* check_and_get_column(const IColumn* column) {
726
2.75k
    return typeid_cast<const Type*>(column);
727
2.75k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
2.79k
const Type* check_and_get_column(const IColumn* column) {
726
2.79k
    return typeid_cast<const Type*>(column);
727
2.79k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
3.47k
const Type* check_and_get_column(const IColumn* column) {
726
3.47k
    return typeid_cast<const Type*>(column);
727
3.47k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
5.23k
const Type* check_and_get_column(const IColumn* column) {
726
5.23k
    return typeid_cast<const Type*>(column);
727
5.23k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
5.62k
const Type* check_and_get_column(const IColumn* column) {
726
5.62k
    return typeid_cast<const Type*>(column);
727
5.62k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
384
const Type* check_and_get_column(const IColumn* column) {
726
384
    return typeid_cast<const Type*>(column);
727
384
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
22.6k
const Type* check_and_get_column(const IColumn* column) {
726
22.6k
    return typeid_cast<const Type*>(column);
727
22.6k
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
37.7k
const Type* check_and_get_column(const IColumn* column) {
726
37.7k
    return typeid_cast<const Type*>(column);
727
37.7k
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
48
const Type* check_and_get_column(const IColumn* column) {
726
48
    return typeid_cast<const Type*>(column);
727
48
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
38.3k
const Type* check_and_get_column(const IColumn* column) {
726
38.3k
    return typeid_cast<const Type*>(column);
727
38.3k
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
40.2k
const Type* check_and_get_column(const IColumn* column) {
726
40.2k
    return typeid_cast<const Type*>(column);
727
40.2k
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE3EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE4EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE6EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE7EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE8EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE9EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE20EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE28EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE29EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE30EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE35EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_13ColumnDictI32EEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE15EEEEEPKT_PKNS0_7IColumnE
_ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE23EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
384
const Type* check_and_get_column(const IColumn* column) {
726
384
    return typeid_cast<const Type*>(column);
727
384
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE25EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE26EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE2EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE36EEEEEPKT_PKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_19PredicateColumnTypeILNS_13PrimitiveTypeE37EEEEEPKT_PKNS0_7IColumnE
_ZN5doris10vectorized20check_and_get_columnIKNS0_13ColumnNothingEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
163k
const Type* check_and_get_column(const IColumn* column) {
726
163k
    return typeid_cast<const Type*>(column);
727
163k
}
_ZN5doris10vectorized20check_and_get_columnINS0_13ColumnNothingEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
178k
const Type* check_and_get_column(const IColumn* column) {
726
178k
    return typeid_cast<const Type*>(column);
727
178k
}
_ZN5doris10vectorized20check_and_get_columnINS0_9ColumnMapEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
24
const Type* check_and_get_column(const IColumn* column) {
726
24
    return typeid_cast<const Type*>(column);
727
24
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
111
const Type* check_and_get_column(const IColumn* column) {
726
111
    return typeid_cast<const Type*>(column);
727
111
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
213
const Type* check_and_get_column(const IColumn* column) {
726
213
    return typeid_cast<const Type*>(column);
727
213
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
1.08k
const Type* check_and_get_column(const IColumn* column) {
726
1.08k
    return typeid_cast<const Type*>(column);
727
1.08k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
140k
const Type* check_and_get_column(const IColumn* column) {
726
140k
    return typeid_cast<const Type*>(column);
727
140k
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
5.80k
const Type* check_and_get_column(const IColumn* column) {
726
5.80k
    return typeid_cast<const Type*>(column);
727
5.80k
}
_ZN5doris10vectorized20check_and_get_columnIKNS0_11ColumnArrayEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
210
const Type* check_and_get_column(const IColumn* column) {
726
210
    return typeid_cast<const Type*>(column);
727
210
}
_ZN5doris10vectorized20check_and_get_columnIKNS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
12
const Type* check_and_get_column(const IColumn* column) {
726
12
    return typeid_cast<const Type*>(column);
727
12
}
_ZN5doris10vectorized20check_and_get_columnIKNS0_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
6
const Type* check_and_get_column(const IColumn* column) {
726
6
    return typeid_cast<const Type*>(column);
727
6
}
_ZN5doris10vectorized20check_and_get_columnIKNS0_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
6
const Type* check_and_get_column(const IColumn* column) {
726
6
    return typeid_cast<const Type*>(column);
727
6
}
_ZN5doris10vectorized20check_and_get_columnIKNS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
6
const Type* check_and_get_column(const IColumn* column) {
726
6
    return typeid_cast<const Type*>(column);
727
6
}
_ZN5doris10vectorized20check_and_get_columnIKNS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
6
const Type* check_and_get_column(const IColumn* column) {
726
6
    return typeid_cast<const Type*>(column);
727
6
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEPKT_PKNS0_7IColumnE
_ZN5doris10vectorized20check_and_get_columnIKNS0_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
6
const Type* check_and_get_column(const IColumn* column) {
726
6
    return typeid_cast<const Type*>(column);
727
6
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnIKNS0_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEPKT_PKNS0_7IColumnE
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnStructEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
3
const Type* check_and_get_column(const IColumn* column) {
726
3
    return typeid_cast<const Type*>(column);
727
3
}
_ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
18
const Type* check_and_get_column(const IColumn* column) {
726
18
    return typeid_cast<const Type*>(column);
727
18
}
_ZN5doris10vectorized20check_and_get_columnIKNS0_14ColumnNullableEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
36
const Type* check_and_get_column(const IColumn* column) {
726
36
    return typeid_cast<const Type*>(column);
727
36
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE21EEEEEPKT_PKNS0_7IColumnE
_ZN5doris10vectorized20check_and_get_columnINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
24
const Type* check_and_get_column(const IColumn* column) {
726
24
    return typeid_cast<const Type*>(column);
727
24
}
_ZN5doris10vectorized20check_and_get_columnINS0_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEPKT_PKNS0_7IColumnE
Line
Count
Source
725
6
const Type* check_and_get_column(const IColumn* column) {
726
6
    return typeid_cast<const Type*>(column);
727
6
}
Unexecuted instantiation: _ZN5doris10vectorized20check_and_get_columnINS0_13ColumnVariantEEEPKT_PKNS0_7IColumnE
728
729
template <typename Type>
730
824M
bool is_column(const IColumn& column) {
731
824M
    return check_and_get_column<Type>(&column);
732
824M
}
_ZN5doris10vectorized9is_columnINS0_9ColumnStrIjEEEEbRKNS0_7IColumnE
Line
Count
Source
730
387
bool is_column(const IColumn& column) {
731
387
    return check_and_get_column<Type>(&column);
732
387
}
_ZN5doris10vectorized9is_columnINS0_11ColumnConstEEEbRKNS0_7IColumnE
Line
Count
Source
730
824M
bool is_column(const IColumn& column) {
731
824M
    return check_and_get_column<Type>(&column);
732
824M
}
_ZN5doris10vectorized9is_columnINS0_9ColumnStrImEEEEbRKNS0_7IColumnE
Line
Count
Source
730
129
bool is_column(const IColumn& column) {
731
129
    return check_and_get_column<Type>(&column);
732
129
}
_ZN5doris10vectorized9is_columnINS0_14ColumnNullableEEEbRKNS0_7IColumnE
Line
Count
Source
730
105k
bool is_column(const IColumn& column) {
731
105k
    return check_and_get_column<Type>(&column);
732
105k
}
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEbRKNS0_7IColumnE
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
6
bool is_column(const IColumn& column) {
731
6
    return check_and_get_column<Type>(&column);
732
6
}
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEbRKNS0_7IColumnE
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
9
bool is_column(const IColumn& column) {
731
9
    return check_and_get_column<Type>(&column);
732
9
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
3
bool is_column(const IColumn& column) {
731
3
    return check_and_get_column<Type>(&column);
732
3
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
3
bool is_column(const IColumn& column) {
731
3
    return check_and_get_column<Type>(&column);
732
3
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
3
bool is_column(const IColumn& column) {
731
3
    return check_and_get_column<Type>(&column);
732
3
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
3
bool is_column(const IColumn& column) {
731
3
    return check_and_get_column<Type>(&column);
732
3
}
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEbRKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEbRKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEbRKNS0_7IColumnE
_ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
6
bool is_column(const IColumn& column) {
731
6
    return check_and_get_column<Type>(&column);
732
6
}
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEbRKNS0_7IColumnE
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
6
bool is_column(const IColumn& column) {
731
6
    return check_and_get_column<Type>(&column);
732
6
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEbRKNS0_7IColumnE
Line
Count
Source
730
6
bool is_column(const IColumn& column) {
731
6
    return check_and_get_column<Type>(&column);
732
6
}
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEbRKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEbRKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEbRKNS0_7IColumnE
733
734
template <typename Type>
735
4.99k
bool is_column(const IColumn* column) {
736
4.99k
    return check_and_get_column<Type>(column);
737
4.99k
}
_ZN5doris10vectorized9is_columnINS0_11ColumnArrayEEEbPKNS0_7IColumnE
Line
Count
Source
735
4.81k
bool is_column(const IColumn* column) {
736
4.81k
    return check_and_get_column<Type>(column);
737
4.81k
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
21
bool is_column(const IColumn* column) {
736
21
    return check_and_get_column<Type>(column);
737
21
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
21
bool is_column(const IColumn* column) {
736
21
    return check_and_get_column<Type>(column);
737
21
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
21
bool is_column(const IColumn* column) {
736
21
    return check_and_get_column<Type>(column);
737
21
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
12
bool is_column(const IColumn* column) {
736
12
    return check_and_get_column<Type>(column);
737
12
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
12
bool is_column(const IColumn* column) {
736
12
    return check_and_get_column<Type>(column);
737
12
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
12
bool is_column(const IColumn* column) {
736
12
    return check_and_get_column<Type>(column);
737
12
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
12
bool is_column(const IColumn* column) {
736
12
    return check_and_get_column<Type>(column);
737
12
}
_ZN5doris10vectorized9is_columnINS0_9ColumnMapEEEbPKNS0_7IColumnE
Line
Count
Source
735
24
bool is_column(const IColumn* column) {
736
24
    return check_and_get_column<Type>(column);
737
24
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
9
bool is_column(const IColumn* column) {
736
9
    return check_and_get_column<Type>(column);
737
9
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
9
bool is_column(const IColumn* column) {
736
9
    return check_and_get_column<Type>(column);
737
9
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
9
bool is_column(const IColumn* column) {
736
9
    return check_and_get_column<Type>(column);
737
9
}
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
9
bool is_column(const IColumn* column) {
736
9
    return check_and_get_column<Type>(column);
737
9
}
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE21EEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEbPKNS0_7IColumnE
_ZN5doris10vectorized9is_columnINS0_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEbPKNS0_7IColumnE
Line
Count
Source
735
9
bool is_column(const IColumn* column) {
736
9
    return check_and_get_column<Type>(column);
737
9
}
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_9ColumnStrIjEEEEbPKNS0_7IColumnE
Unexecuted instantiation: _ZN5doris10vectorized9is_columnINS0_12ColumnStructEEEbPKNS0_7IColumnE
738
739
// check_and_get_column_ptr is used to return a ColumnPtr of a specific column type,
740
// which will hold ownership. This prevents the occurrence of dangling pointers due to certain situations.
741
template <typename ColumnType>
742
12
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
743
12
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
744
12
    if (raw_type_ptr == nullptr) {
745
3
        return nullptr;
746
3
    }
747
9
    return typename ColumnType::Ptr(const_cast<ColumnType*>(raw_type_ptr));
748
12
}
_ZN5doris10vectorized24check_and_get_column_ptrINS0_12ColumnVectorILNS_13PrimitiveTypeE5EEEEENT_3PtrERKNS_3COWINS0_7IColumnEE13immutable_ptrIS8_EE
Line
Count
Source
742
6
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
743
6
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
744
6
    if (raw_type_ptr == nullptr) {
745
0
        return nullptr;
746
0
    }
747
6
    return typename ColumnType::Ptr(const_cast<ColumnType*>(raw_type_ptr));
748
6
}
_ZN5doris10vectorized24check_and_get_column_ptrINS0_12ColumnVectorILNS_13PrimitiveTypeE6EEEEENT_3PtrERKNS_3COWINS0_7IColumnEE13immutable_ptrIS8_EE
Line
Count
Source
742
3
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
743
3
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
744
3
    if (raw_type_ptr == nullptr) {
745
3
        return nullptr;
746
3
    }
747
0
    return typename ColumnType::Ptr(const_cast<ColumnType*>(raw_type_ptr));
748
3
}
_ZN5doris10vectorized24check_and_get_column_ptrINS0_14ColumnNullableEEENT_3PtrERKNS_3COWINS0_7IColumnEE13immutable_ptrIS6_EE
Line
Count
Source
742
3
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
743
3
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
744
3
    if (raw_type_ptr == nullptr) {
745
0
        return nullptr;
746
0
    }
747
3
    return typename ColumnType::Ptr(const_cast<ColumnType*>(raw_type_ptr));
748
3
}
749
750
/// True if column's an ColumnConst instance. It's just a syntax sugar for type check.
751
bool is_column_const(const IColumn& column);
752
753
/// True if column's an ColumnNullable instance. It's just a syntax sugar for type check.
754
bool is_column_nullable(const IColumn& column);
755
} // namespace doris::vectorized
756
757
// Wrap `ColumnPtr` because `ColumnPtr` can't be used in forward declaration.
758
namespace doris {
759
struct ColumnPtrWrapper {
760
    vectorized::ColumnPtr column_ptr;
761
762
799k
    ColumnPtrWrapper(vectorized::ColumnPtr col) : column_ptr(std::move(col)) {}
763
};
764
} // namespace doris