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

Method Eq

be/src/runtime/raw-value.inline.h:95–157  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

93}
94
95inline bool RawValue::Eq(const void* v1, const void* v2, const ColumnType& type) {
96 const StringValue* string_value1;
97 const StringValue* string_value2;
98 switch (type.type) {
99 case TYPE_BOOLEAN:
100 return *reinterpret_cast<const bool*>(v1)
101 == *reinterpret_cast<const bool*>(v2);
102 case TYPE_TINYINT:
103 return *reinterpret_cast<const int8_t*>(v1)
104 == *reinterpret_cast<const int8_t*>(v2);
105 case TYPE_SMALLINT:
106 return *reinterpret_cast<const int16_t*>(v1)
107 == *reinterpret_cast<const int16_t*>(v2);
108 case TYPE_INT:
109 return *reinterpret_cast<const int32_t*>(v1)
110 == *reinterpret_cast<const int32_t*>(v2);
111 case TYPE_DATE:
112 return *reinterpret_cast<const DateValue*>(v1)
113 == *reinterpret_cast<const DateValue*>(v2);
114 case TYPE_BIGINT:
115 return *reinterpret_cast<const int64_t*>(v1)
116 == *reinterpret_cast<const int64_t*>(v2);
117 case TYPE_FLOAT:
118 return *reinterpret_cast<const float*>(v1)
119 == *reinterpret_cast<const float*>(v2);
120 case TYPE_DOUBLE:
121 return *reinterpret_cast<const double*>(v1)
122 == *reinterpret_cast<const double*>(v2);
123 case TYPE_STRING:
124 case TYPE_VARCHAR:
125 string_value1 = reinterpret_cast<const StringValue*>(v1);
126 string_value2 = reinterpret_cast<const StringValue*>(v2);
127 return string_value1->Eq(*string_value2);
128 case TYPE_TIMESTAMP:
129 return *reinterpret_cast<const TimestampValue*>(v1) ==
130 *reinterpret_cast<const TimestampValue*>(v2);
131 case TYPE_CHAR: {
132 const char* v1ptr = reinterpret_cast<const char*>(v1);
133 const char* v2ptr = reinterpret_cast<const char*>(v2);
134 int64_t l1 = StringValue::UnpaddedCharLength(v1ptr, type.len);
135 int64_t l2 = StringValue::UnpaddedCharLength(v2ptr, type.len);
136 return StringCompare(v1ptr, l1, v2ptr, l2, std::min(l1, l2)) == 0;
137 }
138 case TYPE_DECIMAL:
139 switch (type.GetByteSize()) {
140 case 4:
141 return reinterpret_cast<const Decimal4Value*>(v1)->value()
142 == reinterpret_cast<const Decimal4Value*>(v2)->value();
143 case 8:
144 return reinterpret_cast<const Decimal8Value*>(v1)->value()
145 == reinterpret_cast<const Decimal8Value*>(v2)->value();
146 case 16:
147 return reinterpret_cast<const Decimal16Value*>(v1)->value()
148 == reinterpret_cast<const Decimal16Value*>(v2)->value();
149 default:
150 DCHECK(false) << "Unknown decimal byte size: " << type.GetByteSize();
151 return 0;
152 }

Callers 1

TestCompareImplFunction · 0.45

Calls 4

minFunction · 0.85
GetByteSizeMethod · 0.80
StringCompareFunction · 0.70
valueMethod · 0.45

Tested by 1

TestCompareImplFunction · 0.36