hive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daya Venkatesan (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HIVE-13625) Hive Prepared Statement when executed with escape characters in parameter fails
Date Wed, 27 Apr 2016 06:14:12 GMT
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)

Mime
View raw message