You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by jo...@apache.org on 2023/02/23 04:01:37 UTC
[impala] 02/02: IMPALA-11713: Switch to C++17
This is an automated email from the ASF dual-hosted git repository.
joemcdonnell pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git
commit f54b3c37577cabad396c3eee7d18a1a6e4eea9f1
Author: Joe McDonnell <jo...@cloudera.com>
AuthorDate: Fri Oct 28 19:54:56 2022 -0700
IMPALA-11713: Switch to C++17
This switches from C++14 to C++17, which allows Impala
code to interact with libraries written in C++17.
This fixes a few minor compilation differences, such
as the need for comparators to be const. Since C++17
includes -faligned-new, this removes the CMake code
that specified it.
Testing:
- Ran core job
Change-Id: Iadac41817fe5eaaa469a5f0e9f94056a409c14b9
Reviewed-on: http://gerrit.cloudera.org:8080/19183
Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
be/CMakeLists.txt | 14 ++------------
be/src/exec/file-metadata-utils.cc | 4 ++--
be/src/gutil/endian.h | 2 +-
be/src/runtime/krpc-data-stream-mgr.h | 2 +-
be/src/service/impala-server.h | 2 +-
be/src/udf_samples/CMakeLists.txt | 2 +-
6 files changed, 8 insertions(+), 18 deletions(-)
diff --git a/be/CMakeLists.txt b/be/CMakeLists.txt
index 72022fd1f..b19423d90 100644
--- a/be/CMakeLists.txt
+++ b/be/CMakeLists.txt
@@ -45,7 +45,7 @@ endif()
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall -Wno-sign-compare -Wno-unknown-pragmas -pthread")
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -fno-strict-aliasing -fno-omit-frame-pointer")
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -fsigned-char")
-SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -std=c++14")
+SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -std=c++17")
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-deprecated -Wno-vla")
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG")
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DBOOST_SYSTEM_NO_DEPRECATED")
@@ -117,16 +117,6 @@ SET(CXX_GCC_FLAGS "-g -Wno-unused-local-typedefs -gdwarf-4 -Wno-maybe-uninitiali
# are not clean yet (including some LLVM code).
# TODO: These should be cleaned up and reenabled.
SET(CXX_GCC_FLAGS "${CXX_GCC_FLAGS} -Wno-class-memaccess -Wno-init-list-lifetime")
-if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
- # We need to add additional arguments for GCC 7+. We go down this branch if building
- # with a non-GCC compiler of version 7+, but in that case CXX_GCC_FLAGS is not used,
- # so it is inconsequential. TODO: IMPALA-5490: make this non-conditional when we
- # upgrade GCC.
- # -faligned-new: new will automatically align types. Otherwise "new Counter()" in the
- # Kudu util code produces a warning (see KUDU-2094).
- # TODO: -faligned-new is part of C++17, remove flag when we bump language version.
- SET(CXX_GCC_FLAGS "${CXX_GCC_FLAGS} -faligned-new")
-endif()
# compiler flags for different build types (run 'cmake -DCMAKE_BUILD_TYPE=<type> .')
# For CMAKE_BUILD_TYPE=DEBUG_NOOPT
@@ -302,7 +292,7 @@ add_definitions(-DKUDU_HEADERS_USE_RICH_SLICE -DKUDU_HEADERS_NO_STUBS)
# -Wno-return-type-c-linkage: UDFs return C++ classes but use C linkage to prevent
# mangling
# -DBOOST_NO_EXCEPTIONS: call a custom error handler for exceptions in codegen'd code.
-set(CLANG_IR_CXX_FLAGS "-emit-llvm" "-c" "-std=c++14" "-DIR_COMPILE" "-DHAVE_INTTYPES_H"
+set(CLANG_IR_CXX_FLAGS "-emit-llvm" "-c" "-std=c++17" "-DIR_COMPILE" "-DHAVE_INTTYPES_H"
"-DHAVE_NETINET_IN_H" "-DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG" "-DBOOST_NO_EXCEPTIONS"
"-DBOOST_BIND_GLOBAL_PLACEHOLDERS" "-DBOOST_ALLOW_DEPRECATED_HEADERS"
"-DKUDU_HEADERS_NO_STUBS" "-fcolor-diagnostics" "-Wno-deprecated"
diff --git a/be/src/exec/file-metadata-utils.cc b/be/src/exec/file-metadata-utils.cc
index b48b3605e..af575c8f0 100644
--- a/be/src/exec/file-metadata-utils.cc
+++ b/be/src/exec/file-metadata-utils.cc
@@ -96,7 +96,7 @@ void FileMetadataUtils::AddIcebergColumns(MemPool* mem_pool, Tuple** template_tu
const ColumnDescriptor& col_desc =
scan_node_->hdfs_table()->col_descs()[path.front()];
int field_id = col_desc.field_id();
- for (int i = 0; i < transforms->Length(); ++i) {
+ for (int i = 0; i < transforms->size(); ++i) {
auto transform = transforms->Get(i);
if (transform->transform_type() !=
FbIcebergTransformType::FbIcebergTransformType_IDENTITY) {
@@ -161,7 +161,7 @@ bool FileMetadataUtils::IsValuePartitionCol(const SlotDescriptor* slot_desc) {
const FbIcebergMetadata* ice_metadata = file_metadata->iceberg_metadata();
auto transforms = ice_metadata->partition_keys();
if (transforms == nullptr) return false;
- for (int i = 0; i < transforms->Length(); ++i) {
+ for (int i = 0; i < transforms->size(); ++i) {
auto transform = transforms->Get(i);
if (transform->source_id() == field_id &&
transform->transform_type() ==
diff --git a/be/src/gutil/endian.h b/be/src/gutil/endian.h
index 8cd0f1809..98fd318de 100644
--- a/be/src/gutil/endian.h
+++ b/be/src/gutil/endian.h
@@ -42,7 +42,7 @@ inline uint64 gbswap_64(uint64 host_int) {
if (__builtin_constant_p(host_int)) {
return __bswap_constant_64(host_int);
} else {
- register uint64 result;
+ uint64 result;
__asm__("bswap %0" : "=r" (result) : "0" (host_int));
return result;
}
diff --git a/be/src/runtime/krpc-data-stream-mgr.h b/be/src/runtime/krpc-data-stream-mgr.h
index 48a814497..8347c5b3b 100644
--- a/be/src/runtime/krpc-data-stream-mgr.h
+++ b/be/src/runtime/krpc-data-stream-mgr.h
@@ -358,7 +358,7 @@ class KrpcDataStreamMgr : public CacheLineAligned {
/// the fragment instance ID is the query ID with the lower bits set to the
/// index of the fragment instance within the query.
struct ComparisonOp {
- bool operator()(const RecvrId& a, const RecvrId& b) {
+ bool operator()(const RecvrId& a, const RecvrId& b) const {
if (a.first.hi < b.first.hi) {
return true;
} else if (a.first.hi > b.first.hi) {
diff --git a/be/src/service/impala-server.h b/be/src/service/impala-server.h
index 37f41546b..a6cb34182 100644
--- a/be/src/service/impala-server.h
+++ b/be/src/service/impala-server.h
@@ -1568,7 +1568,7 @@ class ImpalaServer : public ImpalaServiceIf,
/// Comparator that breaks ties when two queries have identical expiration deadlines.
struct ExpirationEventComparator {
- bool operator()(const ExpirationEvent& t1, const ExpirationEvent& t2) {
+ bool operator()(const ExpirationEvent& t1, const ExpirationEvent& t2) const {
if (t1.deadline < t2.deadline) return true;
if (t2.deadline < t1.deadline) return false;
if (t1.query_id < t2.query_id) return true;
diff --git a/be/src/udf_samples/CMakeLists.txt b/be/src/udf_samples/CMakeLists.txt
index e4aaf8d26..75048a1a9 100644
--- a/be/src/udf_samples/CMakeLists.txt
+++ b/be/src/udf_samples/CMakeLists.txt
@@ -28,7 +28,7 @@ separate_arguments(HIDE_SYMBOLS_ARGS)
# This should be called with the .cc src file and it will generate a
# src-file-ir target that can be built.
# e.g. COMPILE_TO_IR(test.cc) generates the "test-ir" make target.
-set(IR_COMPILE_FLAGS "-emit-llvm" "-O3" "-std=c++14" "-c" "-I../" ${HIDE_SYMBOLS_ARGS})
+set(IR_COMPILE_FLAGS "-emit-llvm" "-O3" "-std=c++17" "-c" "-I../" ${HIDE_SYMBOLS_ARGS})
set(IR_COMPILE_FLAGS ${IR_COMPILE_FLAGS} ${CLANG_BASE_FLAGS})
function(COMPILE_TO_IR SRC_FILE)
get_filename_component(BASE_NAME ${SRC_FILE} NAME_WE)