You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Daya Venkatesan (JIRA)" <ji...@apache.org> on 2016/04/27 08:14:12 UTC
[jira] [Created] (HIVE-13625) Hive Prepared Statement when executed
with escape characters in parameter fails
Daya Venkatesan created HIVE-13625:
--------------------------------------
Summary: Hive Prepared Statement when executed with escape characters in parameter fails
Key: HIVE-13625
URL: https://issues.apache.org/jira/browse/HIVE-13625
Project: Hive
Issue Type: Bug
Reporter: Daya Venkatesan
When setting parameters to a Hive Prepared Statement, if the parameter has an odd number of escape characters, then the Statement fails.
For example, I set one of the parameters to "/somepath/\044{yyyy}/\044{MM}/\044{dd}/". Here, I have escaped the dollar character with \044 because Hive gives an Atlas exception with "$" character.
Now, when the parameters are getting set inside Hive, getCharIndexFromSqlByParamLocation throws an Exception.
Hive records something called signal count.
if (c == '\'' || c == '\\')// record the count of char "'" and char "\"
{
signalCount++;
}
And the parameter is set only if the signalCount %2 is 0.
else if (c == cchar && signalCount % 2 == 0) {// check if the ? is really the parameter
num++;
if (num == paramLoc) {
charIndex = i;
break;
}
Since my parameter has three "\" characters, the signal Count modulo is not 0 and the parameter is not set at all throwing an exception.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)