Coverage Report

Created: 2026-10-31 07:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/core/column/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 "core/assert_cast.h"
32
#include "core/cow.h"
33
#include "core/data_type/define_primitive_type.h"
34
#include "core/field.h"
35
#include "core/pod_array_fwd.h"
36
#include "core/string_ref.h"
37
#include "core/typeid_cast.h"
38
#include "core/types.h"
39
#include "storage/rowset_id.h"
40
41
namespace doris {
42
class SipHash;
43
}
44
45
namespace doris {
46
47
class Arena;
48
class ColumnSorter;
49
class HybridSorter;
50
51
using EqualFlags = std::vector<uint8_t>;
52
using EqualRange = std::pair<int, int>;
53
54
/// Declares interface to store columns in memory.
55
class IColumn : public COW<IColumn> {
56
private:
57
    friend class COW<IColumn>;
58
59
    /// Creates the same column with the same data.
60
    /// This is internal method to use from COW.
61
    /// It performs shallow copy with copy-ctor and not useful from outside.
62
    /// If you want to copy column for modification, look at 'mutate' method.
63
    virtual MutablePtr clone() const = 0;
64
65
public:
66
    // 64bit offsets now only Array type used, so we make it protected
67
    // to avoid use IColumn::Offset64 directly.
68
    // please use ColumnArray::Offset64 instead if we need.
69
    using Offset64 = UInt64;
70
    using Offsets64 = PaddedPODArray<Offset64>;
71
72
    // 32bit offsets for string
73
    using Offset = UInt32;
74
    using Offsets = PaddedPODArray<Offset>;
75
76
    /// Name of a Column. It is used in info messages.
77
    virtual std::string get_name() const = 0;
78
79
    // used to check the column data is valid or not.
80
164k
    virtual void sanity_check() const {
81
        // do nothing by default, but some column may need to check
82
164k
    }
83
84
    /** If column isn't constant, returns nullptr (or itself).
85
      * If column is constant, transforms constant to full column (if column type allows such transform) and return it.
86
      */
87
657k
    virtual Ptr convert_to_full_column_if_const() const { return get_ptr(); }
88
89
    /** If in join. the StringColumn size may overflow uint32_t, we need convert to uint64_t to ColumnString64
90
  * The Column: ColumnString, ColumnNullable, ColumnArray, ColumnStruct need impl the code
91
  */
92
81.2k
    virtual Ptr convert_column_if_overflow() { return get_ptr(); }
93
94
    /// If column isn't ColumnDictionary, return itself.
95
    /// If column is ColumnDictionary, transforms is to predicate column.
96
3.07k
    virtual MutablePtr convert_to_predicate_column_if_dictionary() { return get_ptr(); }
97
98
    /// If column is ColumnDictionary, and is a range comparison predicate, convert dict encoding
99
1.61k
    virtual void convert_dict_codes_if_necessary() {}
100
101
    /// If column is ColumnDictionary, and is a bloom filter predicate, generate_hash_values
102
0
    virtual void initialize_hash_values_for_runtime_filter() {}
103
104
    /// Creates empty column with the same type.
105
147k
    virtual MutablePtr clone_empty() const { return clone_resized(0); }
106
107
    /// Creates column with the same type and specified size.
108
    /// If size is less current size, then data is cut.
109
    /// If size is greater, than default values are appended.
110
0
    virtual MutablePtr clone_resized(size_t s) const {
111
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
112
0
                               "Method clone_resized is not supported for " + get_name());
113
0
        return nullptr;
114
0
    }
115
116
    // Only used by columns that need special lifecycle handling.
117
2
    virtual void finalize() {}
118
119
    // Only used on ColumnDictionary
120
483
    virtual void set_rowset_segment_id(std::pair<RowsetId, uint32_t> rowset_segment_id) {}
121
122
0
    virtual std::pair<RowsetId, uint32_t> get_rowset_segment_id() const { return {}; }
123
124
    /// Returns number of values in column.
125
    virtual size_t size() const = 0;
126
127
    /// There are no values in columns.
128
686k
    bool empty() const { return size() == 0; }
129
130
    /// Returns value of n-th element in universal Field representation.
131
    /// Is used in rare cases, since creation of Field instance is expensive usually.
132
    virtual Field operator[](size_t n) const = 0;
133
134
    /// Like the previous one, but avoids extra copying if Field is in a container, for example.
135
    virtual void get(size_t n, Field& res) const = 0;
136
137
    /// If possible, returns pointer to memory chunk which contains n-th element (if it isn't possible, throws an exception)
138
    /// Is used to optimize some computations (in aggregation, for example).
139
    /// this function is used in ColumnString, ColumnFixedString, ColumnVector, not support in ColumnArray|ColumnMap...
140
    /// and should be pair with insert_data
141
6
    virtual StringRef get_data_at(size_t n) const {
142
6
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
143
6
                               "Method get_data_at is not supported for " + get_name());
144
6
    }
145
146
1
    virtual Int64 get_int(size_t /*n*/) const {
147
1
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
148
1
                               "Method get_int is not supported for " + get_name());
149
0
        return 0;
150
1
    }
151
152
12.2k
    virtual bool is_null_at(size_t /*n*/) const { return false; }
153
154
    /** If column is numeric, return value of n-th element, casted to bool.
155
      * For NULL values of Nullable column returns false.
156
      * Otherwise throw an exception.
157
      */
158
1
    virtual bool get_bool(size_t /*n*/) const {
159
1
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
160
1
                               "Method get_bool is not supported for " + get_name());
161
0
        return false;
162
1
    }
163
164
    /// Removes all elements outside of specified range.
165
    /// Is used in LIMIT operation, for example.
166
1.33k
    virtual Ptr cut(size_t start, size_t length) const final {
167
1.33k
        MutablePtr res = clone_empty();
168
1.33k
        res->insert_range_from(*this, start, length);
169
1.33k
        return res;
170
1.33k
    }
171
172
    /**
173
    * erase data from 'start' and length elements from the column.
174
    * @param length The number of elements to remove from the start position of the column
175
    * @throws doris::Exception with NOT_IMPLEMENTED_ERROR if the operation is not supported
176
    *         for this column type
177
    * eg: erase(3, 2) means remove the idx 3 and 4 elements (0-based)
178
    */
179
0
    virtual void erase(size_t start, size_t length) {
180
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
181
0
                               "Method erase is not supported for " + get_name());
182
0
    }
183
184
    /// cut or expand inplace. `this` would be moved, only the return value is avaliable.
185
318
    virtual Ptr shrink(size_t length) const final {
186
        // NOLINTBEGIN(performance-move-const-arg)
187
318
        MutablePtr res = std::move(*this).mutate();
188
318
        res->resize(length);
189
        // NOLINTEND(performance-move-const-arg)
190
318
        return res->get_ptr();
191
318
    }
192
193
    /// Appends new value at the end of column (column's size is increased by 1).
194
    /// Is used to transform raw strings to Blocks (for example, inside input format parsers)
195
    virtual void insert(const Field& x) = 0;
196
197
    /// Appends n-th element from other column with the same type.
198
    /// Is used in merge-sort and merges. It could be implemented in inherited classes more optimally than default implementation.
199
    virtual void insert_from(const IColumn& src, size_t n);
200
201
    /// Appends range of elements from other column with the same type.
202
    /// Could be used to concatenate columns.
203
    virtual void insert_range_from(const IColumn& src, size_t start, size_t length) = 0;
204
205
    /// Appends range of elements from other column with the same type.
206
    /// Do not need throw execption in ColumnString overflow uint32, only
207
    /// use in join
208
    virtual void insert_range_from_ignore_overflow(const IColumn& src, size_t start,
209
83.4k
                                                   size_t length) {
210
83.4k
        insert_range_from(src, start, length);
211
83.4k
    }
212
213
    /// Appends one element from other column with the same type multiple times.
214
76
    virtual void insert_many_from(const IColumn& src, size_t position, size_t length) {
215
193
        for (size_t i = 0; i < length; ++i) {
216
117
            insert_from(src, position);
217
117
        }
218
76
    }
219
220
    // insert the data of target columns into self column according to positions
221
    // positions[i] means index of srcs whitch need to insert_from
222
    // the virtual function overhead of multiple calls to insert_from can be reduced to once
223
    virtual void insert_from_multi_column(const std::vector<const IColumn*>& srcs,
224
                                          const std::vector<size_t>& positions) = 0;
225
226
    /// Appends a batch elements from other column with the same type
227
    /// Also here should make sure indices_end is bigger than indices_begin
228
    /// indices_begin + indices_end represent the row indices of column src
229
    virtual void insert_indices_from(const IColumn& src, const uint32_t* indices_begin,
230
                                     const uint32_t* indices_end) = 0;
231
232
    /// Appends data located in specified memory chunk if it is possible (throws an exception if it cannot be implemented).
233
    /// used in ColumnString, ColumnFixedString, ColumnVector, not support in ColumnArray|ColumnMap...
234
    /// Is used to optimize some computations (in aggregation, for example).
235
    /// Parameter length could be ignored if column values have fixed size.
236
    /// All data will be inserted as single element
237
1
    virtual void insert_data(const char* pos, size_t length) {
238
1
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
239
1
                               "Method insert_data is not supported for " + get_name());
240
1
    }
241
242
    // todo(zeno) Use dict_args temp object to cover all arguments
243
    virtual void insert_many_dict_data(const int32_t* data_array, size_t start_index,
244
                                       const StringRef* dict, size_t data_num,
245
43
                                       uint32_t dict_num = 0) {
246
43
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
247
43
                               "Method insert_many_dict_data is not supported for " + get_name());
248
43
    }
249
250
    /// Insert binary data into column from a continuous buffer, the implementation maybe copy all binary data
251
    /// in one single time.
252
    virtual void insert_many_continuous_binary_data(const char* data, const uint32_t* offsets,
253
43
                                                    const size_t num) {
254
43
        throw doris::Exception(
255
43
                ErrorCode::NOT_IMPLEMENTED_ERROR,
256
43
                "Method insert_many_continuous_binary_data is not supported for " + get_name());
257
43
    }
258
259
    /// Insert `num` string entries with real length information but no actual
260
    /// character data. Used by OFFSET_ONLY reading mode where actual string
261
    /// content is not needed but length information must be preserved.
262
0
    virtual void insert_offsets_from_lengths(const uint32_t* lengths, size_t num) {
263
0
        throw doris::Exception(
264
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
265
0
                "Method insert_offsets_from_lengths is not supported for " + get_name());
266
0
    }
267
268
43
    virtual void insert_many_strings(const StringRef* strings, size_t num) {
269
43
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
270
43
                               "Method insert_many_strings is not supported for " + get_name());
271
43
    }
272
273
    virtual void insert_many_strings_overflow(const StringRef* strings, size_t num,
274
43
                                              size_t max_length) {
275
43
        throw doris::Exception(
276
43
                ErrorCode::NOT_IMPLEMENTED_ERROR,
277
43
                "Method insert_many_strings_overflow is not supported for " + get_name());
278
43
    }
279
280
    // Here `pos` points to the memory data type is the same as the data type of the column.
281
    // This function is used by `insert_keys_into_columns` in AggregationNode.
282
0
    virtual void insert_many_raw_data(const char* pos, size_t num) {
283
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
284
0
                               "Method insert_many_raw_data is not supported for " + get_name());
285
0
    }
286
287
6
    void insert_data_repeatedly(const char* pos, size_t length, size_t data_num) {
288
12
        for (size_t i = 0; i < data_num; ++i) {
289
6
            insert_data(pos, length);
290
6
        }
291
6
    }
