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

ASF GitHub Bot commented on DRILL-4862:
---------------------------------------

Github user chunhui-shi commented on a diff in the pull request:

    https://github.com/apache/drill/pull/604#discussion_r82315506
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/StringFunctions.java
 ---
    @@ -1540,15 +1540,16 @@ public void eval() {
       public static class BinaryString implements DrillSimpleFunc {
         @Param  VarCharHolder in;
         @Output VarBinaryHolder out;
    +    @Inject DrillBuf buffer;
     
         @Override
         public void setup() {}
     
         @Override
         public void eval() {
    -      out.buffer = in.buffer;
    -      out.start = in.start;
    -      out.end = 
org.apache.drill.common.util.DrillStringUtils.parseBinaryString(in.buffer, 
in.start, in.end);
    +      out.buffer = buffer.reallocIfNeeded(in.end - in.start);
    +      out.start = out.end = 0;
    +      out.end = 
org.apache.drill.common.util.DrillStringUtils.parseBinaryString(in.buffer, 
in.start, in.end, out.buffer);
           out.buffer.setIndex(out.start, out.end);
    --- End diff --
    
    Yes, we need to set readerIndex and writerIndex. Otherwise if there is 
another function consume the output of this function, it will hit error.


> wrong results - use of convert_from(binary_string(key),'UTF8') in filter 
> results in wrong results
> -------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-4862
>                 URL: https://issues.apache.org/jira/browse/DRILL-4862
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Execution - Flow
>    Affects Versions: 1.8.0
>         Environment: 4 node cluster CentOS
>            Reporter: Khurram Faraaz
>            Assignee: Gautam Kumar Parai
>
> These results do not look right, i.e when the predicate has 
> convert_from(binary_string(key),'UTF8')
> Apache drill 1.8.0-SNAPSHOT git commit ID: 57dc9f43
> {noformat}
> [root@centos-0x drill4478]# cat f1.json
> {"key":"\\x30\\x31\\x32\\x33"}
> {"key":"\\x34\\x35\\x36\\x37"}
> {"key":"\\x38\\x39\\x30\\x31"}
> {"key":"\\x30\\x30\\x30\\x30"}
> {"key":"\\x31\\x31\\x31\\x31"}
> {"key":"\\x35\\x35\\x35\\x35"}
> {"key":"\\x38\\x38\\x38\\x38"}
> {"key":"\\x39\\x39\\x39\\x39"}
> {"key":"\\x41\\x42\\x43\\x44"}
> {"key":"\\x45\\x46\\x47\\x48"}
> {"key":"\\x49\\x41\\x44\\x46"}
> {"key":"\\x4a\\x4b\\x4c\\x4d"}
> {"key":"\\x57\\x58\\x59\\x5a"}
> {"key":"\\x4e\\x4f\\x50\\x51"}
> {"key":"\\x46\\x46\\x46\\x46"}
> {noformat}
> results without the predicate - these are correct results
> {noformat}
> 0: jdbc:drill:schema=dfs.tmp> select convert_from(binary_string(key),'UTF8') 
> from `f1.json`;
> +---------+
> | EXPR$0  |
> +---------+
> | 0123    |
> | 4567    |
> | 8901    |
> | 0000    |
> | 1111    |
> | 5555    |
> | 8888    |
> | 9999    |
> | ABCD    |
> | EFGH    |
> | IADF    |
> | JKLM    |
> | WXYZ    |
> | NOPQ    |
> | FFFF    |
> +---------+
> 15 rows selected (0.256 seconds)
> {noformat}
> results with a predicate - these results don't look correct
> {noformat}
> 0: jdbc:drill:schema=dfs.tmp> select convert_from(binary_string(key),'UTF8') 
> from `f1.json` where convert_from(binary_string(key),'UTF8') is not null;
> +----------+
> |  EXPR$0  |
> +----------+
> | 0123123  |
> | 4567567  |
> | 8901901  |
> | 0000000  |
> | 1111111  |
> | 5555555  |
> | 8888888  |
> | 9999999  |
> | ABCDBCD  |
> | EFGHFGH  |
> | IADFADF  |
> | JKLMKLM  |
> | WXYZXYZ  |
> | NOPQOPQ  |
> | FFFFFFF  |
> +----------+
> 15 rows selected (0.279 seconds)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to