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

Method TColumnValueToHS2TColumnValue

be/src/service/hs2-util.cc:553–611  ·  view source on GitHub ↗

For V1 -> V5

Source from the content-addressed store, hash-verified

551
552// For V1 -> V5
553void impala::TColumnValueToHS2TColumnValue(const TColumnValue& col_val,
554 const TColumnType& type, thrift::TColumnValue* hs2_col_val) {
555 // TODO: Handle complex types.
556 DCHECK_EQ(1, type.types.size());
557 DCHECK_EQ(TTypeNodeType::SCALAR, type.types[0].type);
558 DCHECK_EQ(true, type.types[0].__isset.scalar_type);
559 switch (type.types[0].scalar_type.type) {
560 case TPrimitiveType::BOOLEAN:
561 hs2_col_val->__isset.boolVal = true;
562 hs2_col_val->boolVal.value = col_val.bool_val;
563 hs2_col_val->boolVal.__isset.value = col_val.__isset.bool_val;
564 break;
565 case TPrimitiveType::TINYINT:
566 hs2_col_val->__isset.byteVal = true;
567 hs2_col_val->byteVal.value = col_val.byte_val;
568 hs2_col_val->byteVal.__isset.value = col_val.__isset.byte_val;
569 break;
570 case TPrimitiveType::SMALLINT:
571 hs2_col_val->__isset.i16Val = true;
572 hs2_col_val->i16Val.value = col_val.short_val;
573 hs2_col_val->i16Val.__isset.value = col_val.__isset.short_val;
574 break;
575 case TPrimitiveType::INT:
576 hs2_col_val->__isset.i32Val = true;
577 hs2_col_val->i32Val.value = col_val.int_val;
578 hs2_col_val->i32Val.__isset.value = col_val.__isset.int_val;
579 break;
580 case TPrimitiveType::BIGINT:
581 hs2_col_val->__isset.i64Val = true;
582 hs2_col_val->i64Val.value = col_val.long_val;
583 hs2_col_val->i64Val.__isset.value = col_val.__isset.long_val;
584 break;
585 case TPrimitiveType::FLOAT:
586 case TPrimitiveType::DOUBLE:
587 hs2_col_val->__isset.doubleVal = true;
588 hs2_col_val->doubleVal.value = col_val.double_val;
589 hs2_col_val->doubleVal.__isset.value = col_val.__isset.double_val;
590 break;
591 case TPrimitiveType::DECIMAL:
592 case TPrimitiveType::STRING:
593 case TPrimitiveType::TIMESTAMP:
594 case TPrimitiveType::DATE:
595 case TPrimitiveType::VARCHAR:
596 case TPrimitiveType::CHAR:
597 case TPrimitiveType::BINARY:
598 // HiveServer2 requires timestamp to be presented as string. Note that the .thrift
599 // spec says it should be a BIGINT; AFAICT Hive ignores that and produces a string.
600 hs2_col_val->__isset.stringVal = true;
601 hs2_col_val->stringVal.__isset.value = col_val.__isset.string_val;
602 if (col_val.__isset.string_val) {
603 hs2_col_val->stringVal.value = col_val.string_val;
604 }
605 break;
606 default:
607 DCHECK(false) << "bad type: "
608 << TypeToString(ThriftToType(type.types[0].scalar_type.type));
609 break;
610 }

Callers

nothing calls this directly

Calls 3

ThriftToTypeFunction · 0.85
TypeToStringFunction · 0.50
sizeMethod · 0.45

Tested by

no test coverage detected