292
293
    /// Appends "default value".
294
    /// Is used when there are need to increase column size, but inserting value doesn't make sense.
295
    /// For example, ColumnNullable(Nested) absolutely ignores values of nested column if it is marked as NULL.
296
    virtual void insert_default() = 0;
297
298
    /// Appends "default value" multiple times.
299
3.79k
    virtual void insert_many_defaults(size_t length) {
300
47.8M
        for (size_t i = 0; i < length; ++i) {
301
47.8M
            insert_default();
302
47.8M
        }
303
3.79k
    }
304
305
    /** Removes last n elements.
306
      * Is used to support exception-safety of several operations.
307
      *  For example, sometimes insertion should be reverted if we catch an exception during operation processing.
308
      * If column has less than n elements or n == 0 - undefined behavior.
309
      */
310
    virtual void pop_back(size_t n) = 0;
311
312
    /** Serializes n-th element. Serialized element should be placed continuously inside Arena's memory.
313
      * Serialized value can be deserialized to reconstruct original object. Is used in aggregation.
314
      * The method is similar to get_data_at(), but can work when element's value cannot be mapped to existing continuous memory chunk,
315
      *  For example, to obtain unambiguous representation of Array of strings, strings data should be interleaved with their sizes.
316
      * Parameter begin should be used with Arena::alloc_continue.
317
      */
318
    virtual StringRef serialize_value_into_arena(size_t n, Arena& arena,
319
                                                 char const*& begin) const = 0;
320
321
    /// Deserializes a value that was serialized using IColumn::serialize_value_into_arena method.
322
    /// Returns pointer to the position after the read data.
323
    virtual const char* deserialize_and_insert_from_arena(const char* pos) = 0;
324
325
    // todo: Consider replacing stringref with slice.
326
0
    virtual void serialize(StringRef* keys, size_t num_rows) const {
327
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
328
0
                               "Method serialize is not supported for " + get_name());
329
0
    }
330
331
    virtual void serialize_with_nullable(StringRef* keys, size_t num_rows, const bool has_null,
332
                                         const uint8_t* __restrict null_map) const;
333
334
    // This function deserializes group-by keys into column in the vectorized way.
335
0
    virtual void deserialize(StringRef* keys, const size_t num_rows) {
336
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
337
0
                               "Method deserialize is not supported for " + get_name());
338
0
    }
339
340
    virtual void deserialize_with_nullable(StringRef* keys, const size_t num_rows,
341
                                           PaddedPODArray<UInt8>& null_map);
342
343
    /// The exact size to serialize the `row`-th row data in this column.
344
0
    virtual size_t serialize_size_at(size_t row) const {
345
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
346
0
                               "Column {} should not be serialized.", get_name());
347
0
    }
348
    /// `serialize_impl` is the implementation to serialize a column into a continuous memory.
349
0
    virtual size_t serialize_impl(char* pos, const size_t row) const {
350
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
351
0
                               "Method serialize_impl is not supported for " + get_name());
352
0
    }
353
    /// `deserialize_impl` will deserialize data which is serialized by `serialize_impl`.
354
0
    virtual size_t deserialize_impl(const char* pos) {
355
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
356
0
                               "Method deserialize_impl is not supported for " + get_name());
357
0
    }
358
359
    /// Return the size of largest row.
360
    /// This is for calculating the memory size for vectorized serialization of aggregation keys.
361
0
    virtual size_t get_max_row_byte_size() const {
362
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
363
0
                               "Method get_max_row_byte_size is not supported for " + get_name());
364
0
        return 0;
365
0
    }
366
367
    /// TODO: SipHash is slower than city or xx hash, rethink we should have a new interface
368
    /// Update state of hash function with value of n-th element.
369
    /// On subsequent calls of this method for sequence of column values of arbitrary types,
370
    ///  passed bytes to hash must identify sequence of values unambiguously.
371
4
    virtual void update_hash_with_value(size_t n, SipHash& hash) const {
372
4
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
373
4
                               "Method update_hash_with_value is not supported for " + get_name());
374
4
    }
375
376
    /// Update state of hash function with value of n elements to avoid the virtual function call
377
    /// null_data to mark whether need to do hash compute, null_data == nullptr
378
    /// means all element need to do hash function, else only *null_data != 0 need to do hash func
379
    /// do xxHash here, faster than other sip hash
380
    virtual void update_hashes_with_value(uint64_t* __restrict hashes,
381
1
                                          const uint8_t* __restrict null_data = nullptr) const {
382
1
        throw doris::Exception(
383
1
                ErrorCode::NOT_IMPLEMENTED_ERROR,
384
1
                "Method update_hashes_with_value is not supported for " + get_name());
385
1
    }
386
387
    // use range for one hash value to avoid virtual function call in loop
388
    virtual void update_xxHash_with_value(size_t start, size_t end, uint64_t& hash,
389
1
                                          const uint8_t* __restrict null_data) const {
390
1
        throw doris::Exception(
391
1
                ErrorCode::NOT_IMPLEMENTED_ERROR,
392
1
                "Method update_xxHash_with_value is not supported for " + get_name());
393
1
    }
394
395
    /// Update state of crc32 hash function with value of n elements to avoid the virtual function call
396
    /// null_data to mark whether need to do hash compute, null_data == nullptr
397
    /// means all element need to do hash function, else only *null_data != 0 need to do hash func
398
    virtual void update_crcs_with_value(uint32_t* __restrict hash, PrimitiveType type,
399
                                        uint32_t rows, uint32_t offset = 0,
400
0
                                        const uint8_t* __restrict null_data = nullptr) const {
401
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
402
0
                               "Method update_crcs_with_value is not supported for " + get_name());
403
0
    }
404
405
    // use range for one hash value to avoid virtual function call in loop
406
    virtual void update_crc_with_value(size_t start, size_t end, uint32_t& hash,
407
0
                                       const uint8_t* __restrict null_data) const {
408
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
409
0
                               "Method update_crc_with_value is not supported for " + get_name());
410
0
    }
411
412
    virtual void update_crc32c_batch(uint32_t* __restrict hashes,
413
0
                                     const uint8_t* __restrict null_map) const {
414
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
415
0
                               "Method update_crc32c_batch is not supported for " + get_name());
416
0
    }
417
418
    // Hash NULL rows as this column type's default value, instead of skipping them like
419
    // update_crc32c_batch(hashes, null_map). This keeps the legacy Nullable fixed-width hash
420
    // semantics without mutating the source nested column.
421
    virtual void update_crc32c_batch_default_on_null(uint32_t* __restrict hashes,
422
0
                                                     const uint8_t* __restrict null_map) const {
423
0
        throw doris::Exception(
424
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
425
0
                "Method update_crc32c_batch_default_on_null is not supported for " + get_name());
426
0
    }
427
428
    // use range for one hash value to avoid virtual function call in loop
429
    virtual void update_crc32c_single(size_t start, size_t end, uint32_t& hash,
430
0
                                      const uint8_t* __restrict null_map) const {
431
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
432
0
                               "Method update_crc32c_single is not supported for " + get_name());
433
0
    }
434
435
    /** Removes elements that don't match the filter.
436
      * Is used in WHERE and HAVING operations.
437
      * If result_size_hint > 0, then makes advance reserve(result_size_hint) for the result column;
438
      *  if 0, then don't makes reserve(),
439
      *  otherwise (i.e. < 0), makes reserve() using size of source column.
440
      */
441
    using Filter = PaddedPODArray<UInt8>;
442
    virtual Ptr filter(const Filter& filt, ssize_t result_size_hint) const = 0;
443
444
    /// This function will modify the original table.
445
    /// Return rows number after filtered.
446
    virtual size_t filter(const Filter& filter) = 0;
447
448
    /**
449
     *  used by lazy materialization to filter column by selected rowids
450
     *  Q: Why use IColumn* as args type instead of MutablePtr or ImmutablePtr ?
451
     *  A: If use MutablePtr/ImmutablePtr as col_ptr's type, which means there could be many 
452
     *  convert(convert MutablePtr to ImmutablePtr or convert ImmutablePtr to MutablePtr)
453
     *  happends in filter_by_selector because of mem-reuse logic or ColumnNullable, I think this is meaningless;
454
     *  So using raw ptr directly here.
455
     *  NOTICE: only column_nullable and predict_column, column_dictionary now support filter_by_selector
456
     *  // nullable -> predict_column
457
     *  // string (dictionary) -> column_dictionary
458
     */
459
    virtual Status filter_by_selector(const uint16_t* sel, size_t sel_size,
460
0
                                      IColumn* col_ptr) const {
461
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
462
0
                               "Method filter_by_selector is not supported for {}, only "
463
0
                               "column_nullable, column_dictionary and predict_column support",
464
0
                               get_name());
465
0
    }
466
467
    /// Permutes elements using specified permutation. Is used in sortings.
468
    /// limit - if it isn't 0, puts only first limit elements in the result.
469
    using Permutation = PaddedPODArray<size_t>;
470
    virtual MutablePtr permute(const Permutation& perm, size_t limit) const = 0;
471
472
    /** Compares (*this)[n] and rhs[m]. Column rhs should have the same type.
473
      * Returns negative number, 0, or positive number (*this)[n] is less, equal, greater than rhs[m] respectively.
474
      * Is used in sortings.
475
      *
476
      * If one of element's value is NaN or NULLs, then:
477
      * - if nan_direction_hint == -1, NaN and NULLs are considered as least than everything other;
478
      * - if nan_direction_hint ==  1, NaN and NULLs are considered as greatest than everything other.
479
      * For example, if nan_direction_hint == -1 is used by descending sorting, NaNs will be at the end.
480
      *
481
      * For non Nullable and non floating point types, nan_direction_hint is ignored.
482
      * For array/map/struct types, we compare with nested column element and offsets size
483
      */
484
0
    virtual int compare_at(size_t n, size_t m, const IColumn& rhs, int nan_direction_hint) const {
485
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "compare_at for " + get_name());
486
0
    }
487
488
    /**
489
     * To compare all rows in this column with another row (with row_id = rhs_row_id in column rhs)
490
     * @param nan_direction_hint and direction indicates the ordering.
491
     * @param cmp_res if we already has a comparison result for row i, e.g. cmp_res[i] = 1, we can skip row i
492
     * @param filter this stores comparison results for all rows. filter[i] = 1 means row i is less than row rhs_row_id in rhs
493
     */
494
    virtual void compare_internal(size_t rhs_row_id, const IColumn& rhs, int nan_direction_hint,
495
                                  int direction, std::vector<uint8_t>& cmp_res,
496
                                  uint8_t* __restrict filter) const;
497
498
    /** Returns a permutation that sorts elements of this column,
499
      *  i.e. perm[i]-th element of source column should be i-th element of sorted column.
500
      * reverse - true: descending order, false: ascending order.
501
      * limit - if isn't 0, then only first limit elements of the result column could be sorted.
502
      * nan_direction_hint - see above.
503
      */
504
    virtual void get_permutation(bool reverse, size_t limit, int nan_direction_hint,
505
0
                                 HybridSorter& sorter, Permutation& res) const {
506
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
507
0
                               "get_permutation for " + get_name());
508
0
    }
509
510
#ifdef BE_TEST
511
    // Defined in column.cpp: constructs a HybridSorter, which is only
512
    // forward-declared here to keep exec/sort out of column.h's closure.
513
    void get_permutation_default(bool reverse, size_t limit, int nan_direction_hint,
514
                                 Permutation& res) const;
