[ 
https://issues.apache.org/jira/browse/HIVE-13548?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nasron Cheong updated HIVE-13548:
---------------------------------
    Description: 
Calling setString on a prepared statement with a string containing a '\' will 
cause the SQL construction to fail.

I believe the slash should be escaped by the setString function.

There may be other characters that require escaping during the same call.

Failure from the unittest without the patch:

{code}
Running org.apache.hive.jdbc.TestJdbcDriver2
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 9.738 sec <<< 
FAILURE! - in org.apache.hive.jdbc.TestJdbcDriver2
testSlashPreparedStatement(org.apache.hive.jdbc.TestJdbcDriver2)  Time elapsed: 
3.867 sec  <<< FAILURE!
java.lang.AssertionError: java.lang.StringIndexOutOfBoundsException: String 
index out of range: -1
        at org.junit.Assert.fail(Assert.java:88)
        at 
org.apache.hive.jdbc.TestJdbcDriver2.testSlashPreparedStatement(TestJdbcDriver2.java:522)


Results :

Failed tests: 
  TestJdbcDriver2.testSlashPreparedStatement:522 
java.lang.StringIndexOutOfBoundsException: String index out of range: -1

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
{code}

  was:
Calling setString on a prepared statement with a string containing a '\' will 
cause the SQL construction to fail.

I believe the slash should be escaped by the setString function.

There may be other characters that require escaping during the same call.


> hive-jdbc isn't escaping slashes during PreparedStatement
> ---------------------------------------------------------
>
>                 Key: HIVE-13548
>                 URL: https://issues.apache.org/jira/browse/HIVE-13548
>             Project: Hive
>          Issue Type: Bug
>          Components: JDBC
>            Reporter: Nasron Cheong
>            Assignee: Nasron Cheong
>         Attachments: HIVE-13548.patch
>
>
> Calling setString on a prepared statement with a string containing a '\' will 
> cause the SQL construction to fail.
> I believe the slash should be escaped by the setString function.
> There may be other characters that require escaping during the same call.
> Failure from the unittest without the patch:
> {code}
> Running org.apache.hive.jdbc.TestJdbcDriver2
> Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 9.738 sec <<< 
> FAILURE! - in org.apache.hive.jdbc.TestJdbcDriver2
> testSlashPreparedStatement(org.apache.hive.jdbc.TestJdbcDriver2)  Time 
> elapsed: 3.867 sec  <<< FAILURE!
> java.lang.AssertionError: java.lang.StringIndexOutOfBoundsException: String 
> index out of range: -1
>       at org.junit.Assert.fail(Assert.java:88)
>       at 
> org.apache.hive.jdbc.TestJdbcDriver2.testSlashPreparedStatement(TestJdbcDriver2.java:522)
> Results :
> Failed tests: 
>   TestJdbcDriver2.testSlashPreparedStatement:522 
> java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to