For V1 -> V5
| 551 | |
| 552 | // For V1 -> V5 |
| 553 | void 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 | } |
nothing calls this directly
no test coverage detected