diff --git a/cpp/src/gandiva/codegen/llvm_generator.cc b/cpp/src/gandiva/codegen/llvm_generator.cc index fe0dae1c3c87a..fb862ae10ea44 100644 --- a/cpp/src/gandiva/codegen/llvm_generator.cc +++ b/cpp/src/gandiva/codegen/llvm_generator.cc @@ -523,6 +523,22 @@ void LLVMGenerator::Visitor::Visit(const LiteralDex &dex) { break; } + case arrow::Type::DATE64: + value = types->i64_constant(boost::get(dex.holder())); + break; + + case arrow::Type::TIME32: + value = types->i32_constant(boost::get(dex.holder())); + break; + + case arrow::Type::TIME64: + value = types->i64_constant(boost::get(dex.holder())); + break; + + case arrow::Type::TIMESTAMP: + value = types->i64_constant(boost::get(dex.holder())); + break; + default: DCHECK(0); } diff --git a/cpp/src/gandiva/codegen/tree_expr_builder.cc b/cpp/src/gandiva/codegen/tree_expr_builder.cc index 9f81a8f2f26a2..5c56454215b27 100644 --- a/cpp/src/gandiva/codegen/tree_expr_builder.cc +++ b/cpp/src/gandiva/codegen/tree_expr_builder.cc @@ -78,6 +78,14 @@ NodePtr TreeExprBuilder::MakeNull(DataTypePtr data_type) { case arrow::Type::STRING: case arrow::Type::BINARY: return std::make_shared(data_type, LiteralHolder(empty), true); + case arrow::Type::DATE64: + return std::make_shared(data_type, LiteralHolder((int64_t)0), true); + case arrow::Type::TIME32: + return std::make_shared(data_type, LiteralHolder((int32_t)0), true); + case arrow::Type::TIME64: + return std::make_shared(data_type, LiteralHolder((int64_t)0), true); + case arrow::Type::TIMESTAMP: + return std::make_shared(data_type, LiteralHolder((int64_t)0), true); default: return nullptr; }