[
https://issues.apache.org/jira/browse/DRILL-3854?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15001115#comment-15001115
]
Chris Westin commented on DRILL-3854:
-------------------------------------
[~seanhychu], there are a few complex code replacement patterns that are not
handled by the scalar replacement code, and result in this kind of thing
happening internally. But it should be caught, and the code is regenerated
without the scalar replacement option. Did that not happen here? It's easy to
miss because you may have exception catching turned on in your IDE, but if you
just continue when you stop there, it is caught and handled; albeit without
scalar replacement taking place. Was that not the case?
> IOB Exception : CONVERT_FROM (sal, int_be)
> ------------------------------------------
>
> Key: DRILL-3854
> URL: https://issues.apache.org/jira/browse/DRILL-3854
> Project: Apache Drill
> Issue Type: Bug
> Components: Execution - Flow
> Affects Versions: 1.2.0
> Environment: 4 node cluster CentOS
> Reporter: Khurram Faraaz
> Assignee: Sean Hsuan-Yi Chu
> Priority: Critical
> Fix For: 1.4.0
>
> Attachments: log, run_time_code.txt
>
>
> CONVERT_FROM function results in IOB Exception
> Drill master commit id : b9afcf8f
> {code}
> 0: jdbc:drill:schema=dfs.tmp> select salary from Emp;
> +---------+
> | salary |
> +---------+
> | 80000 |
> | 90000 |
> | 200000 |
> | 95000 |
> | 85000 |
> | 90000 |
> | 100000 |
> | 87000 |
> | 80000 |
> | 100000 |
> | 99000 |
> +---------+
> 11 rows selected (0.535 seconds)
> # create table using above Emp table
> create table tbl_int_be as select convert_to(salary, 'int_be') sal from Emp;
> 0: jdbc:drill:schema=dfs.tmp> alter session set `planner.slice_target`=1;
> +-------+--------------------------------+
> | ok | summary |
> +-------+--------------------------------+
> | true | planner.slice_target updated. |
> +-------+--------------------------------+
> 1 row selected (0.19 seconds)
> # Below query results in IOB on server.
> 0: jdbc:drill:schema=dfs.tmp> select convert_from(sal, 'int_be') from
> tbl_int_be order by sal;
> Error: SYSTEM ERROR: IndexOutOfBoundsException: DrillBuf(ridx: 0, widx: 158,
> cap: 158/158, unwrapped: SlicedByteBuf(ridx: 0, widx: 158, cap: 158/158,
> unwrapped: UnsafeDirectLittleEndian(PooledUnsafeDirectByteBuf(ridx: 0, widx:
> 0, cap: 417/417)))).slice(158, 44)
> Fragment 2:0
> [Error Id: 4ee1361d-9877-45eb-bde6-57d5add9fe5e on centos-04.qa.lab:31010]
> (state=,code=0)
> # Apply convert_from function and project original column results in IOB on
> client. (because Error Id is missing)
> 0: jdbc:drill:schema=dfs.tmp> select convert_from(sal, 'int_be'), sal from
> tbl_int_be;
> Error: Unexpected RuntimeException: java.lang.IndexOutOfBoundsException:
> DrillBuf(ridx: 0, widx: 114, cap: 114/114, unwrapped: DrillBuf(ridx: 321,
> widx: 321, cap: 321/321, unwrapped:
> UnsafeDirectLittleEndian(PooledUnsafeDirectByteBuf(ridx: 0, widx: 0, cap:
> 321/321)))).slice(55, 103) (state=,code=0)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)