Add object type (#1948)

Add a new type: Object. Currently, it's mainly for complex aggregate metrics(HLL , Bitmap).

The Object type has the following constraints:
1 Object type could not as key column type
2 Object type doesn't support all indices (BloomFilter, short key, zone map, invert index)
3 Object type doesn't support filter and group by

In the implementation:

The Object type reuse the StringValue and StringVal, because in storage engine, the Object type is binary, it has a pointer and length.
This commit is contained in:
kangkaisen
2019-10-31 21:42:58 +08:00
committed by ZHAO Chun
parent 78d7a8f315
commit 95a3b4ccfe
46 changed files with 257 additions and 249 deletions

View File

@ -327,6 +327,7 @@ void CaseExpr::get_child_val(int child_idx, ExprContext* ctx, TupleRow* row, Any
case TYPE_CHAR:
case TYPE_VARCHAR:
case TYPE_HLL:
case TYPE_OBJECT:
*reinterpret_cast<StringVal*>(dst) = _children[child_idx]->get_string_val(ctx, row);
break;
case TYPE_DECIMAL:
@ -373,6 +374,7 @@ bool CaseExpr::any_val_eq(const TypeDescriptor& type, const AnyVal* v1, const An
case TYPE_CHAR:
case TYPE_VARCHAR:
case TYPE_HLL:
case TYPE_OBJECT:
return AnyValUtil::equals(type, *reinterpret_cast<const StringVal*>(v1),
*reinterpret_cast<const StringVal*>(v2));
case TYPE_DECIMAL: