Jesse Santangelo created HIVE-17264:
---------------------------------------

             Summary: BaseSemanticAnalyzer.escapeSQLString escapes \0 unsafely
                 Key: HIVE-17264
                 URL: https://issues.apache.org/jira/browse/HIVE-17264
             Project: Hive
          Issue Type: Bug
          Components: Query Planning
            Reporter: Jesse Santangelo
            Priority: Minor


Currently escapeSQLString() converts the null character to \0. If there are 
numerical values after the null character, calling unescapeSQLString() can 
treat the resulting value as an octal literal.

Example:
"FOOBAR_EVENT\u00002017"
unescapeSQLString converts \u0000 to the null character. Calling 
escapeSQLString() on that resulting string currently gives
"FOOBAR_EVENT\02017"
A third call of unescapeSQLString() will then see \020 and convert it to 0x10.

This is an issue for the Hbase connector where key values are processed twice 
(I'm unfamiliar with the hive codebase so I don't know why) and so the 
connector gets the wrong key value if it's formatted like the example.

In my version I've changed escapeSQLString to replace the null character with 
'\u0000' instead of '\0' and that seems to have fixed the issue, but I don't 
know if that might break anything else.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to