diff --git a/be/src/exprs/agg/array_agg.h b/be/src/exprs/agg/array_agg.h index 449c103cd12c4..22036430b0f46 100644 --- a/be/src/exprs/agg/array_agg.h +++ b/be/src/exprs/agg/array_agg.h @@ -40,8 +40,16 @@ struct ArrayAggAggregateState { for (int i = 0; i < count; i++) { auto raw_key = column.get_slice(offset + i); KeyType key(raw_key); +#if defined(__clang__) && (__clang_major__ >= 16) + set.lazy_emplace(key, [&](const auto& ctor) { +#else set.template lazy_emplace(key, [&](const auto& ctor) { +<<<<<<< HEAD uint8_t* pos = mem_pool->allocate(key.size); +======= +#endif + uint8_t* pos = mem_pool->allocate_with_reserve(key.size, SLICE_MEMEQUAL_OVERFLOW_PADDING); +>>>>>>> f56aac479d ([Enhancement] clang-19 compatibility (#52058)) assert(pos != nullptr); memcpy(pos, key.data, key.size); ctor(pos, key.size, key.hash); diff --git a/be/src/exprs/agg/array_union_agg.h b/be/src/exprs/agg/array_union_agg.h index bea832432301e..a68a9e8297b72 100644 --- a/be/src/exprs/agg/array_union_agg.h +++ b/be/src/exprs/agg/array_union_agg.h @@ -40,8 +40,16 @@ struct ArrayUnionAggAggregateState { for (int i = 0; i < count; i++) { auto raw_key = column.get_slice(offset + i); KeyType key(raw_key); +#if defined(__clang__) && (__clang_major__ >= 16) + set.lazy_emplace(key, [&](const auto& ctor) { +#else set.template lazy_emplace(key, [&](const auto& ctor) { +<<<<<<< HEAD uint8_t* pos = mem_pool->allocate(key.size); +======= +#endif + uint8_t* pos = mem_pool->allocate_with_reserve(key.size, SLICE_MEMEQUAL_OVERFLOW_PADDING); +>>>>>>> f56aac479d ([Enhancement] clang-19 compatibility (#52058)) assert(pos != nullptr); memcpy(pos, key.data, key.size); ctor(pos, key.size, key.hash); diff --git a/be/src/exprs/agg/distinct.h b/be/src/exprs/agg/distinct.h index 7c9c61281c41d..ce3c690f41e6a 100644 --- a/be/src/exprs/agg/distinct.h +++ b/be/src/exprs/agg/distinct.h @@ -115,8 +115,16 @@ struct DistinctAggregateState> { size_t update(MemPool* mem_pool, Slice raw_key) { size_t ret = 0; KeyType key(raw_key); +#if defined(__clang__) && (__clang_major__ >= 16) + set.lazy_emplace(key, [&](const auto& ctor) { +#else set.template lazy_emplace(key, [&](const auto& ctor) { +<<<<<<< HEAD uint8_t* pos = mem_pool->allocate(key.size); +======= +#endif + uint8_t* pos = mem_pool->allocate_with_reserve(key.size, SLICE_MEMEQUAL_OVERFLOW_PADDING); +>>>>>>> f56aac479d ([Enhancement] clang-19 compatibility (#52058)) assert(pos != nullptr); memcpy(pos, key.data, key.size); ctor(pos, key.size, key.hash); @@ -128,8 +136,16 @@ struct DistinctAggregateState> { size_t update_with_hash(MemPool* mem_pool, Slice raw_key, size_t hash) { size_t ret = 0; KeyType key(reinterpret_cast(raw_key.data), raw_key.size, hash); +#if defined(__clang__) && (__clang_major__ >= 16) + set.lazy_emplace_with_hash(key, hash, [&](const auto& ctor) { +#else set.template lazy_emplace_with_hash(key, hash, [&](const auto& ctor) { +<<<<<<< HEAD uint8_t* pos = mem_pool->allocate(key.size); +======= +#endif + uint8_t* pos = mem_pool->allocate_with_reserve(key.size, SLICE_MEMEQUAL_OVERFLOW_PADDING); +>>>>>>> f56aac479d ([Enhancement] clang-19 compatibility (#52058)) assert(pos != nullptr); memcpy(pos, key.data, key.size); ctor(pos, key.size, key.hash); @@ -170,8 +186,16 @@ struct DistinctAggregateState> { Slice raw_key(src, size); KeyType key(raw_key); // we only memcpy when the key is new +#if defined(__clang__) && (__clang_major__ >= 16) + set.lazy_emplace(key, [&](const auto& ctor) { +#else set.template lazy_emplace(key, [&](const auto& ctor) { +<<<<<<< HEAD uint8_t* pos = mem_pool->allocate(key.size); +======= +#endif + uint8_t* pos = mem_pool->allocate_with_reserve(key.size, SLICE_MEMEQUAL_OVERFLOW_PADDING); +>>>>>>> f56aac479d ([Enhancement] clang-19 compatibility (#52058)) assert(pos != nullptr); memcpy(pos, key.data, key.size); ctor(pos, key.size, key.hash); diff --git a/be/src/storage/chunk_helper.cpp b/be/src/storage/chunk_helper.cpp index 52dce6f57794d..b54964fec3a01 100644 --- a/be/src/storage/chunk_helper.cpp +++ b/be/src/storage/chunk_helper.cpp @@ -282,8 +282,8 @@ struct ColumnPtrBuilder { std::vector names; std::vector fields; for (auto& sub_field : field.sub_fields()) { - names.template emplace_back(sub_field.name()); - fields.template emplace_back(sub_field.create_column()); + names.emplace_back(sub_field.name()); + fields.emplace_back(sub_field.create_column()); } auto struct_column = StructColumn::create(std::move(fields), std::move(names)); return NullableIfNeed(struct_column); @@ -426,8 +426,8 @@ ColumnPtr ChunkHelper::column_from_field(const Field& field) { std::vector names; std::vector fields; for (auto& sub_field : field.sub_fields()) { - names.template emplace_back(sub_field.name()); - fields.template emplace_back(sub_field.create_column()); + names.emplace_back(sub_field.name()); + fields.emplace_back(sub_field.create_column()); } auto struct_column = StructColumn::create(std::move(fields), std::move(names)); return NullableIfNeed(struct_column); diff --git a/be/test/exec/parquet_scanner_test.cpp b/be/test/exec/parquet_scanner_test.cpp index 15b192c123251..fe62ab131e8bf 100644 --- a/be/test/exec/parquet_scanner_test.cpp +++ b/be/test/exec/parquet_scanner_test.cpp @@ -251,12 +251,12 @@ class ParquetScannerTest : public ::testing::Test { } std::vector column_names; column_names.reserve(columns_from_file.size() + columns_from_path.size()); - column_names.template insert(column_names.end(), columns_from_file.begin(), columns_from_file.end()); - column_names.template insert(column_names.end(), columns_from_path.begin(), columns_from_path.end()); + column_names.insert(column_names.end(), columns_from_file.begin(), columns_from_file.end()); + column_names.insert(column_names.end(), columns_from_path.begin(), columns_from_path.end()); auto src_slot_infos = select_columns(columns_from_file, is_nullable); for (const auto& i : columns_from_path) { - src_slot_infos.template emplace_back(i, TypeDescriptor::from_logical_type(TYPE_VARCHAR), is_nullable); + src_slot_infos.emplace_back(i, TypeDescriptor::from_logical_type(TYPE_VARCHAR), is_nullable); } auto dst_slot_infos = select_columns(column_names, is_nullable);