[
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.