db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-2193) [import] ERROR 38000: StringIndexOutOfBoundsException was thrown while evaluating an expression.
Date Fri, 13 Apr 2007 20:37:15 GMT

    [ https://issues.apache.org/jira/browse/DERBY-2193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12488777
] 

Rick Hillegas commented on DERBY-2193:
--------------------------------------

Hi, Aaron. I agree that this JIRA can be closed now. I think that you have identified additional
problems with Import which deserve their own JIRAs. You can link those new JIRAs back to this
one for context.

The last problem is going to be harder to solve. That is because the parsing problems don't
turn up when the file is read. The file reading code treats all columns as strings. The parsing
errors happen further down the line when Derby tries to cast the strings to other datatypes.
Derby is executing a query with the following shape (see the comments on Import.performImport()):

insert into targetTable
  select (cast v.column1 as decimal), (cast v.column2 as integer)
  from new org.apache.derby.impl.load.Import( ... ) as v

So the fix is not in the import code per se. The problem is more general: the casting logic
doesn't know much about the context it's operating in.

> [import] ERROR 38000: StringIndexOutOfBoundsException was thrown while evaluating an
expression.
> ------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-2193
>                 URL: https://issues.apache.org/jira/browse/DERBY-2193
>             Project: Derby
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 10.2.1.6
>            Reporter: Aaron Digulla
>         Attachments: derby-2193-01.diff, derby-2193-02-rev2.diff, derby-2193-02.diff,
derby-2193-script.jar
>
>
> During import of a file, I get this error:
> ERROR 38000: The exception 'java.sql.SQLException: Java exception: 'java.lang.StringIndexOutOfBoundsException:
String index out of range: -14'.' was thrown while evaluating an expression.
> 	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> 	at org.apache.derby.iapi.error.StandardException.unexpectedUserException(Unknown Source)
> 	at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.CallStatementResultSet.open(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown Source)
> 	...
> How am I supposed to find what's wrong in a big import? :-) It should at least mention
the file which I was importing, the row and the column when the error occurred.
> After printing the whole exceptions chain, I got these additional two:
> ERROR XJ001: Java exception: 'java.lang.StringIndexOutOfBoundsException: String index
out of range: -14'.
> 	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> 	at org.apache.derby.iapi.error.StandardException.plainWrapException(Unknown Source)
> 	at org.apache.derby.impl.load.LoadError.unexpectedError(Unknown Source)
> 	at org.apache.derby.impl.load.ImportAbstract.next(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.VTIResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown
Source)
> 	at org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.NoPutResultSetImpl.getNextRowFromRowSource(Unknown
Source)
> 	at org.apache.derby.impl.store.access.heap.HeapController.load(Unknown Source)
> 	at org.apache.derby.impl.store.access.heap.Heap.load(Unknown Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.loadConglomerate(Unknown Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.recreateAndLoadConglomerate(Unknown
Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.createAndLoadConglomerate(Unknown
Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.bulkInsertCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)
> 	at org.apache.derby.impl.load.Import.performImport(Unknown Source)
> 	at org.apache.derby.impl.load.Import.importData(Unknown Source)
> 	at org.apache.derby.catalog.SystemProcedures.SYSCS_IMPORT_DATA(Unknown Source)
> 	at org.apache.derby.exe.ac07170079x010fx9622xb7bax00000011a6e80.g0(Unknown Source)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.CallStatementResultSet.open(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown Source)
> 	...
> java.lang.StringIndexOutOfBoundsException: String index out of range: -14
> 	at java.lang.String.<init>(String.java:202)
> 	at org.apache.derby.impl.load.ImportReadData.readNextDelimitedRow(Unknown Source)
> 	at org.apache.derby.impl.load.ImportReadData.readNextRow(Unknown Source)
> 	at org.apache.derby.impl.load.ImportAbstract.next(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.VTIResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown
Source)
> 	at org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.NoPutResultSetImpl.getNextRowFromRowSource(Unknown
Source)
> 	at org.apache.derby.impl.store.access.heap.HeapController.load(Unknown Source)
> 	at org.apache.derby.impl.store.access.heap.Heap.load(Unknown Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.loadConglomerate(Unknown Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.recreateAndLoadConglomerate(Unknown
Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.createAndLoadConglomerate(Unknown
Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.bulkInsertCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)
> 	at org.apache.derby.impl.load.Import.performImport(Unknown Source)
> 	at org.apache.derby.impl.load.Import.importData(Unknown Source)
> 	at org.apache.derby.catalog.SystemProcedures.SYSCS_IMPORT_DATA(Unknown Source)
> 	...

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


Mime
View raw message