[ 
https://issues.apache.org/jira/browse/DERBY-4748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12890284#action_12890284
 ] 

Knut Anders Hatlen commented on DERBY-4748:
-------------------------------------------

By the way, I think the isolateAnyInitialIdentifier() method is somewhat more 
complex than it needs to be in the first place. Replacing it with something 
like the (untested) loop below would probably solve the out-of-bounds exception 
and also make the method easier to read since it has fewer special cases to 
check for.

        int idx;
        for (idx = 0; idx < sql.length(); idx++) {
            char ch = sql.charAt(idx);
            if (!Character.isLetter(ch)) {
                // first non-token char found
                break;
            }
        }
        // return initial token if one is found, or the entire string otherwise
        return (idx > 0) ? sql.substring(0, idx) : sql;

> StringIndexOutOfBoundsException on syntax error (invalid COMMIT)
> ----------------------------------------------------------------
>
>                 Key: DERBY-4748
>                 URL: https://issues.apache.org/jira/browse/DERBY-4748
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client, SQL
>    Affects Versions: 10.4.2.1, 10.5.3.1, 10.6.1.0, 10.7.0.0
>         Environment: Windows XP
>            Reporter: Stephen Felts
>            Assignee: Kristian Waagan
>         Attachments: derby-4748-1a-sioobe.diff
>
>
> Start the network server on port 1527 on localhost.
> Run ant on the following:
> <project default="all"> 
>   <property environment="env" /> 
>   <path id="derby.classpath.id"> 
>     <fileset dir="${env.DERBY_LIB"> 
>       <include name="derbynet.jar" /> 
>       <include name="derbyclient.jar" /> 
>     </fileset> 
>   </path> 
>   <target name="all"> 
>     <sql driver="org.apache.derby.jdbc.ClientDriver" 
>          
> url="jdbc:derby://localhost:1527/derbyDB;create=true;user=derbyuser;passsword=derbypwd"
>  
>          userid="derbyuser" 
>          password="derbypwd" 
>          classpathref="derby.classpath.id" 
>          onerror="continue">
> create table mytable1 (mycol varchar(255)); 
> commit; 
>     </sql> 
>   </target> 
> </project> 
> On 10.5.3, I get
>       [sql] Executing commands 
>       [sql] Failed to execute:  commit 
>       [sql] java.sql.SQLSyntaxErrorException: Syntax error: Encountered 
> "commit" 
>  at line 1, column 1. 
>       [sql] 1 of 2 SQL statements executed successfully 
> but on 10.6.1, I get
>      [sql] Executing commands 
> BUILD FAILED 
> java.lang.StringIndexOutOfBoundsException: String index out of range: 6 
>         at java.lang.String.charAt(String.java:686) 
>         at 
> org.apache.derby.client.am.Statement.isolateAnyInitialIdentifier(Unknown 
> Source) 
>         at org.apache.derby.client.am.Statement.getStatementToken(Unknown 
> Source) 
>         at 
> org.apache.derby.client.am.Statement.parseSqlAndSetSqlModes(Unknown Source) 
> ....

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to