This is an automated email from the ASF dual-hosted git repository.
wesm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 0e518c4 ARROW-3382: [Gandiva][C++] Run tests in travis
0e518c4 is described below
commit 0e518c44b5aac6391ea5d9fca867bf75a92bcf6d
Author: Pindikura Ravindra <[email protected]>
AuthorDate: Sat Oct 6 10:27:52 2018 -0400
ARROW-3382: [Gandiva][C++] Run tests in travis
Author: Pindikura Ravindra <[email protected]>
Author: Wes McKinney <[email protected]>
Closes #2705 from pravindra/arrow-3382 and squashes the following commits:
a312b3c92 <Pindikura Ravindra> ARROW-3382: minor change in comment
77097deaf <Pindikura Ravindra> ARROW-3382: run integ tests serially
5e9424e51 <Pindikura Ravindra> ARROW-3382: fix a typo in travis.yml
b011c6445 <Pindikura Ravindra> ARROW-3382: Set gcc to 4.9
d7da6107b <Pindikura Ravindra> ARROW-3382: set C++ to g++4.9
512b7e0cf <Pindikura Ravindra> ARROW-3382: use gcc 4.9
c80b8c62a <Pindikura Ravindra> ARROW-3382: add dep for precompiled
714502dc7 <Pindikura Ravindra> ARROW-3382: switch to static RE2
c7ad2a512 <Pindikura Ravindra> ARROW-3382: fix compiler warnings
c594e647d <Pindikura Ravindra> ARROW-3382: fix format error
8f881d5f0 <Pindikura Ravindra> ARROW-3382: fix compiler warnings
3001bc3c7 <Wes McKinney> Add option to dynamically-link re2, use in Gandiva
build temporarily
fccf41043 <Pindikura Ravindra> ARROW-3382: temp workaround re2
28fb3f314 <Pindikura Ravindra> ARROW-3382: Run tests in travis
---
.travis.yml | 24 ++++++++++++++++++++++
ci/travis_before_script_cpp.sh | 4 ++++
ci/travis_install_linux.sh | 4 ++++
ci/travis_install_toolchain.sh | 3 ++-
...s_install_linux.sh => travis_script_gandiva.sh} | 21 +++++++++++--------
cpp/cmake_modules/FindRE2.cmake | 22 +++++++++++++++++---
cpp/cmake_modules/GandivaBuildUtils.cmake | 4 +++-
cpp/cmake_modules/ThirdpartyToolchain.cmake | 22 +++++++++++++++++---
cpp/src/arrow/util/bit-util.h | 9 ++++++++
cpp/src/gandiva/CMakeLists.txt | 4 +---
cpp/src/gandiva/bitmap_accumulator_test.cc | 4 ++--
cpp/src/gandiva/function_registry.cc | 2 +-
cpp/src/gandiva/precompiled/CMakeLists.txt | 2 +-
cpp/src/gandiva/precompiled/arithmetic_ops.cc | 8 +++++---
cpp/src/gandiva/precompiled/bitmap.cc | 20 ++++++++----------
cpp/src/gandiva/precompiled/hash_test.cc | 8 ++++----
cpp/src/gandiva/tests/micro_benchmarks.cc | 4 +++-
cpp/src/gandiva/tests/projector_test.cc | 8 ++++----
18 files changed, 125 insertions(+), 48 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 09487f9..24fde86 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -33,6 +33,7 @@ git:
before_install:
# Common pre-install steps for all builds
+ - eval "${MATRIX_EVAL}"
- ulimit -c unlimited -S
- |
if [ $TRAVIS_OS_NAME == "linux" ]; then
@@ -92,6 +93,29 @@ matrix:
- export PLASMA_VALGRIND=1
- $TRAVIS_BUILD_DIR/ci/travis_script_python.sh 3.6
- $TRAVIS_BUILD_DIR/ci/travis_upload_cpp_coverage.sh
+ # Gandiva C++ w/ gcc 4.9
+ - compiler: gcc
+ language: cpp
+ os: linux
+ jdk: openjdk8
+ env:
+ - ARROW_TRAVIS_USE_TOOLCHAIN=1
+ - ARROW_TRAVIS_VALGRIND=1
+ - ARROW_TRAVIS_CLANG_FORMAT=1
+ - ARROW_BUILD_WARNING_LEVEL=CHECKIN
+ - ARROW_TRAVIS_GANDIVA=1
+ - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
+ before_script:
+ # Run if something changed in CPP.
+ - if [ $ARROW_CI_CPP_AFFECTED != "1" ]; then exit; fi
+ - $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
+ - $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
+ - $TRAVIS_BUILD_DIR/ci/travis_lint.sh
+ # If either C++ or Python changed, we must install the C++ libraries
+ - git submodule update --init
+ - $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh --only-library
+ script:
+ - $TRAVIS_BUILD_DIR/ci/travis_script_gandiva.sh
# [OS X] C++ & Python w/ XCode 6.4
- compiler: clang
language: cpp
diff --git a/ci/travis_before_script_cpp.sh b/ci/travis_before_script_cpp.sh
index 1729ca4..1b389a2 100755
--- a/ci/travis_before_script_cpp.sh
+++ b/ci/travis_before_script_cpp.sh
@@ -88,6 +88,10 @@ if [ $ARROW_TRAVIS_PARQUET == "1" ]; then
-DPARQUET_BUILD_EXECUTABLES=ON"
fi
+if [ $ARROW_TRAVIS_GANDIVA == "1" ]; then
+ CMAKE_COMMON_FLAGS="$CMAKE_COMMON_FLAGS -DARROW_GANDIVA=ON"
+fi
+
if [ $ARROW_TRAVIS_VALGRIND == "1" ]; then
CMAKE_COMMON_FLAGS="$CMAKE_COMMON_FLAGS -DARROW_TEST_MEMCHECK=ON"
fi
diff --git a/ci/travis_install_linux.sh b/ci/travis_install_linux.sh
index e8cd010..c1db2d5 100755
--- a/ci/travis_install_linux.sh
+++ b/ci/travis_install_linux.sh
@@ -21,6 +21,10 @@ sudo apt-get install -y -q \
gdb binutils ccache libboost-dev libboost-filesystem-dev \
libboost-system-dev libboost-regex-dev libjemalloc-dev
+if [ "$CXX" == "g++-4.9" ]; then
+ sudo apt-get install -y -q g++-4.9
+fi
+
if [ "$ARROW_TRAVIS_VALGRIND" == "1" ]; then
sudo apt-get install -y -q valgrind
fi
diff --git a/ci/travis_install_toolchain.sh b/ci/travis_install_toolchain.sh
index 405c496..eb4bdf2 100755
--- a/ci/travis_install_toolchain.sh
+++ b/ci/travis_install_toolchain.sh
@@ -40,5 +40,6 @@ if [ ! -e $CPP_TOOLCHAIN ]; then
thrift-cpp=0.11.0 \
zlib \
glog \
- zstd
+ zstd \
+ re2
fi
diff --git a/ci/travis_install_linux.sh b/ci/travis_script_gandiva.sh
similarity index 71%
copy from ci/travis_install_linux.sh
copy to ci/travis_script_gandiva.sh
index e8cd010..3dbd993 100755
--- a/ci/travis_install_linux.sh
+++ b/ci/travis_script_gandiva.sh
@@ -17,14 +17,17 @@
# specific language governing permissions and limitations
# under the License.
-sudo apt-get install -y -q \
- gdb binutils ccache libboost-dev libboost-filesystem-dev \
- libboost-system-dev libboost-regex-dev libjemalloc-dev
+set -e
-if [ "$ARROW_TRAVIS_VALGRIND" == "1" ]; then
- sudo apt-get install -y -q valgrind
-fi
+source $TRAVIS_BUILD_DIR/ci/travis_env_common.sh
-if [ "$ARROW_TRAVIS_COVERAGE" == "1" ]; then
- sudo apt-get install -y -q lcov
-fi
+pushd $CPP_BUILD_DIR
+
+PATH=$ARROW_BUILD_TYPE:$PATH ctest -j2 --output-on-failure -L unittest
+
+# not running in parallel, since some of them are benchmarks
+PATH=$ARROW_BUILD_TYPE:$PATH ctest -VV -L integ
+
+popd
+
+# TODO : Capture C++ coverage info
diff --git a/cpp/cmake_modules/FindRE2.cmake b/cpp/cmake_modules/FindRE2.cmake
index f2a4670..42aea14 100644
--- a/cpp/cmake_modules/FindRE2.cmake
+++ b/cpp/cmake_modules/FindRE2.cmake
@@ -22,6 +22,7 @@
# This module defines
# RE2_INCLUDE_DIR, directory containing headers
# RE2_STATIC_LIB, path to libre2.a
+# RE2_SHARED_LIB, path to libre2.so
# RE2_FOUND, whether re2 has been found
if( NOT "${RE2_HOME}" STREQUAL "")
@@ -51,9 +52,22 @@ find_library(RE2_STATIC_LIB NAMES
libre2${CMAKE_STATIC_LIBRARY_SUFFIX}
DOC "Google's re2 regex static library"
)
+find_library(RE2_SHARED_LIB NAMES libre2${CMAKE_SHARED_LIBRARY_SUFFIX}
+ PATHS ${_re2_path}
+ NO_DEFAULT_PATH
+ PATH_SUFFIXES ${lib_dirs}
+ DOC "Google's re2 regex static library"
+)
+
message(STATUS ${RE2_INCLUDE_DIR})
-if (NOT RE2_INCLUDE_DIR OR NOT RE2_STATIC_LIB)
+if (ARROW_RE2_LINKAGE STREQUAL "static" AND (NOT RE2_STATIC_LIB))
+ set(RE2_LIB_NOT_FOUND TRUE)
+elseif(ARROW_RE2_LINKAGE STREQUAL "shared" AND (NOT RE2_SHARED_LIB))
+ set(RE2_LIB_NOT_FOUND TRUE)
+endif()
+
+if (NOT RE2_INCLUDE_DIR OR RE2_LIB_NOT_FOUND)
set(RE2_FOUND FALSE)
if (_re2_path)
set (RE2_ERR_MSG "Could not find re2. Looked in ${_re2_path}.")
@@ -68,11 +82,13 @@ if (NOT RE2_INCLUDE_DIR OR NOT RE2_STATIC_LIB)
endif ()
else()
set(RE2_FOUND TRUE)
- message(STATUS "Found the RE2 headers : ${RE2_INCLUDE_DIR}")
- message(STATUS "Found the RE2 static library : ${RE2_STATIC_LIB}")
+ message(STATUS "RE2 headers : ${RE2_INCLUDE_DIR}")
+ message(STATUS "RE2 static library : ${RE2_STATIC_LIB}")
+ message(STATUS "RE2 shared library : ${RE2_SHARED_LIB}")
endif()
mark_as_advanced(
RE2_INCLUDE_DIR
+ RE2_SHARED_LIB
RE2_STATIC_LIB
)
diff --git a/cpp/cmake_modules/GandivaBuildUtils.cmake
b/cpp/cmake_modules/GandivaBuildUtils.cmake
index a1ed48e..4a069f0 100644
--- a/cpp/cmake_modules/GandivaBuildUtils.cmake
+++ b/cpp/cmake_modules/GandivaBuildUtils.cmake
@@ -39,7 +39,7 @@ function(build_gandiva_lib TYPE ARROW)
Boost::system
Boost::filesystem
LLVM::LLVM_INTERFACE
- ${RE2_STATIC_LIB})
+ re2)
if (${TYPE} MATCHES "static" AND NOT APPLE)
target_link_libraries(gandiva_${TYPE}
@@ -102,6 +102,8 @@ function(add_precompiled_unit_test REL_TEST_NAME)
get_filename_component(TEST_NAME ${REL_TEST_NAME} NAME_WE)
add_executable(${TEST_NAME} ${REL_TEST_NAME} ${ARGN})
+ # Require toolchain to be built
+ add_dependencies(${TEST_NAME} arrow_dependencies)
target_include_directories(${TEST_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)
target_link_libraries(${TEST_NAME} PRIVATE ${GANDIVA_TEST_LINK_LIBS})
target_compile_definitions(${TEST_NAME} PRIVATE GANDIVA_UNIT_TEST=1)
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 2e2f7d1..e6c7f78 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -15,6 +15,11 @@
# specific language governing permissions and limitations
# under the License.
+# ----------------------------------------------------------------------
+# Toolchain linkage options
+
+set(ARROW_RE2_LINKAGE "static" CACHE STRING
+ "How to link the re2 library. static|shared (default static)")
# ----------------------------------------------------------------------
# Thirdparty versions, environment variables, source URLs
@@ -37,7 +42,8 @@ if (NOT "$ENV{ARROW_BUILD_TOOLCHAIN}" STREQUAL "")
# set(ORC_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
set(PROTOBUF_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
set(RAPIDJSON_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
- set(RE2_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
+ # conda-forge doesn't have a static re2.
+ #set(RE2_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
set(SNAPPY_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
set(THRIFT_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
set(ZLIB_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
@@ -100,6 +106,10 @@ if (DEFINED ENV{RAPIDJSON_HOME})
set(RAPIDJSON_HOME "$ENV{RAPIDJSON_HOME}")
endif()
+if (DEFINED ENV{RE2_HOME})
+ set(RE2_HOME "$ENV{RAPIDJSON_HOME}")
+endif()
+
if (DEFINED ENV{SNAPPY_HOME})
set(SNAPPY_HOME "$ENV{SNAPPY_HOME}")
endif()
@@ -1091,8 +1101,14 @@ if (ARROW_GANDIVA)
endif ()
include_directories (SYSTEM ${RE2_INCLUDE_DIR})
- ADD_THIRDPARTY_LIB(re2
- STATIC_LIB ${RE2_STATIC_LIB})
+
+ if (ARROW_RE2_LINKAGE STREQUAL "shared")
+ ADD_THIRDPARTY_LIB(re2
+ STATIC_LIB ${RE2_SHARED_LIB})
+ else()
+ ADD_THIRDPARTY_LIB(re2
+ STATIC_LIB ${RE2_STATIC_LIB})
+ endif()
if (RE2_VENDORED)
add_dependencies (arrow_dependencies re2_ep)
diff --git a/cpp/src/arrow/util/bit-util.h b/cpp/src/arrow/util/bit-util.h
index a22ff0f..4bb4411 100644
--- a/cpp/src/arrow/util/bit-util.h
+++ b/cpp/src/arrow/util/bit-util.h
@@ -325,6 +325,15 @@ static inline void ClearBit(uint8_t* bits, int64_t i) {
static inline void SetBit(uint8_t* bits, int64_t i) { bits[i / 8] |=
kBitmask[i % 8]; }
+static inline void SetBitTo(uint8_t* bits, int64_t i, bool bit_is_set) {
+ // https://graphics.stanford.edu/~seander/bithacks.html
+ // "Conditionally set or clear bits without branching"
+ // NOTE: this seems to confuse Valgrind as it reads from potentially
+ // uninitialized memory
+ bits[i / 8] ^= static_cast<uint8_t>(-static_cast<uint8_t>(bit_is_set) ^
bits[i / 8]) &
+ kBitmask[i % 8];
+}
+
/// \brief Convert vector of bytes to bitmap buffer
ARROW_EXPORT
Status BytesToBits(const std::vector<uint8_t>&, MemoryPool*,
std::shared_ptr<Buffer>*);
diff --git a/cpp/src/gandiva/CMakeLists.txt b/cpp/src/gandiva/CMakeLists.txt
index 91f851f..d47a685 100644
--- a/cpp/src/gandiva/CMakeLists.txt
+++ b/cpp/src/gandiva/CMakeLists.txt
@@ -20,8 +20,6 @@ cmake_minimum_required(VERSION 3.11)
project(gandiva)
-find_package(RE2 REQUIRED)
-
include(GandivaBuildUtils)
find_package(LLVM)
@@ -120,7 +118,7 @@ target_include_directories(gandiva_helpers
${ARROW_INCLUDE_DIR}
)
-target_link_libraries(gandiva_helpers PRIVATE Boost::boost ${RE2_STATIC_LIB})
+target_link_libraries(gandiva_helpers PRIVATE Boost::boost re2)
if (NOT APPLE)
target_link_libraries(gandiva_helpers LINK_PRIVATE -static-libstdc++
-static-libgcc)
endif()
diff --git a/cpp/src/gandiva/bitmap_accumulator_test.cc
b/cpp/src/gandiva/bitmap_accumulator_test.cc
index c7a0b46..fc89421 100644
--- a/cpp/src/gandiva/bitmap_accumulator_test.cc
+++ b/cpp/src/gandiva/bitmap_accumulator_test.cc
@@ -38,7 +38,7 @@ void TestBitMapAccumulator::FillBitMap(uint8_t* bmap, int
nrecords) {
for (int i = 0; i < nbytes; ++i) {
rand_r(&cur);
- bmap[i] = cur % UINT8_MAX;
+ bmap[i] = static_cast<uint8_t>(cur % UINT8_MAX);
}
}
@@ -49,7 +49,7 @@ void TestBitMapAccumulator::ByteWiseIntersectBitMaps(uint8_t*
dst,
for (int i = 0; i < nbytes; ++i) {
dst[i] = 0xff;
for (uint32_t j = 0; j < srcs.size(); ++j) {
- dst[i] &= srcs[j][i];
+ dst[i] = dst[i] & srcs[j][i];
}
}
}
diff --git a/cpp/src/gandiva/function_registry.cc
b/cpp/src/gandiva/function_registry.cc
index 2b79624..84a265f 100644
--- a/cpp/src/gandiva/function_registry.cc
+++ b/cpp/src/gandiva/function_registry.cc
@@ -365,7 +365,7 @@ FunctionRegistry::SignatureMap
FunctionRegistry::pc_registry_map_ = InitPCMap();
FunctionRegistry::SignatureMap FunctionRegistry::InitPCMap() {
SignatureMap map;
- int num_entries = sizeof(pc_registry_) / sizeof(NativeFunction);
+ int num_entries = static_cast<int>(sizeof(pc_registry_) /
sizeof(NativeFunction));
printf("Registry has %d pre-compiled functions\n", num_entries);
for (int i = 0; i < num_entries; i++) {
diff --git a/cpp/src/gandiva/precompiled/CMakeLists.txt
b/cpp/src/gandiva/precompiled/CMakeLists.txt
index b71cde3..4857314 100644
--- a/cpp/src/gandiva/precompiled/CMakeLists.txt
+++ b/cpp/src/gandiva/precompiled/CMakeLists.txt
@@ -34,7 +34,7 @@ foreach(SRC_FILE ${PRECOMPILED_SRCS})
set(BC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${SRC_BASE}.bc)
add_custom_command(
OUTPUT ${BC_FILE}
- COMMAND ${CLANG_EXECUTABLE}
+ COMMAND ${CLANG_EXECUTABLE} -I${CMAKE_SOURCE_DIR}/src
-std=c++11 -emit-llvm -O2 -c ${ABSOLUTE_SRC} -o ${BC_FILE}
DEPENDS ${SRC_FILE})
list(APPEND BC_FILES ${BC_FILE})
diff --git a/cpp/src/gandiva/precompiled/arithmetic_ops.cc
b/cpp/src/gandiva/precompiled/arithmetic_ops.cc
index 20d2c69..7d05699 100644
--- a/cpp/src/gandiva/precompiled/arithmetic_ops.cc
+++ b/cpp/src/gandiva/precompiled/arithmetic_ops.cc
@@ -55,9 +55,11 @@ extern "C" {
}
// Symmetric binary fns : left, right params and return type are same.
-#define BINARY_SYMMETRIC(NAME, TYPE, OP) \
- FORCE_INLINE \
- TYPE NAME##_##TYPE##_##TYPE(TYPE left, TYPE right) { return left OP right; }
+#define BINARY_SYMMETRIC(NAME, TYPE, OP) \
+ FORCE_INLINE \
+ TYPE NAME##_##TYPE##_##TYPE(TYPE left, TYPE right) { \
+ return static_cast<TYPE>(left OP right); \
+ }
NUMERIC_TYPES(BINARY_SYMMETRIC, add, +)
NUMERIC_TYPES(BINARY_SYMMETRIC, subtract, -)
diff --git a/cpp/src/gandiva/precompiled/bitmap.cc
b/cpp/src/gandiva/precompiled/bitmap.cc
index 53f1735..651f2cb 100644
--- a/cpp/src/gandiva/precompiled/bitmap.cc
+++ b/cpp/src/gandiva/precompiled/bitmap.cc
@@ -17,6 +17,8 @@
// BitMap functions
+#include "arrow/util/bit-util.h"
+
extern "C" {
#include "./types.h"
@@ -28,26 +30,20 @@ extern "C" {
#define POS_TO_BIT_INDEX(p) (p % 8)
FORCE_INLINE
-bool bitMapGetBit(const unsigned char* bmap, int position) {
- int byteIdx = POS_TO_BYTE_INDEX(position);
- int bitIdx = POS_TO_BIT_INDEX(position);
- return ((bmap[byteIdx] & (1 << bitIdx)) > 0);
+bool bitMapGetBit(const uint8_t* bmap, int position) {
+ return arrow::BitUtil::GetBit(bmap, position);
}
FORCE_INLINE
-void bitMapSetBit(unsigned char* bmap, int position, bool value) {
- int byteIdx = POS_TO_BYTE_INDEX(position);
- int bitIdx = POS_TO_BIT_INDEX(position);
- bmap[byteIdx] ^= (-value ^ bmap[byteIdx]) & (1UL << bitIdx);
+void bitMapSetBit(uint8_t* bmap, int position, bool value) {
+ arrow::BitUtil::SetBitTo(bmap, position, value);
}
// Clear the bit if value = false. Does nothing if value = true.
FORCE_INLINE
-void bitMapClearBitIfFalse(unsigned char* bmap, int position, bool value) {
+void bitMapClearBitIfFalse(uint8_t* bmap, int position, bool value) {
if (!value) {
- int byteIdx = POS_TO_BYTE_INDEX(position);
- int bitIdx = POS_TO_BIT_INDEX(position);
- bmap[byteIdx] &= ~(1 << bitIdx);
+ arrow::BitUtil::ClearBit(bmap, position);
}
}
diff --git a/cpp/src/gandiva/precompiled/hash_test.cc
b/cpp/src/gandiva/precompiled/hash_test.cc
index d58344d..265385b 100644
--- a/cpp/src/gandiva/precompiled/hash_test.cc
+++ b/cpp/src/gandiva/precompiled/hash_test.cc
@@ -44,8 +44,8 @@ TEST(TestHash, TestHash32) {
EXPECT_EQ(hash32(u16, 0), zero_hash);
EXPECT_EQ(hash32(s32, 0), zero_hash);
EXPECT_EQ(hash32(u32, 0), zero_hash);
- EXPECT_EQ(hash32(s64, 0), zero_hash);
- EXPECT_EQ(hash32(u64, 0), zero_hash);
+ EXPECT_EQ(hash32(static_cast<double>(s64), 0), zero_hash);
+ EXPECT_EQ(hash32(static_cast<double>(u64), 0), zero_hash);
EXPECT_EQ(hash32(f32, 0), zero_hash);
EXPECT_EQ(hash32(f64, 0), zero_hash);
@@ -82,8 +82,8 @@ TEST(TestHash, TestHash64) {
EXPECT_EQ(hash64(u16, 0), zero_hash);
EXPECT_EQ(hash64(s32, 0), zero_hash);
EXPECT_EQ(hash64(u32, 0), zero_hash);
- EXPECT_EQ(hash64(s64, 0), zero_hash);
- EXPECT_EQ(hash64(u64, 0), zero_hash);
+ EXPECT_EQ(hash64(static_cast<double>(s64), 0), zero_hash);
+ EXPECT_EQ(hash64(static_cast<double>(u64), 0), zero_hash);
EXPECT_EQ(hash64(f32, 0), zero_hash);
EXPECT_EQ(hash64(f64, 0), zero_hash);
diff --git a/cpp/src/gandiva/tests/micro_benchmarks.cc
b/cpp/src/gandiva/tests/micro_benchmarks.cc
index d8706fa..fd6d87d 100644
--- a/cpp/src/gandiva/tests/micro_benchmarks.cc
+++ b/cpp/src/gandiva/tests/micro_benchmarks.cc
@@ -30,7 +30,9 @@ using arrow::int32;
using arrow::int64;
using arrow::utf8;
-float tolerance_ratio = 4.0;
+// TODO : the base numbers are from a mac. they need to be caliberated
+// for the hardware used by travis.
+float tolerance_ratio = 6.0;
class TestBenchmarks : public ::testing::Test {
public:
diff --git a/cpp/src/gandiva/tests/projector_test.cc
b/cpp/src/gandiva/tests/projector_test.cc
index 6f72a03..57497cd 100644
--- a/cpp/src/gandiva/tests/projector_test.cc
+++ b/cpp/src/gandiva/tests/projector_test.cc
@@ -209,10 +209,10 @@ static void TestArithmeticOpsForType(arrow::MemoryPool*
pool) {
std::vector<bool> eq;
std::vector<bool> lt;
for (int i = 0; i < num_records; i++) {
- sum.push_back(input0[i] + input1[i]);
- sub.push_back(input0[i] - input1[i]);
- mul.push_back(input0[i] * input1[i]);
- div.push_back(input0[i] / input1[i]);
+ sum.push_back(static_cast<C_TYPE>(input0[i] + input1[i]));
+ sub.push_back(static_cast<C_TYPE>(input0[i] - input1[i]));
+ mul.push_back(static_cast<C_TYPE>(input0[i] * input1[i]));
+ div.push_back(static_cast<C_TYPE>(input0[i] / input1[i]));
eq.push_back(input0[i] == input1[i]);
lt.push_back(input0[i] < input1[i]);
}