Description
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 "\"
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)
Since my parameter has three "\" characters, the signal Count modulo is not 0 and the parameter is not set at all throwing an exception.
Attachments
Attachments
Issue Links
- Blocked
-
HIVE-18268 Hive Prepared Statement when split with double quoted in query fails
- Patch Available