[ https://issues.apache.org/jira/browse/HIVE-13625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ashutosh Chauhan updated HIVE-13625: ------------------------------------ Resolution: Fixed Fix Version/s: 2.2.0 Status: Resolved (was: Patch Available) Pushed to master. Thanks, Zoltan! > 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 > Components: JDBC > Reporter: Daya Venkatesan > Assignee: Zoltan Haindrich > Fix For: 2.2.0 > > Attachments: HIVE-13625.patch > > > 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)