[ 
https://issues.apache.org/jira/browse/IMPALA-3207?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15917782#comment-15917782
 ] 

Tim Armstrong edited comment on IMPALA-3207 at 8/16/18 8:55 PM:
----------------------------------------------------------------

-One problem is that it the LLVM representation is completely wrong: it thinks 
it has the same representation as a string value, but in reality it's inlined 
into the tuple for sizes < 128 bytes.-


was (Author: tarmstrong):
One problem is that it the LLVM representation is completely wrong: it thinks 
it has the same representation as a string value, but in reality it's inlined 
into the tuple for sizes < 128 bytes.

> Support Char type in codegen
> ----------------------------
>
>                 Key: IMPALA-3207
>                 URL: https://issues.apache.org/jira/browse/IMPALA-3207
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Backend
>    Affects Versions: Impala 2.6.0
>            Reporter: Michael Ho
>            Priority: Minor
>              Labels: codegen
>
> There are multiple places in the backend which explicitly punt on codegen if 
> there is CHAR type involved. Examples include:
> {noformat}
> ScalarFnCall::GetCodegendComputeFn(...) {
> ....
>   for (int i = 0; i < GetNumChildren(); ++i) {
>     if (children_[i]->type().type == TYPE_CHAR) {
>       *fn = NULL;
>       return Status("ScalarFnCall Codegen not supported for CHAR");
>     }
>   }
> ....
> }
> {noformat}
> {noformat}
> StructType* TupleDescriptor::GetLlvmStruct(LlvmCodeGen* codegen) const {
> ...
>   // Add the slot types to the struct description.
>   for (int i = 0; i < slots().size(); ++i) {
>     SlotDescriptor* slot_desc = slots()[i];
>     if (slot_desc->type().type == TYPE_CHAR) return NULL; <<---
>     slot_desc->field_idx_ = slot_desc->slot_idx_ + num_null_bytes_;
>     DCHECK_LT(slot_desc->field_idx(), struct_fields.size());
>     struct_fields[slot_desc->field_idx()] = 
> codegen->GetType(slot_desc->type());
>   }
> ....
> }
> {noformat}
> The support for CHAR was disabled in f1c4e49905c57d91a8af455fe2537ae9cfb8110c 
> because of various bugs.
>  IMPALA-5560 simplified the CHAR data type implementation and IMPALA-3931 
> added some support for codegen of a FIXED_UDA_INTERMEDIATE type with the same 
> memory layout as CHAR. We've also fixed the other cases where codegen was 
> disabled for specific data types, so enabling char codegen may actually be 
> less error-prone than keeping it disabled and requiring all the requisite 
> error-handling.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to