Skip to content

Commit 603ef48

Browse files
authored
GDV-94:[C++][Java]Fixed literals and nulls for time types. (apache#72)
Added support for literals and null for time types.
1 parent e4d3077 commit 603ef48

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/gandiva/src/cpp/src/codegen/llvm_generator.cc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,22 @@ void LLVMGenerator::Visitor::Visit(const LiteralDex &dex) {
523523
break;
524524
}
525525

526+
case arrow::Type::DATE64:
527+
value = types->i64_constant(boost::get<int64_t>(dex.holder()));
528+
break;
529+
530+
case arrow::Type::TIME32:
531+
value = types->i32_constant(boost::get<int32_t>(dex.holder()));
532+
break;
533+
534+
case arrow::Type::TIME64:
535+
value = types->i64_constant(boost::get<int64_t>(dex.holder()));
536+
break;
537+
538+
case arrow::Type::TIMESTAMP:
539+
value = types->i64_constant(boost::get<int64_t>(dex.holder()));
540+
break;
541+
526542
default:
527543
DCHECK(0);
528544
}

src/gandiva/src/cpp/src/codegen/tree_expr_builder.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,14 @@ NodePtr TreeExprBuilder::MakeNull(DataTypePtr data_type) {
7878
case arrow::Type::STRING:
7979
case arrow::Type::BINARY:
8080
return std::make_shared<LiteralNode>(data_type, LiteralHolder(empty), true);
81+
case arrow::Type::DATE64:
82+
return std::make_shared<LiteralNode>(data_type, LiteralHolder((int64_t)0), true);
83+
case arrow::Type::TIME32:
84+
return std::make_shared<LiteralNode>(data_type, LiteralHolder((int32_t)0), true);
85+
case arrow::Type::TIME64:
86+
return std::make_shared<LiteralNode>(data_type, LiteralHolder((int64_t)0), true);
87+
case arrow::Type::TIMESTAMP:
88+
return std::make_shared<LiteralNode>(data_type, LiteralHolder((int64_t)0), true);
8189
default:
8290
return nullptr;
8391
}

0 commit comments

Comments
 (0)