515
#endif
516
517
    /** Split column to smaller columns. Each value goes to column index, selected by corresponding element of 'selector'.
518
      * Selector must contain values from 0 to num_columns - 1.
519
      * For default implementation, see column_impl.h
520
      */
521
    using ColumnIndex = UInt32;
522
    using Selector = PaddedPODArray<ColumnIndex>;
523
524
    // The append_data_by_selector function requires the column to implement the insert_from function.
525
    // In fact, this function is just calling insert_from but without the overhead of a virtual function.
526
527
    virtual void append_data_by_selector(MutablePtr& res, const Selector& selector) const = 0;
528
    virtual void insert_duplicate_fields(const Field& x, const size_t n) = 0;
529
530
    // Here, begin and end represent the range of the Selector.
531
    virtual void append_data_by_selector(MutablePtr& res, const Selector& selector, size_t begin,
532
                                         size_t end) const = 0;
533
534
    /// Insert data from several other columns according to source mask (used in vertical merge).
535
    /// For now it is a helper to de-virtualize calls to insert*() functions inside gather loop
536
    /// (descendants should call gatherer_stream.gather(*this) to implement this function.)
537
    /// TODO: interface decoupled from ColumnGathererStream that allows non-generic specializations.
538
    //    virtual void gather(ColumnGathererStream & gatherer_stream) = 0;
539
540
    /// Reserves memory for specified amount of elements. If reservation isn't possible, does nothing.
541
    /// It affects performance only (not correctness).
542
7.72k
    virtual void reserve(size_t /*n*/) {}
543
544
    /// Resize memory for specified amount of elements. If reservation isn't possible, does nothing.
545
    /// It affects performance only (not correctness).
546
    /// Note. resize means not only change column self but also sub-columns if have.
547
0
    virtual void resize(size_t /*n*/) {}
548
549
    /// Size of column data in memory (may be approximate) - for profiling. Zero, if could not be determined.
550
    virtual size_t byte_size() const = 0;
551
552
    /**
553
    * @brief Checks whether the current column has enough capacity to accommodate the given source column.
554
    * 
555
    * This pure virtual function should be implemented by derived classes to determine whether the 
556
    * current column has enough reserved memory to hold the data of the specified `src` column.
557
    * 
558
    * @param src The source column whose data needs to be checked for fitting into the current column.
559
    * @return true if the current column has enough capacity to hold the `src` data, false otherwise.
560
    */
561
    virtual bool has_enough_capacity(const IColumn& src) const = 0;
562
563
    /// Size of memory, allocated for column.
564
    /// This is greater or equals to byte_size due to memory reservation in containers.
565
    /// Zero, if could not be determined.
566
    virtual size_t allocated_bytes() const = 0;
567
568
    /// If the column contains subcolumns (such as Array, Nullable, etc), do callback on them.
569
    /// Shallow: doesn't do recursive calls; don't do call for itself.
570
    using ColumnCallback = std::function<void(const IColumn&)>;
571
1.34M
    virtual void for_each_subcolumn(ColumnCallback) const {}
572
573
protected:
574
680k
    virtual void mutate_subcolumns() {}
575
576
221k
    static void mutate_subcolumn(WrappedPtr& subcolumn) {
577
221k
        static_cast<IColumn::Ptr&>(subcolumn) =
578
221k
                std::move(*static_cast<const IColumn::Ptr&>(subcolumn)).mutate();
579
221k
    }
580
581
    template <typename ColumnType>
582
222k
    static void mutate_subcolumn(typename ColumnType::WrappedPtr& subcolumn) {
583
222k
        auto mutated = std::move(*static_cast<const typename ColumnType::Ptr&>(subcolumn)).mutate();
584
222k
        auto typed_mutated = ColumnType::cast_to_column_mutptr(
585
222k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(mutated.get()));
586
222k
        mutated = nullptr;
587
222k
        static_cast<typename ColumnType::Ptr&>(subcolumn) = std::move(typed_mutated);
588
222k
    }
_ZN5doris7IColumn16mutate_subcolumnINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRNT_10WrappedPtrE
Line
Count
Source
582
216k
    static void mutate_subcolumn(typename ColumnType::WrappedPtr& subcolumn) {
583
216k
        auto mutated = std::move(*static_cast<const typename ColumnType::Ptr&>(subcolumn)).mutate();
584
216k
        auto typed_mutated = ColumnType::cast_to_column_mutptr(
585
216k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(mutated.get()));
586
216k
        mutated = nullptr;
587
216k
        static_cast<typename ColumnType::Ptr&>(subcolumn) = std::move(typed_mutated);
588
216k
    }
_ZN5doris7IColumn16mutate_subcolumnINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEvRNT_10WrappedPtrE
Line
Count
Source
582
1.58k
    static void mutate_subcolumn(typename ColumnType::WrappedPtr& subcolumn) {
583
1.58k
        auto mutated = std::move(*static_cast<const typename ColumnType::Ptr&>(subcolumn)).mutate();
584
1.58k
        auto typed_mutated = ColumnType::cast_to_column_mutptr(
585
1.58k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(mutated.get()));
586
1.58k
        mutated = nullptr;
587
1.58k
        static_cast<typename ColumnType::Ptr&>(subcolumn) = std::move(typed_mutated);
588
1.58k
    }
_ZN5doris7IColumn16mutate_subcolumnINS_9ColumnStrIjEEEEvRNT_10WrappedPtrE
Line
Count
Source
582
3.21k
    static void mutate_subcolumn(typename ColumnType::WrappedPtr& subcolumn) {
583
3.21k
        auto mutated = std::move(*static_cast<const typename ColumnType::Ptr&>(subcolumn)).mutate();
584
3.21k
        auto typed_mutated = ColumnType::cast_to_column_mutptr(
585
3.21k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(mutated.get()));
586
3.21k
        mutated = nullptr;
587
3.21k
        static_cast<typename ColumnType::Ptr&>(subcolumn) = std::move(typed_mutated);
588
3.21k
    }
_ZN5doris7IColumn16mutate_subcolumnINS_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEvRNT_10WrappedPtrE
Line
Count
Source
582
1.60k
    static void mutate_subcolumn(typename ColumnType::WrappedPtr& subcolumn) {
583
1.60k
        auto mutated = std::move(*static_cast<const typename ColumnType::Ptr&>(subcolumn)).mutate();
584
1.60k
        auto typed_mutated = ColumnType::cast_to_column_mutptr(
585
1.60k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(mutated.get()));
586
1.60k
        mutated = nullptr;
587
1.60k
        static_cast<typename ColumnType::Ptr&>(subcolumn) = std::move(typed_mutated);
588
1.60k
    }
589
590
public:
591
    /// Columns have equal structure.
592
    /// If true - you can use "compare_at", "insert_from", etc. methods.
593
0
    virtual bool structure_equals(const IColumn&) const {
594
0
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
595
0
                               "Method structure_equals is not supported for " + get_name());
596
0
        return false;
597
0
    }
598
599
    // Recursively make a mutable column tree. Use this rvalue member when the
600
    // current column object is being consumed. Shared nodes are cloned, while
601
    // exclusive nodes are reused through the COW fast path.
602
503k
    MutablePtr mutate() const&& {
603
503k
        MutablePtr res = shallow_mutate();
604
503k
        res->mutate_subcolumns();
605
503k
        return res;
606
503k
    }
607
608
    // COW entry point for a ColumnPtr. Passing the pointer by value keeps the
609
    // original owner alive until the top-level detach succeeds; passing
610
    // std::move(ptr) explicitly consumes that owner. Subcolumns are still
611
    // recursively detached as needed.
612
397k
    static MutablePtr mutate(Ptr ptr) {
613
397k
        MutablePtr res = ptr->shallow_mutate(); /// Now use_count is 2.
614
397k
        ptr.reset();                            /// Reset use_count to 1.
615
397k
        res->mutate_subcolumns();
616
397k
        return res;
617
397k
    }
618
619
    /** Some columns can contain another columns inside.
620
      * So, we have a tree of columns. But not all combinations are possible.
621
      * There are the following rules:
622
      *
623
      * ColumnConst may be only at top. It cannot be inside any column.
624
      * ColumnNullable can contain only simple columns.
625
      */
626
627
    /// Various properties on behaviour of column type.
628
629
    /// It's true for ColumnNullable and Const(ColumnNullable).
630
1.51M
    virtual bool is_nullable() const { return false; }
631
632
    // true if column has null element
633
3
    virtual bool has_null() const { return false; }
634
635
    // true if column has null element [begin, end)
636
443
    virtual bool has_null(size_t begin, size_t end) const { return false; }
637
638
513k
    virtual bool is_exclusive() const { return use_count() == 1; }
639
640
    /// Clear data of column, just like vector clear
641
    virtual void clear() = 0;
642
643
    /** Memory layout properties.
644
      *
645
      * Each value of a column can be placed in memory contiguously or not.
646
      *
647
      * Example: simple columns like UInt64 or FixedString store their values contiguously in single memory buffer.
648
      *
649
      * Example: Tuple store values of each component in separate subcolumn, so the values of Tuples with at least two components are not contiguous.
650
      * Another example is Nullable. Each value have null flag, that is stored separately, so the value is not contiguous in memory.
651
      *
652
      * There are some important cases, when values are not stored contiguously, but for each value, you can get contiguous memory segment,
653
      *  that will unambiguously identify the value. In this case, methods get_data_at and insert_data are implemented.
654
      * Example: String column: bytes of strings are stored concatenated in one memory buffer
655
      *  and offsets to that buffer are stored in another buffer. The same is for Array of fixed-size contiguous elements.
656
      *
657
      * To avoid confusion between these cases, we don't have isContiguous method.
658
      */
659
    // todo: We should support a non-const version of get_raw_data that returns a Slice.
660
2
    virtual StringRef get_raw_data() const {
661
2
        throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
662
2
                               "Column {} is not a contiguous block of memory", get_name());
663
2
    }
664
665
    // Column is ColumnString/ColumnArray/ColumnMap or other variable length column at every row
666
16
    virtual bool is_variable_length() const { return false; }
667
668
60
    virtual bool is_column_string() const { return false; }
669
670
368k
    virtual bool is_column_string64() const { return false; }
671
672
398k
    bool contains_column_string64() const {
673
398k
        if (is_column_string64()) {
674
2
            return true;
675
2
        }
676
677
398k
        bool contains = false;
678
398k
        ColumnCallback callback = [&](const IColumn& subcolumn) {
679
195k
            if (!contains) {
680
195k
                contains = subcolumn.contains_column_string64();
681
195k
            }
682
195k
        };
683
398k
        for_each_subcolumn(callback);
684
398k
        return contains;
685
398k
    }
686
687
4.98k
    virtual bool is_column_dictionary() const { return false; }
688
689
    /// If the only value column can contain is NULL.
690
143
    virtual bool only_null() const { return false; }
691
692
    /**
693
     * ColumnSorter is used to sort each columns in a Block. In this sorting pattern, sorting a
694
     * column will produce a list of EqualRange which has the same elements respectively. And for
695
     * next column in this block, we only need to sort rows in those `range`.
696
     *
697
     * Besides, we do not materialize sorted data eagerly. Instead, the intermediate sorting results
698
     * are represendted by permutation and data will be materialized after all of columns are sorted.
699
     *
700
     * @sorter: ColumnSorter is used to do sorting.
701
     * @flags : indicates if current item equals to the previous one.
702
     * @perms : permutation after sorting
703
     * @range : EqualRange which has the same elements respectively.
704
     * @last_column : indicates if this column is the last in this block.
705
     */
