[
https://issues.apache.org/jira/browse/HIVE-25338?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17384268#comment-17384268
]
Stamatis Zampetakis commented on HIVE-25338:
--------------------------------------------
[~nareshpr] After having a second look in the PR I kind of change my mind. The
CONV function is mostly known from MySQL and I think the implementation so far
tends to stay as close to the MySQL version as possible.
I did a quick test in MySQL (version 8.0) and it returns the following results:
{noformat}
mysql> SELECT CONV('',10,2);
+---------------+
| CONV('',10,2) |
+---------------+
| NULL |
+---------------+
mysql> SELECT CONV('4?:+',10,2);
+-------------------+
| CONV('4?:+',10,2) |
+-------------------+
| 100 |
+-------------------+
mysql> SELECT CONV('1?:+0',10,2);
+--------------------+
| CONV('1?:+0',10,2) |
+--------------------+
| 1 |
+--------------------+
mysql> SELECT CONV('*10?:+2',10,2);
+----------------------+
| CONV('*10?:+2',10,2) |
+----------------------+
| 0 |
+----------------------+
1 row in set, 1 warning (0.00 sec)
Warning (Code 1292): Truncated incorrect DECIMAL value: '*10?:+2'
{noformat}
So for empty string it returns NULL and for invalid literals it tries to kind
of parse the literal till it finds an illegal character.
Based on the above I would suggest to return NULL for empty string as you had
it initially. Sorry for the back and forth.
> AIOBE in conv UDF if input is empty
> -----------------------------------
>
> Key: HIVE-25338
> URL: https://issues.apache.org/jira/browse/HIVE-25338
> Project: Hive
> Issue Type: Bug
> Reporter: Naresh P R
> Assignee: Naresh P R
> Priority: Major
> Labels: pull-request-available
> Time Spent: 40m
> Remaining Estimate: 0h
>
> Repro
> {code:java}
> create table test (a string);
> insert into test values ("");
> select conv(a,16,10) from test;{code}
> Exception trace:
> {code:java}
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
> at org.apache.hadoop.hive.ql.udf.UDFConv.evaluate(UDFConv.java:160){code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)