MCPcopy Create free account
hub / github.com/apache/impala / Eq

Method Eq

be/src/codegen/codegen-anyval.cc:639–674  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

637}
638
639llvm::Value* CodegenAnyVal::Eq(CodegenAnyVal* other) {
640 DCHECK_EQ(type_, other->type_);
641 switch (type_.type) {
642 case TYPE_BOOLEAN:
643 case TYPE_TINYINT:
644 case TYPE_SMALLINT:
645 case TYPE_INT:
646 case TYPE_BIGINT:
647 case TYPE_DECIMAL:
648 case TYPE_DATE:
649 return builder_->CreateICmpEQ(GetVal(), other->GetVal(), "eq");
650 case TYPE_FLOAT:
651 case TYPE_DOUBLE:
652 // Use the ordering version "OEQ" to ensure that 'nan' != 'nan'.
653 return builder_->CreateFCmpOEQ(GetVal(), other->GetVal(), "eq");
654 case TYPE_STRING:
655 case TYPE_VARCHAR:
656 case TYPE_FIXED_UDA_INTERMEDIATE: {
657 llvm::Function* eq_fn =
658 codegen_->GetFunction(IRFunction::CODEGEN_ANYVAL_STRING_VAL_EQ, false);
659 return builder_->CreateCall(eq_fn,
660 llvm::ArrayRef<llvm::Value*>({GetUnloweredPtr(), other->GetUnloweredPtr()}),
661 "eq");
662 }
663 case TYPE_TIMESTAMP: {
664 llvm::Function* eq_fn =
665 codegen_->GetFunction(IRFunction::CODEGEN_ANYVAL_TIMESTAMP_VAL_EQ, false);
666 return builder_->CreateCall(eq_fn,
667 llvm::ArrayRef<llvm::Value*>({GetUnloweredPtr(), other->GetUnloweredPtr()}),
668 "eq");
669 }
670 default:
671 DCHECK(false) << "NYI: " << type_.DebugString();
672 return NULL;
673 }
674}
675
676llvm::Value* CodegenAnyVal::EqToNativePtr(llvm::Value* native_ptr,
677 bool inclusive_equality) {

Callers 7

FindInSetMethod · 0.45
ConstantStartsWithFnMethod · 0.45
ConstantEndsWithFnMethod · 0.45
ConstantEqualsFnMethod · 0.45
StringValueEqFunction · 0.45
GetUrlPartMethod · 0.45

Calls 5

CreateCallMethod · 0.80
GetUnloweredPtrMethod · 0.80
GetValMethod · 0.45
GetFunctionMethod · 0.45
DebugStringMethod · 0.45

Tested by

no test coverage detected