706
    virtual void sort_column(const ColumnSorter* sorter, EqualFlags& flags,
707
                             IColumn::Permutation& perms, EqualRange& range,
708
                             bool last_column) const;
709
710
5.91M
    virtual ~IColumn() = default;
711
5.91M
    IColumn() = default;
712
2.90k
    IColumn(const IColumn&) = default;
713
714
    /** Print column name, size, and recursively print all subcolumns.
715
      */
716
    String dump_structure() const;
717
718
    // count how many const column including self
719
    int count_const_column() const;
720
721
    bool null_map_check() const;
722
723
    // const column nested check, eg. const(nullable(...)) is allowed
724
    //  const(array(const(...))) is not allowed
725
    bool const_nested_check() const;
726
727
    // column boolean check, only allow 0 and 1
728
    bool column_boolean_check() const;
729
730
    Status column_self_check() const;
731
732
    // only used in agg value replace for column which is not variable length, eg.BlockReader::_copy_value_data
733
    // usage: self_column.replace_column_data(other_column, other_column's row index, self_column's row index)
734
    virtual void replace_column_data(const IColumn&, size_t row, size_t self_row = 0) = 0;
735
736
    // Batch version of replace_column_data for replacing continuous range of data
737
    // Used in sparse column compaction optimization for better performance
738
    // Default implementation calls replace_column_data in a loop
739
    // Subclasses (e.g., ColumnVector, ColumnDecimal) can override with optimized memcpy
740
    virtual void replace_column_data_range(const IColumn& src, size_t src_start, size_t count,
741
0
                                           size_t self_start) {
742
0
        for (size_t i = 0; i < count; ++i) {
743
0
            replace_column_data(src, src_start + i, self_start + i);
744
0
        }
745
0
    }
746
    // Whether this column type supports efficient in-place range replacement.
747
    // Returns true for fixed-width types (ColumnVector, ColumnDecimal) that can use memcpy.
748
    // Returns false for variable-length types (ColumnString, ColumnArray, etc.) that require
749
    // more complex handling. Used by sparse column compaction to choose the right code path.
750
0
    virtual bool support_replace_column_data_range() const { return false; }
751
752
    // replace data to default value if null, used to avoid null data output decimal check failure
753
    // usage: nested_column.replace_column_null_data(nested_null_map.data())
754
    // only wrok on column_vector and column column decimal, there will be no behavior when other columns type call this method
755
192
    virtual void replace_column_null_data(const uint8_t* __restrict null_map) {}
756
    // whether support replace null data, default return false
757
    // column_vector and column_decimal override this method to return true
758
89
    virtual bool support_replace_column_null_data() const { return false; }
759
760
    /**
761
     * Try to replace the payload of NULL rows with the nested column's default value without
762
     * going through COW. Implementations must return false without modifying data unless the
763
     * complete column ownership chain is exclusive. This is only safe because payloads of rows
764
     * that are already NULL are not observable through the nullable column. In particular, a
765
     * shared nested column may belong to another nullable column with a different null map.
766
     *
767
     * This bypasses the normal COW mutation path. Do not use it for general column mutation.
768
     */
769
0
    virtual bool try_replace_null_payload_with_default_without_cow() const { return false; }
770
771
    // For float/double types, replace -0.0 with 0.0, set NaN to quiet NaN,
772
    // used to ensure data hash equality for -0.0 and +0.0, e.g. aggregate and join
773
0
    virtual void replace_float_special_values() {}
774
775
protected:
776
    template <typename Derived>
777
510
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
778
510
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
779
510
    }
_ZNK5doris7IColumn28append_data_by_selector_implINS_9ColumnStrIjEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
777
1
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
778
1
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
779
1
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_9ColumnStrImEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
777
1
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
778
1
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
779
1
    }
_ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
777
504
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
778
504
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
779
504
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_23ColumnFixedLengthObjectEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_14ColumnNullableEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_11ColumnConstEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnNothingEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZNK5doris7IColumn28append_data_by_selector_implINS_11ColumnArrayEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
777
3
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
778
3
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
779
3
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_15ColumnVarbinaryEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDictI32EEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: block_test.cpp:_ZNK5doris7IColumn28append_data_by_selector_implINS_12_GLOBAL__N_118ThrowOnCloneColumnEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZNK5doris7IColumn28append_data_by_selector_implINS_15ColumnVariantV2EEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
777
1
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector) const {
778
1
        append_data_by_selector_impl<Derived>(res, selector, 0, selector.size());
779
1
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnStructEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_9ColumnMapEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: column_struct_test.cpp:_ZNK5doris7IColumn28append_data_by_selector_implINS_12_GLOBAL__N_118HashCountingColumnEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnSpatialEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: analytic_sink_operator_test.cpp:_ZNK5doris7IColumn28append_data_by_selector_implINS_12_GLOBAL__N_129AnalyticCompareCountingColumnEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: block_reader_change_next_block_test.cpp:_ZNK5doris7IColumn28append_data_by_selector_implINS_12_GLOBAL__N_120ThrowOnCompareColumnEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
780
    template <typename Derived>
781
542
    void insert_impl(const Field& x, const size_t n) {
782
5.62k
        for (size_t i = 0; i < n; ++i) {
783
5.08k
            static_cast<Derived&>(*this).insert(x);
784
5.08k
        }
785
542
    }
_ZN5doris7IColumn11insert_implINS_9ColumnStrIjEEEEvRKNS_5FieldEm
Line
Count
Source
781
10
    void insert_impl(const Field& x, const size_t n) {
782
35
        for (size_t i = 0; i < n; ++i) {
783
25
            static_cast<Derived&>(*this).insert(x);
784
25
        }
785
10
    }
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_9ColumnStrImEEEEvRKNS_5FieldEm
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRKNS_5FieldEm
Line
Count
Source
781
4
    void insert_impl(const Field& x, const size_t n) {
782
14
        for (size_t i = 0; i < n; ++i) {
783
10
            static_cast<Derived&>(*this).insert(x);
784
10
        }
785
4
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRKNS_5FieldEm
Line
Count
Source
781
4
    void insert_impl(const Field& x, const size_t n) {
782
14
        for (size_t i = 0; i < n; ++i) {
783
10
            static_cast<Derived&>(*this).insert(x);
784
10
        }
785
4
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRKNS_5FieldEm
Line
Count
Source
781
4
    void insert_impl(const Field& x, const size_t n) {
782
14
        for (size_t i = 0; i < n; ++i) {
783
10
            static_cast<Derived&>(*this).insert(x);
784
10
        }
785
4
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRKNS_5FieldEm
Line
Count
Source
781
11
    void insert_impl(const Field& x, const size_t n) {
782
36
        for (size_t i = 0; i < n; ++i) {
783
25
            static_cast<Derived&>(*this).insert(x);
784
25
        }
785
11
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRKNS_5FieldEm
Line
Count
Source
781
336
    void insert_impl(const Field& x, const size_t n) {
782
903
        for (size_t i = 0; i < n; ++i) {
783
567
            static_cast<Derived&>(*this).insert(x);
784
567
        }
785
336
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRKNS_5FieldEm
Line
Count
Source
781
4
    void insert_impl(const Field& x, const size_t n) {
782
14
        for (size_t i = 0; i < n; ++i) {
783
10
            static_cast<Derived&>(*this).insert(x);
784
10
        }
785
4
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRKNS_5FieldEm
Line
Count
Source
781
20
    void insert_impl(const Field& x, const size_t n) {
782
70
        for (size_t i = 0; i < n; ++i) {
783
50
            static_cast<Derived&>(*this).insert(x);
784
50
        }
785
20
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRKNS_5FieldEm
Line
Count
Source
781
20
    void insert_impl(const Field& x, const size_t n) {
782
70
        for (size_t i = 0; i < n; ++i) {
783
50
            static_cast<Derived&>(*this).insert(x);
784
50
        }
785
20
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEvRKNS_5FieldEm
Line
Count
Source
781
4
    void insert_impl(const Field& x, const size_t n) {
782
14
        for (size_t i = 0; i < n; ++i) {
783
10
            static_cast<Derived&>(*this).insert(x);
784
10
        }
785
4
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEvRKNS_5FieldEm
Line
Count
Source
781
4
    void insert_impl(const Field& x, const size_t n) {
782
14
        for (size_t i = 0; i < n; ++i) {
783
10
            static_cast<Derived&>(*this).insert(x);
784
10
        }
785
4
    }
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEvRKNS_5FieldEm
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRKNS_5FieldEm
Line
Count
Source
781
8
    void insert_impl(const Field& x, const size_t n) {
782
28
        for (size_t i = 0; i < n; ++i) {
783
20
            static_cast<Derived&>(*this).insert(x);
784
20
        }
785
8
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRKNS_5FieldEm
Line
Count
Source
781
8
    void insert_impl(const Field& x, const size_t n) {
782
28
        for (size_t i = 0; i < n; ++i) {
783
20
            static_cast<Derived&>(*this).insert(x);
784
20
        }
785
8
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRKNS_5FieldEm
Line
Count
Source
781
8
    void insert_impl(const Field& x, const size_t n) {
782
28
        for (size_t i = 0; i < n; ++i) {
783
20
            static_cast<Derived&>(*this).insert(x);
784
20
        }
785
8
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRKNS_5FieldEm
Line
Count
Source
781
8
    void insert_impl(const Field& x, const size_t n) {
782
28
        for (size_t i = 0; i < n; ++i) {
783
20
            static_cast<Derived&>(*this).insert(x);
784
20
        }
785
8
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEvRKNS_5FieldEm
Line
Count
Source
781
10
    void insert_impl(const Field& x, const size_t n) {
782
35
        for (size_t i = 0; i < n; ++i) {
783
25
            static_cast<Derived&>(*this).insert(x);
784
25
        }
785
10
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEvRKNS_5FieldEm
Line
Count
Source
781
12
    void insert_impl(const Field& x, const size_t n) {
782
42
        for (size_t i = 0; i < n; ++i) {
783
30
            static_cast<Derived&>(*this).insert(x);
784
30
        }
785
12
    }
_ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEvRKNS_5FieldEm
Line
Count
Source
781
10
    void insert_impl(const Field& x, const size_t n) {
782
35
        for (size_t i = 0; i < n; ++i) {
783
25
            static_cast<Derived&>(*this).insert(x);
784
25
        }
785
10
    }
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEvRKNS_5FieldEm
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEvRKNS_5FieldEm
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_23ColumnFixedLengthObjectEEEvRKNS_5FieldEm
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_14ColumnNullableEEEvRKNS_5FieldEm
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_11ColumnConstEEEvRKNS_5FieldEm
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_13ColumnNothingEEEvRKNS_5FieldEm
_ZN5doris7IColumn11insert_implINS_11ColumnArrayEEEvRKNS_5FieldEm
Line
Count
Source
781
5
    void insert_impl(const Field& x, const size_t n) {
782
17
        for (size_t i = 0; i < n; ++i) {
783
12
            static_cast<Derived&>(*this).insert(x);
784
12
        }
785
5
    }
_ZN5doris7IColumn11insert_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRKNS_5FieldEm
Line
Count
Source
781
6
    void insert_impl(const Field& x, const size_t n) {
782
21
        for (size_t i = 0; i < n; ++i) {
783
15
            static_cast<Derived&>(*this).insert(x);
784
15
        }
785
6
    }
_ZN5doris7IColumn11insert_implINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRKNS_5FieldEm
Line
Count
Source
781
6
    void insert_impl(const Field& x, const size_t n) {
782
21
        for (size_t i = 0; i < n; ++i) {
783
15
            static_cast<Derived&>(*this).insert(x);
784
15
        }
785
6
    }
_ZN5doris7IColumn11insert_implINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRKNS_5FieldEm
Line
Count
Source
781
6
    void insert_impl(const Field& x, const size_t n) {
782
21
        for (size_t i = 0; i < n; ++i) {
783
15
            static_cast<Derived&>(*this).insert(x);
784
15
        }
785
6
    }
_ZN5doris7IColumn11insert_implINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRKNS_5FieldEm
Line
Count
Source
781
6
    void insert_impl(const Field& x, const size_t n) {
782
21
        for (size_t i = 0; i < n; ++i) {
783
15
            static_cast<Derived&>(*this).insert(x);
784
15
        }
785
6
    }
_ZN5doris7IColumn11insert_implINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRKNS_5FieldEm
Line
Count
Source
781
6
    void insert_impl(const Field& x, const size_t n) {
782
21
        for (size_t i = 0; i < n; ++i) {
783
15
            static_cast<Derived&>(*this).insert(x);
784
15
        }
785
6
    }
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_15ColumnVarbinaryEEEvRKNS_5FieldEm
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_13ColumnDictI32EEEvRKNS_5FieldEm
Unexecuted instantiation: block_test.cpp:_ZN5doris7IColumn11insert_implINS_12_GLOBAL__N_118ThrowOnCloneColumnEEEvRKNS_5FieldEm
_ZN5doris7IColumn11insert_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEvRKNS_5FieldEm
Line
Count
Source
781
2
    void insert_impl(const Field& x, const size_t n) {
782
7
        for (size_t i = 0; i < n; ++i) {
783
5
            static_cast<Derived&>(*this).insert(x);
784
5
        }
785
2
    }
_ZN5doris7IColumn11insert_implINS_15ColumnVariantV2EEEvRKNS_5FieldEm
Line
Count
Source
781
3
    void insert_impl(const Field& x, const size_t n) {
782
10
        for (size_t i = 0; i < n; ++i) {
783
7
            static_cast<Derived&>(*this).insert(x);
784
7
        }
785
3
    }
_ZN5doris7IColumn11insert_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEvRKNS_5FieldEm
Line
Count
Source
781
2
    void insert_impl(const Field& x, const size_t n) {
782
7
        for (size_t i = 0; i < n; ++i) {
783
5
            static_cast<Derived&>(*this).insert(x);
784
5
        }
785
2
    }
_ZN5doris7IColumn11insert_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEvRKNS_5FieldEm
Line
Count
Source
781
2
    void insert_impl(const Field& x, const size_t n) {
782
7
        for (size_t i = 0; i < n; ++i) {
783
5
            static_cast<Derived&>(*this).insert(x);
784
5
        }
785
2
    }
_ZN5doris7IColumn11insert_implINS_12ColumnStructEEEvRKNS_5FieldEm
Line
Count
Source
781
3
    void insert_impl(const Field& x, const size_t n) {
782
10
        for (size_t i = 0; i < n; ++i) {
783
7
            static_cast<Derived&>(*this).insert(x);
784
7
        }
785
3
    }
_ZN5doris7IColumn11insert_implINS_9ColumnMapEEEvRKNS_5FieldEm
Line
Count
Source
781
10
    void insert_impl(const Field& x, const size_t n) {
782
4.03k
        for (size_t i = 0; i < n; ++i) {
783
4.02k
            static_cast<Derived&>(*this).insert(x);
784
4.02k
        }
785
10
    }
Unexecuted instantiation: column_struct_test.cpp:_ZN5doris7IColumn11insert_implINS_12_GLOBAL__N_118HashCountingColumnEEEvRKNS_5FieldEm
Unexecuted instantiation: _ZN5doris7IColumn11insert_implINS_13ColumnSpatialEEEvRKNS_5FieldEm
Unexecuted instantiation: analytic_sink_operator_test.cpp:_ZN5doris7IColumn11insert_implINS_12_GLOBAL__N_129AnalyticCompareCountingColumnEEEvRKNS_5FieldEm
Unexecuted instantiation: block_reader_change_next_block_test.cpp:_ZN5doris7IColumn11insert_implINS_12_GLOBAL__N_120ThrowOnCompareColumnEEEvRKNS_5FieldEm
786
    template <typename Derived>
787
    void append_data_by_selector_impl(MutablePtr& res, const Selector& selector, size_t begin,
788
636
                                      size_t end) const {
789
636
        size_t num_rows = size();
790
791
636
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
636
        DCHECK_GE(end, begin);
797
636
        DCHECK_LE(end, selector.size());
798
636
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
636
    }
_ZNK5doris7IColumn28append_data_by_selector_implINS_9ColumnStrIjEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Line
Count
Source
788
1
                                      size_t end) const {
789
1
        size_t num_rows = size();
790
791
1
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
1
        DCHECK_GE(end, begin);
797
        DCHECK_LE(end, selector.size());
798
1
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
1
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_9ColumnStrImEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
_ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Line
Count
Source
788
61
                                      size_t end) const {
789
61
        size_t num_rows = size();
790
791
61
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
61
        DCHECK_GE(end, begin);
797
        DCHECK_LE(end, selector.size());
798
61
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
61
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
_ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Line
Count
Source
788
17
                                      size_t end) const {
789
17
        size_t num_rows = size();
790
791
17
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
17
        DCHECK_GE(end, begin);
797
        DCHECK_LE(end, selector.size());
798
17
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
17
    }
_ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Line
Count
Source
788
507
                                      size_t end) const {
789
507
        size_t num_rows = size();
790
791
507
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
507
        DCHECK_GE(end, begin);
797
        DCHECK_LE(end, selector.size());
798
507
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
507
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
_ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Line
Count
Source
788
1
                                      size_t end) const {
789
1
        size_t num_rows = size();
790
791
1
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
1
        DCHECK_GE(end, begin);
797
        DCHECK_LE(end, selector.size());
798
1
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
1
    }
_ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Line
Count
Source
788
1
                                      size_t end) const {
789
1
        size_t num_rows = size();
790
791
1
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
1
        DCHECK_GE(end, begin);
797
        DCHECK_LE(end, selector.size());
798
1
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
1
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_23ColumnFixedLengthObjectEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_14ColumnNullableEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_11ColumnConstEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnNothingEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
_ZNK5doris7IColumn28append_data_by_selector_implINS_11ColumnArrayEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Line
Count
Source
788
47
                                      size_t end) const {
789
47
        size_t num_rows = size();
790
791
47
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
47
        DCHECK_GE(end, begin);
797
        DCHECK_LE(end, selector.size());
798
47
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
47
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_15ColumnVarbinaryEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnDictI32EEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: block_test.cpp:_ZNK5doris7IColumn28append_data_by_selector_implINS_12_GLOBAL__N_118ThrowOnCloneColumnEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
_ZNK5doris7IColumn28append_data_by_selector_implINS_15ColumnVariantV2EEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Line
Count
Source
788
1
                                      size_t end) const {
789
1
        size_t num_rows = size();
790
791
1
        if (num_rows < selector.size()) {
792
0
            throw doris::Exception(ErrorCode::INTERNAL_ERROR,
793
0
                                   "Size of selector: {} is larger than size of column: {}",
794
0
                                   selector.size(), num_rows);
795
0
        }
796
1
        DCHECK_GE(end, begin);
797
        DCHECK_LE(end, selector.size());
798
1
        static_cast<Derived&>(*res).insert_indices_from(*this, &selector[begin], &selector[end]);
799
1
    }
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_12ColumnStructEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_9ColumnMapEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: column_struct_test.cpp:_ZNK5doris7IColumn28append_data_by_selector_implINS_12_GLOBAL__N_118HashCountingColumnEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: _ZNK5doris7IColumn28append_data_by_selector_implINS_13ColumnSpatialEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: analytic_sink_operator_test.cpp:_ZNK5doris7IColumn28append_data_by_selector_implINS_12_GLOBAL__N_129AnalyticCompareCountingColumnEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
Unexecuted instantiation: block_reader_change_next_block_test.cpp:_ZNK5doris7IColumn28append_data_by_selector_implINS_12_GLOBAL__N_120ThrowOnCompareColumnEEEvRNS_3COWIS0_E11mutable_ptrIS0_EERKNS_8PODArrayIjLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEmm
800
    template <typename Derived>
801
    void insert_from_multi_column_impl(const std::vector<const IColumn*>& srcs,
802
137
                                       const std::vector<size_t>& positions) {
803
137
        reserve(size() + srcs.size());
804
574
        for (size_t i = 0; i < srcs.size(); ++i) {
805
437
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
806
437
        }
807
137
    }
_ZN5doris7IColumn29insert_from_multi_column_implINS_9ColumnStrIjEEEEvRKSt6vectorIPKS0_SaIS6_EERKS4_ImSaImEE
Line
Count
Source
802
3
                                       const std::vector<size_t>& positions) {
803
3
        reserve(size() + srcs.size());
804
7
        for (size_t i = 0; i < srcs.size(); ++i) {
805
4
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
806
4
        }
807
3
    }
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_9ColumnStrImEEEEvRKSt6vectorIPKS0_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
_ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Line
Count
Source
802
26
                                       const std::vector<size_t>& positions) {
803
26
        reserve(size() + srcs.size());
804
130
        for (size_t i = 0; i < srcs.size(); ++i) {
805
104
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
806
104
        }
807
26
    }
_ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Line
Count
Source
802
39
                                       const std::vector<size_t>& positions) {
803
39
        reserve(size() + srcs.size());
804
155
        for (size_t i = 0; i < srcs.size(); ++i) {
805
116
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
806
116
        }
807
39
    }
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_23ColumnFixedLengthObjectEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
_ZN5doris7IColumn29insert_from_multi_column_implINS_14ColumnNullableEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Line
Count
Source
802
65
                                       const std::vector<size_t>& positions) {
803
65
        reserve(size() + srcs.size());
804
268
        for (size_t i = 0; i < srcs.size(); ++i) {
805
203
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
806
203
        }
807
65
    }
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_11ColumnConstEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_13ColumnNothingEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_11ColumnArrayEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_15ColumnVarbinaryEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_13ColumnDictI32EEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Unexecuted instantiation: block_test.cpp:_ZN5doris7IColumn29insert_from_multi_column_implINS_12_GLOBAL__N_118ThrowOnCloneColumnEEEvRKSt6vectorIPKS0_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
_ZN5doris7IColumn29insert_from_multi_column_implINS_15ColumnVariantV2EEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Line
Count
Source
802
4
                                       const std::vector<size_t>& positions) {
803
4
        reserve(size() + srcs.size());
804
14
        for (size_t i = 0; i < srcs.size(); ++i) {
805
10
            static_cast<Derived&>(*this).insert_from(*srcs[i], positions[i]);
806
10
        }
807
4
    }
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEvRKSt6vectorIPKS0_SaIS7_EERKS5_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_12ColumnStructEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_9ColumnMapEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Unexecuted instantiation: column_struct_test.cpp:_ZN5doris7IColumn29insert_from_multi_column_implINS_12_GLOBAL__N_118HashCountingColumnEEEvRKSt6vectorIPKS0_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: _ZN5doris7IColumn29insert_from_multi_column_implINS_13ColumnSpatialEEEvRKSt6vectorIPKS0_SaIS5_EERKS3_ImSaImEE
Unexecuted instantiation: analytic_sink_operator_test.cpp:_ZN5doris7IColumn29insert_from_multi_column_implINS_12_GLOBAL__N_129AnalyticCompareCountingColumnEEEvRKSt6vectorIPKS0_SaIS6_EERKS4_ImSaImEE
Unexecuted instantiation: block_reader_change_next_block_test.cpp:_ZN5doris7IColumn29insert_from_multi_column_implINS_12_GLOBAL__N_120ThrowOnCompareColumnEEEvRKSt6vectorIPKS0_SaIS6_EERKS4_ImSaImEE
808
809
    // Used to check nested const occurrences; const is only allowed at the top level.
810
    // e.g. const(nullable(...)) is allowed.
811
    // const(array(const(...))) is not allowed.
812
    void check_const_only_in_top_level() const;
813
};
814
815
using ColumnPtr = IColumn::Ptr;
816
using MutableColumnPtr = IColumn::MutablePtr;
817
using Columns = std::vector<ColumnPtr>;
818
using MutableColumns = std::vector<MutableColumnPtr>;
819
using ColumnPtrs = std::vector<ColumnPtr>;
820
using ColumnRawPtrs = std::vector<const IColumn*>;
821
822
template <typename... Args>
823
struct IsMutableColumns;
824
825
template <typename Arg, typename... Args>
826
struct IsMutableColumns<Arg, Args...> {
827
    static const bool value =
828
            std::is_assignable<MutableColumnPtr&&, Arg>::value && IsMutableColumns<Args...>::value;
829
};
830
831
template <>
832
struct IsMutableColumns<> {
833
    static const bool value = true;
834
};
835
836
// prefer assert_cast than check_and_get
837
template <typename Type>
838
3.47M
const Type* check_and_get_column(const IColumn& column) {
839
3.47M
    return typeid_cast<const Type*>(&column);
840
3.47M
}
_ZN5doris20check_and_get_columnINS_11ColumnArrayEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
2.51k
const Type* check_and_get_column(const IColumn& column) {
839
2.51k
    return typeid_cast<const Type*>(&column);
840
2.51k
}
_ZN5doris20check_and_get_columnINS_23ColumnFixedLengthObjectEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
136
const Type* check_and_get_column(const IColumn& column) {
839
136
    return typeid_cast<const Type*>(&column);
840
136
}
_ZN5doris20check_and_get_columnINS_9ColumnStrIjEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
75.8k
const Type* check_and_get_column(const IColumn& column) {
839
75.8k
    return typeid_cast<const Type*>(&column);
840
75.8k
}
_ZN5doris20check_and_get_columnINS_14ColumnNullableEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
1.01M
const Type* check_and_get_column(const IColumn& column) {
839
1.01M
    return typeid_cast<const Type*>(&column);
840
1.01M
}
_ZN5doris20check_and_get_columnINS_11ColumnConstEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
276k
const Type* check_and_get_column(const IColumn& column) {
839
276k
    return typeid_cast<const Type*>(&column);
840
276k
}
_ZN5doris20check_and_get_columnIKNS_14ColumnNullableEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
1.11k
const Type* check_and_get_column(const IColumn& column) {
839
1.11k
    return typeid_cast<const Type*>(&column);
840
1.11k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
42.0k
const Type* check_and_get_column(const IColumn& column) {
839
42.0k
    return typeid_cast<const Type*>(&column);
840
42.0k
}
_ZN5doris20check_and_get_columnINS_12ColumnStructEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
5.25k
const Type* check_and_get_column(const IColumn& column) {
839
5.25k
    return typeid_cast<const Type*>(&column);
840
5.25k
}
_ZN5doris20check_and_get_columnINS_15ColumnVarbinaryEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
804
const Type* check_and_get_column(const IColumn& column) {
839
804
    return typeid_cast<const Type*>(&column);
840
804
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
16.1k
const Type* check_and_get_column(const IColumn& column) {
839
16.1k
    return typeid_cast<const Type*>(&column);
840
16.1k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
1.69M
const Type* check_and_get_column(const IColumn& column) {
839
1.69M
    return typeid_cast<const Type*>(&column);
840
1.69M
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
16.5k
const Type* check_and_get_column(const IColumn& column) {
839
16.5k
    return typeid_cast<const Type*>(&column);
840
16.5k
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
890
const Type* check_and_get_column(const IColumn& column) {
839
890
    return typeid_cast<const Type*>(&column);
840
890
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
63.4k
const Type* check_and_get_column(const IColumn& column) {
839
63.4k
    return typeid_cast<const Type*>(&column);
840
63.4k
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
564
const Type* check_and_get_column(const IColumn& column) {
839
564
    return typeid_cast<const Type*>(&column);
840
564
}
_ZN5doris20check_and_get_columnINS_15ColumnVariantV2EEEPKT_RKNS_7IColumnE
Line
Count
Source
838
40.2k
const Type* check_and_get_column(const IColumn& column) {
839
40.2k
    return typeid_cast<const Type*>(&column);
840
40.2k
}
_ZN5doris20check_and_get_columnINS_13ColumnSpatialEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
72
const Type* check_and_get_column(const IColumn& column) {
839
72
    return typeid_cast<const Type*>(&column);
840
72
}
_ZN5doris20check_and_get_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
2.73k
const Type* check_and_get_column(const IColumn& column) {
839
2.73k
    return typeid_cast<const Type*>(&column);
840
2.73k
}
_ZN5doris20check_and_get_columnINS_9ColumnMapEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
1.38k
const Type* check_and_get_column(const IColumn& column) {
839
1.38k
    return typeid_cast<const Type*>(&column);
840
1.38k
}
_ZN5doris20check_and_get_columnINS_13ColumnNothingEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
38
const Type* check_and_get_column(const IColumn& column) {
839
38
    return typeid_cast<const Type*>(&column);
840
38
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
19.6k
const Type* check_and_get_column(const IColumn& column) {
839
19.6k
    return typeid_cast<const Type*>(&column);
840
19.6k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
16.1k
const Type* check_and_get_column(const IColumn& column) {
839
16.1k
    return typeid_cast<const Type*>(&column);
840
16.1k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
28.5k
const Type* check_and_get_column(const IColumn& column) {
839
28.5k
    return typeid_cast<const Type*>(&column);
840
28.5k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
15.7k
const Type* check_and_get_column(const IColumn& column) {
839
15.7k
    return typeid_cast<const Type*>(&column);
840
15.7k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
15.9k
const Type* check_and_get_column(const IColumn& column) {
839
15.9k
    return typeid_cast<const Type*>(&column);
840
15.9k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
15.7k
const Type* check_and_get_column(const IColumn& column) {
839
15.7k
    return typeid_cast<const Type*>(&column);
840
15.7k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
15.9k
const Type* check_and_get_column(const IColumn& column) {
839
15.9k
    return typeid_cast<const Type*>(&column);
840
15.9k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
15.7k
const Type* check_and_get_column(const IColumn& column) {
839
15.7k
    return typeid_cast<const Type*>(&column);
840
15.7k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
15.8k
const Type* check_and_get_column(const IColumn& column) {
839
15.8k
    return typeid_cast<const Type*>(&column);
840
15.8k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
119
const Type* check_and_get_column(const IColumn& column) {
839
119
    return typeid_cast<const Type*>(&column);
840
119
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
15.7k
const Type* check_and_get_column(const IColumn& column) {
839
15.7k
    return typeid_cast<const Type*>(&column);
840
15.7k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
15.7k
const Type* check_and_get_column(const IColumn& column) {
839
15.7k
    return typeid_cast<const Type*>(&column);
840
15.7k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
365
const Type* check_and_get_column(const IColumn& column) {
839
365
    return typeid_cast<const Type*>(&column);
840
365
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
17.2k
const Type* check_and_get_column(const IColumn& column) {
839
17.2k
    return typeid_cast<const Type*>(&column);
840
17.2k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
92
const Type* check_and_get_column(const IColumn& column) {
839
92
    return typeid_cast<const Type*>(&column);
840
92
}
Unexecuted instantiation: _ZN5doris20check_and_get_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEPKT_RKNS_7IColumnE
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
16
const Type* check_and_get_column(const IColumn& column) {
839
16
    return typeid_cast<const Type*>(&column);
840
16
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
7.03k
const Type* check_and_get_column(const IColumn& column) {
839
7.03k
    return typeid_cast<const Type*>(&column);
840
7.03k
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEPKT_RKNS_7IColumnE
Line
Count
Source
838
269
const Type* check_and_get_column(const IColumn& column) {
839
269
    return typeid_cast<const Type*>(&column);
840
269
}
Unexecuted instantiation: _ZN5doris20check_and_get_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEPKT_RKNS_7IColumnE
Unexecuted instantiation: _ZN5doris20check_and_get_columnIKNS_11ColumnConstEEEPKT_RKNS_7IColumnE
841
842
template <typename Type>
843
105k
Type* check_and_get_column(IColumn& column) {
844
105k
    return typeid_cast<Type*>(&column);
845
105k
}
_ZN5doris20check_and_get_columnINS_14ColumnNullableEEEPT_RNS_7IColumnE
Line
Count
Source
843
4.47k
Type* check_and_get_column(IColumn& column) {
844
4.47k
    return typeid_cast<Type*>(&column);
845
4.47k
}
_ZN5doris20check_and_get_columnINS_11ColumnArrayEEEPT_RNS_7IColumnE
Line
Count
Source
843
1.07k
Type* check_and_get_column(IColumn& column) {
844
1.07k
    return typeid_cast<Type*>(&column);
845
1.07k
}
_ZN5doris20check_and_get_columnINS_23ColumnFixedLengthObjectEEEPT_RNS_7IColumnE
Line
Count
Source
843
335
Type* check_and_get_column(IColumn& column) {
844
335
    return typeid_cast<Type*>(&column);
845
335
}
_ZN5doris20check_and_get_columnINS_15ColumnVariantV2EEEPT_RNS_7IColumnE
Line
Count
Source
843
95.5k
Type* check_and_get_column(IColumn& column) {
844
95.5k
    return typeid_cast<Type*>(&column);
845
95.5k
}
_ZN5doris20check_and_get_columnINS_12ColumnStructEEEPT_RNS_7IColumnE
Line
Count
Source
843
2.07k
Type* check_and_get_column(IColumn& column) {
844
2.07k
    return typeid_cast<Type*>(&column);
845
2.07k
}
_ZN5doris20check_and_get_columnINS_9ColumnMapEEEPT_RNS_7IColumnE
Line
Count
Source
843
1.05k
Type* check_and_get_column(IColumn& column) {
844
1.05k
    return typeid_cast<Type*>(&column);
845
1.05k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
243
Type* check_and_get_column(IColumn& column) {
844
243
    return typeid_cast<Type*>(&column);
845
243
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
42
Type* check_and_get_column(IColumn& column) {
844
42
    return typeid_cast<Type*>(&column);
845
42
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
42
Type* check_and_get_column(IColumn& column) {
844
42
    return typeid_cast<Type*>(&column);
845
42
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
42
Type* check_and_get_column(IColumn& column) {
844
42
    return typeid_cast<Type*>(&column);
845
42
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
21
Type* check_and_get_column(IColumn& column) {
844
21
    return typeid_cast<Type*>(&column);
845
21
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
19
Type* check_and_get_column(IColumn& column) {
844
19
    return typeid_cast<Type*>(&column);
845
19
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
19
Type* check_and_get_column(IColumn& column) {
844
19
    return typeid_cast<Type*>(&column);
845
19
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
18
Type* check_and_get_column(IColumn& column) {
844
18
    return typeid_cast<Type*>(&column);
845
18
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
17
Type* check_and_get_column(IColumn& column) {
844
17
    return typeid_cast<Type*>(&column);
845
17
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
17
Type* check_and_get_column(IColumn& column) {
844
17
    return typeid_cast<Type*>(&column);
845
17
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
17
Type* check_and_get_column(IColumn& column) {
844
17
    return typeid_cast<Type*>(&column);
845
17
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
17
Type* check_and_get_column(IColumn& column) {
844
17
    return typeid_cast<Type*>(&column);
845
17
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEPT_RNS_7IColumnE
Line
Count
Source
843
16
Type* check_and_get_column(IColumn& column) {
844
16
    return typeid_cast<Type*>(&column);
845
16
}
_ZN5doris20check_and_get_columnINS_9ColumnStrIjEEEEPT_RNS_7IColumnE
Line
Count
Source
843
2
Type* check_and_get_column(IColumn& column) {
844
2
    return typeid_cast<Type*>(&column);
845
2
}
_ZN5doris20check_and_get_columnINS_13ColumnNothingEEEPT_RNS_7IColumnE
Line
Count
Source
843
24
Type* check_and_get_column(IColumn& column) {
844
24
    return typeid_cast<Type*>(&column);
845
24
}
846
847
template <typename Type>
848
79.5M
const Type* check_and_get_column(const IColumn* column) {
849
79.5M
    return typeid_cast<const Type*>(column);
850
79.5M
}
_ZN5doris20check_and_get_columnINS_14ColumnNullableEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
1.69M
const Type* check_and_get_column(const IColumn* column) {
849
1.69M
    return typeid_cast<const Type*>(column);
850
1.69M
}
_ZN5doris20check_and_get_columnINS_11ColumnConstEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
77.2M
const Type* check_and_get_column(const IColumn* column) {
849
77.2M
    return typeid_cast<const Type*>(column);
850
77.2M
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
479
const Type* check_and_get_column(const IColumn* column) {
849
479
    return typeid_cast<const Type*>(column);
850
479
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
600
const Type* check_and_get_column(const IColumn* column) {
849
600
    return typeid_cast<const Type*>(column);
850
600
}
_ZN5doris20check_and_get_columnINS_9ColumnStrIjEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
50.9k
const Type* check_and_get_column(const IColumn* column) {
849
50.9k
    return typeid_cast<const Type*>(column);
850
50.9k
}
_ZN5doris20check_and_get_columnINS_11ColumnArrayEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
2.15k
const Type* check_and_get_column(const IColumn* column) {
849
2.15k
    return typeid_cast<const Type*>(column);
850
2.15k
}
_ZN5doris20check_and_get_columnINS_9ColumnStrImEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
43
const Type* check_and_get_column(const IColumn* column) {
849
43
    return typeid_cast<const Type*>(column);
850
43
}
Unexecuted instantiation: _ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEPKT_PKNS_7IColumnE
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
200
const Type* check_and_get_column(const IColumn* column) {
849
200
    return typeid_cast<const Type*>(column);
850
200
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
240
const Type* check_and_get_column(const IColumn* column) {
849
240
    return typeid_cast<const Type*>(column);
850
240
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
190
const Type* check_and_get_column(const IColumn* column) {
849
190
    return typeid_cast<const Type*>(column);
850
190
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
153
const Type* check_and_get_column(const IColumn* column) {
849
153
    return typeid_cast<const Type*>(column);
850
153
}
_ZN5doris20check_and_get_columnINS_15ColumnVariantV2EEEPKT_PKNS_7IColumnE
Line
Count
Source
848
118
const Type* check_and_get_column(const IColumn* column) {
849
118
    return typeid_cast<const Type*>(column);
850
118
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
740
const Type* check_and_get_column(const IColumn* column) {
849
740
    return typeid_cast<const Type*>(column);
850
740
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
1.21k
const Type* check_and_get_column(const IColumn* column) {
849
1.21k
    return typeid_cast<const Type*>(column);
850
1.21k
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
680
const Type* check_and_get_column(const IColumn* column) {
849
680
    return typeid_cast<const Type*>(column);
850
680
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
1.36k
const Type* check_and_get_column(const IColumn* column) {
849
1.36k
    return typeid_cast<const Type*>(column);
850
1.36k
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
1.48k
const Type* check_and_get_column(const IColumn* column) {
849
1.48k
    return typeid_cast<const Type*>(column);
850
1.48k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
296
const Type* check_and_get_column(const IColumn* column) {
849
296
    return typeid_cast<const Type*>(column);
850
296
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
2.91k
const Type* check_and_get_column(const IColumn* column) {
849
2.91k
    return typeid_cast<const Type*>(column);
850
2.91k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
378
const Type* check_and_get_column(const IColumn* column) {
849
378
    return typeid_cast<const Type*>(column);
850
378
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
235
const Type* check_and_get_column(const IColumn* column) {
849
235
    return typeid_cast<const Type*>(column);
850
235
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
704
const Type* check_and_get_column(const IColumn* column) {
849
704
    return typeid_cast<const Type*>(column);
850
704
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
721
const Type* check_and_get_column(const IColumn* column) {
849
721
    return typeid_cast<const Type*>(column);
850
721
}
_ZN5doris20check_and_get_columnINS_13ColumnNothingEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
470k
const Type* check_and_get_column(const IColumn* column) {
849
470k
    return typeid_cast<const Type*>(column);
850
470k
}
_ZN5doris20check_and_get_columnINS_12ColumnStructEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
165
const Type* check_and_get_column(const IColumn* column) {
849
165
    return typeid_cast<const Type*>(column);
850
165
}
_ZN5doris20check_and_get_columnINS_13ColumnSpatialEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
14.6k
const Type* check_and_get_column(const IColumn* column) {
849
14.6k
    return typeid_cast<const Type*>(column);
850
14.6k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
21.9k
const Type* check_and_get_column(const IColumn* column) {
849
21.9k
    return typeid_cast<const Type*>(column);
850
21.9k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
178
const Type* check_and_get_column(const IColumn* column) {
849
178
    return typeid_cast<const Type*>(column);
850
178
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
166
const Type* check_and_get_column(const IColumn* column) {
849
166
    return typeid_cast<const Type*>(column);
850
166
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
1.07k
const Type* check_and_get_column(const IColumn* column) {
849
1.07k
    return typeid_cast<const Type*>(column);
850
1.07k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
151
const Type* check_and_get_column(const IColumn* column) {
849
151
    return typeid_cast<const Type*>(column);
850
151
}
_ZN5doris20check_and_get_columnINS_9ColumnMapEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
29
const Type* check_and_get_column(const IColumn* column) {
849
29
    return typeid_cast<const Type*>(column);
850
29
}
_ZN5doris20check_and_get_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
245
const Type* check_and_get_column(const IColumn* column) {
849
245
    return typeid_cast<const Type*>(column);
850
245
}
_ZN5doris20check_and_get_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
230
const Type* check_and_get_column(const IColumn* column) {
849
230
    return typeid_cast<const Type*>(column);
850
230
}
_ZN5doris20check_and_get_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
226
const Type* check_and_get_column(const IColumn* column) {
849
226
    return typeid_cast<const Type*>(column);
850
226
}
_ZN5doris20check_and_get_columnINS_15ColumnVarbinaryEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
644
const Type* check_and_get_column(const IColumn* column) {
849
644
    return typeid_cast<const Type*>(column);
850
644
}
_ZN5doris20check_and_get_columnINS_23ColumnFixedLengthObjectEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
219
const Type* check_and_get_column(const IColumn* column) {
849
219
    return typeid_cast<const Type*>(column);
850
219
}
Unexecuted instantiation: _ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEPKT_PKNS_7IColumnE
_ZN5doris20check_and_get_columnIKNS_14ColumnNullableEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
39
const Type* check_and_get_column(const IColumn* column) {
849
39
    return typeid_cast<const Type*>(column);
850
39
}
_ZN5doris20check_and_get_columnINS_13ColumnDictI32EEEPKT_PKNS_7IColumnE
Line
Count
Source
848
2
const Type* check_and_get_column(const IColumn* column) {
849
2
    return typeid_cast<const Type*>(column);
850
2
}
_ZN5doris20check_and_get_columnIKNS_13ColumnNothingEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
30.1k
const Type* check_and_get_column(const IColumn* column) {
849
30.1k
    return typeid_cast<const Type*>(column);
850
30.1k
}
_ZN5doris20check_and_get_columnIKNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEPKT_PKNS_7IColumnE
Line
Count
Source
848
2
const Type* check_and_get_column(const IColumn* column) {
849
2
    return typeid_cast<const Type*>(column);
850
2
}
851
852
template <typename Type>
853
98.7k
Type* check_and_get_column(IColumn* column) {
854
98.7k
    return typeid_cast<Type*>(column);
855
98.7k
}
_ZN5doris20check_and_get_columnINS_14ColumnNullableEEEPT_PNS_7IColumnE
Line
Count
Source
853
45.5k
Type* check_and_get_column(IColumn* column) {
854
45.5k
    return typeid_cast<Type*>(column);
855
45.5k
}
_ZN5doris20check_and_get_columnINS_11ColumnConstEEEPT_PNS_7IColumnE
Line
Count
Source
853
7
Type* check_and_get_column(IColumn* column) {
854
7
    return typeid_cast<Type*>(column);
855
7
}
_ZN5doris20check_and_get_columnINS_9ColumnMapEEEPT_PNS_7IColumnE
Line
Count
Source
853
281
Type* check_and_get_column(IColumn* column) {
854
281
    return typeid_cast<Type*>(column);
855
281
}
_ZN5doris20check_and_get_columnINS_9ColumnStrIjEEEEPT_PNS_7IColumnE
Line
Count
Source
853
22
Type* check_and_get_column(IColumn* column) {
854
22
    return typeid_cast<Type*>(column);
855
22
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
475
Type* check_and_get_column(IColumn* column) {
854
475
    return typeid_cast<Type*>(column);
855
475
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
261
Type* check_and_get_column(IColumn* column) {
854
261
    return typeid_cast<Type*>(column);
855
261
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
256
Type* check_and_get_column(IColumn* column) {
854
256
    return typeid_cast<Type*>(column);
855
256
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
247
Type* check_and_get_column(IColumn* column) {
854
247
    return typeid_cast<Type*>(column);
855
247
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
18.3k
Type* check_and_get_column(IColumn* column) {
854
18.3k
    return typeid_cast<Type*>(column);
855
18.3k
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
209
Type* check_and_get_column(IColumn* column) {
854
209
    return typeid_cast<Type*>(column);
855
209
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
203
Type* check_and_get_column(IColumn* column) {
854
203
    return typeid_cast<Type*>(column);
855
203
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
198
Type* check_and_get_column(IColumn* column) {
854
198
    return typeid_cast<Type*>(column);
855
198
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
192
Type* check_and_get_column(IColumn* column) {
854
192
    return typeid_cast<Type*>(column);
855
192
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
186
Type* check_and_get_column(IColumn* column) {
854
186
    return typeid_cast<Type*>(column);
855
186
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
203
Type* check_and_get_column(IColumn* column) {
854
203
    return typeid_cast<Type*>(column);
855
203
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
167
Type* check_and_get_column(IColumn* column) {
854
167
    return typeid_cast<Type*>(column);
855
167
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
167
Type* check_and_get_column(IColumn* column) {
854
167
    return typeid_cast<Type*>(column);
855
167
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
167
Type* check_and_get_column(IColumn* column) {
854
167
    return typeid_cast<Type*>(column);
855
167
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
167
Type* check_and_get_column(IColumn* column) {
854
167
    return typeid_cast<Type*>(column);
855
167
}
_ZN5doris20check_and_get_columnINS_15ColumnVariantV2EEEPT_PNS_7IColumnE
Line
Count
Source
853
1.11k
Type* check_and_get_column(IColumn* column) {
854
1.11k
    return typeid_cast<Type*>(column);
855
1.11k
}
_ZN5doris20check_and_get_columnINS_12ColumnStructEEEPT_PNS_7IColumnE
Line
Count
Source
853
1
Type* check_and_get_column(IColumn* column) {
854
1
    return typeid_cast<Type*>(column);
855
1
}
Unexecuted instantiation: _ZN5doris20check_and_get_columnINS_13ColumnNothingEEEPT_PNS_7IColumnE
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
25
Type* check_and_get_column(IColumn* column) {
854
25
    return typeid_cast<Type*>(column);
855
25
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
21
Type* check_and_get_column(IColumn* column) {
854
21
    return typeid_cast<Type*>(column);
855
21
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
21
Type* check_and_get_column(IColumn* column) {
854
21
    return typeid_cast<Type*>(column);
855
21
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE38EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
17
Type* check_and_get_column(IColumn* column) {
854
17
    return typeid_cast<Type*>(column);
855
17
}
_ZN5doris20check_and_get_columnINS_12ColumnVectorILNS_13PrimitiveTypeE39EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
17
Type* check_and_get_column(IColumn* column) {
854
17
    return typeid_cast<Type*>(column);
855
17
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
17
Type* check_and_get_column(IColumn* column) {
854
17
    return typeid_cast<Type*>(column);
855
17
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
15
Type* check_and_get_column(IColumn* column) {
854
15
    return typeid_cast<Type*>(column);
855
15
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
15
Type* check_and_get_column(IColumn* column) {
854
15
    return typeid_cast<Type*>(column);
855
15
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
15
Type* check_and_get_column(IColumn* column) {
854
15
    return typeid_cast<Type*>(column);
855
15
}
_ZN5doris20check_and_get_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEPT_PNS_7IColumnE
Line
Count
Source
853
15
Type* check_and_get_column(IColumn* column) {
854
15
    return typeid_cast<Type*>(column);
855
15
}
Unexecuted instantiation: _ZN5doris20check_and_get_columnINS_9ColumnStrImEEEEPT_PNS_7IColumnE
Unexecuted instantiation: _ZN5doris20check_and_get_columnINS_15ColumnVarbinaryEEEPT_PNS_7IColumnE
Unexecuted instantiation: _ZN5doris20check_and_get_columnINS_13ColumnDictI32EEEPT_PNS_7IColumnE
_ZN5doris20check_and_get_columnIKNS_13ColumnNothingEEEPT_PNS_7IColumnE
Line
Count
Source
853
30.1k
Type* check_and_get_column(IColumn* column) {
854
30.1k
    return typeid_cast<Type*>(column);
855
30.1k
}
856
857
template <typename Type>
858
76.6M
bool is_column(const IColumn& column) {
859
76.6M
    return check_and_get_column<Type>(&column);
860
76.6M
}
_ZN5doris9is_columnINS_9ColumnStrIjEEEEbRKNS_7IColumnE
Line
Count
Source
858
129
bool is_column(const IColumn& column) {
859
129
    return check_and_get_column<Type>(&column);
860
129
}
_ZN5doris9is_columnINS_11ColumnConstEEEbRKNS_7IColumnE
Line
Count
Source
858
76.0M
bool is_column(const IColumn& column) {
859
76.0M
    return check_and_get_column<Type>(&column);
860
76.0M
}
_ZN5doris9is_columnINS_9ColumnStrImEEEEbRKNS_7IColumnE
Line
Count
Source
858
43
bool is_column(const IColumn& column) {
859
43
    return check_and_get_column<Type>(&column);
860
43
}
_ZN5doris9is_columnINS_14ColumnNullableEEEbRKNS_7IColumnE
Line
Count
Source
858
614k
bool is_column(const IColumn& column) {
859
614k
    return check_and_get_column<Type>(&column);
860
614k
}
_ZN5doris9is_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEEbRKNS_7IColumnE
Line
Count
Source
858
236
bool is_column(const IColumn& column) {
859
236
    return check_and_get_column<Type>(&column);
860
236
}
_ZN5doris9is_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEEbRKNS_7IColumnE
Line
Count
Source
858
228
bool is_column(const IColumn& column) {
859
228
    return check_and_get_column<Type>(&column);
860
228
}
_ZN5doris9is_columnINS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEEbRKNS_7IColumnE
Line
Count
Source
858
225
bool is_column(const IColumn& column) {
859
225
    return check_and_get_column<Type>(&column);
860
225
}
_ZN5doris9is_columnINS_15ColumnVarbinaryEEEbRKNS_7IColumnE
Line
Count
Source
858
222
bool is_column(const IColumn& column) {
859
222
    return check_and_get_column<Type>(&column);
860
222
}
_ZN5doris9is_columnINS_23ColumnFixedLengthObjectEEEbRKNS_7IColumnE
Line
Count
Source
858
219
bool is_column(const IColumn& column) {
859
219
    return check_and_get_column<Type>(&column);
860
219
}
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEbRKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEbRKNS_7IColumnE
_ZN5doris9is_columnINS_11ColumnArrayEEEbRKNS_7IColumnE
Line
Count
Source
858
8
bool is_column(const IColumn& column) {
859
8
    return check_and_get_column<Type>(&column);
860
8
}
861
862
template <typename Type>
863
1.65k
bool is_column(const IColumn* column) {
864
1.65k
    return check_and_get_column<Type>(column);
865
1.65k
}
_ZN5doris9is_columnINS_11ColumnArrayEEEbPKNS_7IColumnE
Line
Count
Source
863
1.58k
bool is_column(const IColumn* column) {
864
1.58k
    return check_and_get_column<Type>(column);
865
1.58k
}
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEbPKNS_7IColumnE
_ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEbPKNS_7IColumnE
Line
Count
Source
863
12
bool is_column(const IColumn* column) {
864
12
    return check_and_get_column<Type>(column);
865
12
}
_ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEbPKNS_7IColumnE
Line
Count
Source
863
4
bool is_column(const IColumn* column) {
864
4
    return check_and_get_column<Type>(column);
865
4
}
_ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEbPKNS_7IColumnE
Line
Count
Source
863
4
bool is_column(const IColumn* column) {
864
4
    return check_and_get_column<Type>(column);
865
4
}
_ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEbPKNS_7IColumnE
Line
Count
Source
863
12
bool is_column(const IColumn* column) {
864
12
    return check_and_get_column<Type>(column);
865
12
}
_ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEbPKNS_7IColumnE
Line
Count
Source
863
4
bool is_column(const IColumn* column) {
864
4
    return check_and_get_column<Type>(column);
865
4
}
_ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEbPKNS_7IColumnE
Line
Count
Source
863
5
bool is_column(const IColumn* column) {
864
5
    return check_and_get_column<Type>(column);
865
5
}
_ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEbPKNS_7IColumnE
Line
Count
Source
863
4
bool is_column(const IColumn* column) {
864
4
    return check_and_get_column<Type>(column);
865
4
}
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE27EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEEbPKNS_7IColumnE
Unexecuted instantiation: _ZN5doris9is_columnINS_12ColumnStructEEEbPKNS_7IColumnE
_ZN5doris9is_columnINS_9ColumnStrIjEEEEbPKNS_7IColumnE
Line
Count
Source
863
28
bool is_column(const IColumn* column) {
864
28
    return check_and_get_column<Type>(column);
865
28
}
866
867
// check_and_get_column_ptr is used to return a ColumnPtr of a specific column type,
868
// which will hold ownership. This prevents the occurrence of dangling pointers due to certain situations.
869
template <typename ColumnType>
870
25.0k
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
871
25.0k
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
872
25.0k
    if (raw_type_ptr == nullptr) {
873
8.51k
        return nullptr;
874
8.51k
    }
875
16.5k
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
876
25.0k
}
_ZN5doris24check_and_get_column_ptrINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
870
2
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
871
2
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
872
2
    if (raw_type_ptr == nullptr) {
873
0
        return nullptr;
874
0
    }
875
2
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
876
2
}
_ZN5doris24check_and_get_column_ptrINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
870
1
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
871
1
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
872
1
    if (raw_type_ptr == nullptr) {
873
1
        return nullptr;
874
1
    }
875
0
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
876
1
}
_ZN5doris24check_and_get_column_ptrINS_14ColumnNullableEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS5_EE
Line
Count
Source
870
25.0k
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
871
25.0k
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
872
25.0k
    if (raw_type_ptr == nullptr) {
873
8.50k
        return nullptr;
874
8.50k
    }
875
16.5k
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
876
25.0k
}
_ZN5doris24check_and_get_column_ptrINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
870
16
ColumnType::Ptr check_and_get_column_ptr(const ColumnPtr& column) {
871
16
    const ColumnType* raw_type_ptr = check_and_get_column<ColumnType>(column.get());
872
16
    if (raw_type_ptr == nullptr) {
873
1
        return nullptr;
874
1
    }
875
15
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
876
16
}
877
878
template <typename ColumnType>
879
701
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
701
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
701
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
701
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
66
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
66
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
66
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
66
}
_ZN5doris14cast_to_columnINS_9ColumnStrImEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS6_EE
Line
Count
Source
879
27
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
27
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
27
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
27
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
58
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
58
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
58
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
58
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
53
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
53
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
53
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
53
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
_ZN5doris14cast_to_columnINS_9ColumnStrIjEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS6_EE
Line
Count
Source
879
29
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
29
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
29
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
29
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
_ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Line
Count
Source
879
52
ColumnType::Ptr cast_to_column(const ColumnPtr& column) {
880
52
    const ColumnType* raw_type_ptr = assert_cast<const ColumnType*>(column.get());
881
52
    return ColumnType::cast_to_column_ptr(raw_type_ptr);
882
52
}
Unexecuted instantiation: _ZN5doris14cast_to_columnINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Unexecuted instantiation: _ZN5doris14cast_to_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Unexecuted instantiation: _ZN5doris14cast_to_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Unexecuted instantiation: _ZN5doris14cast_to_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
Unexecuted instantiation: _ZN5doris14cast_to_columnINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEENT_3PtrERKNS_3COWINS_7IColumnEE13immutable_ptrIS7_EE
883
template <typename ColumnType>
884
1
ColumnType::MutablePtr cast_to_column(MutableColumnPtr column) {
885
1
    ColumnType* raw_type_ptr = assert_cast<ColumnType*>(column.get());
886
1
    return ColumnType::cast_to_column_mutptr(raw_type_ptr);
887
1
}
888
889
/// True if column's an ColumnConst instance. It's just a syntax sugar for type check.
890
bool is_column_const(const IColumn& column);
891
892
/// True if column's an ColumnNullable instance. It's just a syntax sugar for type check.
893
bool is_column_nullable(const IColumn& column);
894
} // namespace doris
895
896
// Hold a constant expression's single-row result column. For example, both a one-row Int64
897
// column and ColumnConst(Int64, N) store the same Int64 row here; broadcast wraps it again.
898
// This class also allows forward declarations where the ColumnPtr alias cannot be used.
899
namespace doris {
900
class ConstantExprResult {
901
public:
902
    explicit ConstantExprResult(ColumnPtr column);
903
904
1.39k
    const IColumn& column() const { return *_column_ptr; }
905
7.68k
    const ColumnPtr& column_ptr() const { return _column_ptr; }
906
907
private:
908
    ColumnPtr _column_ptr;
909
};
910
} // namespace doris