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

Knut Anders Hatlen updated DERBY-3302:
--------------------------------------

    Attachment: npe.sql

Attaching a script which reproduces the failure. Follow these steps:

1. Start ij

2. Execute this command in ij:
        run 'npe.sql';

3. Terminate ij with Ctrl-C (don't terminate it with Ctrl-D or EXIT, as those 
commands will perform a clean shutdown)

4. Restart ij

5. Open a connection to the database with this command:
        connect 'jdbc:derby:colldb';

Then you'll get a NullPointerException with the following stack trace:

java.lang.NullPointerException
        at 
org.apache.derby.iapi.types.SQLChar.getCollationKey(SQLChar.java:2516)
        at 
org.apache.derby.iapi.types.WorkHorseForCollatorDatatypes.stringCompare(WorkHorseForCollatorDatatypes.java:88)
        at 
org.apache.derby.iapi.types.CollatorSQLVarchar.stringCompare(CollatorSQLVarchar.java:159)
        at org.apache.derby.iapi.types.SQLChar.compare(SQLChar.java:902)
        at 
org.apache.derby.impl.store.access.btree.ControlRow.compareIndexRowToKey(ControlRow.java:1354)
        at 
org.apache.derby.impl.store.access.btree.index.B2IUndo.findUndo(B2IUndo.java:221)
        at 
org.apache.derby.impl.store.raw.data.LogicalPageOperation.findLogicalPage(LogicalPageOperation.java:358)
        at 
org.apache.derby.impl.store.raw.data.LogicalPageOperation.generateUndo(LogicalPageOperation.java:164)
        at 
org.apache.derby.impl.store.raw.log.FileLogger.undo(FileLogger.java:991)
        at org.apache.derby.impl.store.raw.xact.Xact.abort(Xact.java:919)
        at 
org.apache.derby.impl.store.raw.xact.XactFactory.rollbackAllTransactions(XactFactory.java:529)
        at 
org.apache.derby.impl.store.raw.log.LogToFile.recover(LogToFile.java:1201)
        at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:334)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1992)
        at 
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:546)
        at 
org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
        at 
org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1001)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1992)
        at 
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:546)
        at 
org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:419)
        at 
org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:753)
        at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:201)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1992)
        at 
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:291)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1829)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1695)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1575)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:994)
        at 
org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:542)
        at 
org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:1957)
        at 
org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:255)
        at 
org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:73)
        at 
org.apache.derby.impl.jdbc.EmbedConnection40.<init>(EmbedConnection40.java:54)
        at 
org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:68)
        at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:211)
        at 
org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:119)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:154)
        at org.apache.derby.impl.tools.ij.ij.dynamicConnection(ij.java:1238)
        at org.apache.derby.impl.tools.ij.ij.ConnectStatement(ij.java:1088)
        at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:916)
        at 
org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:328)
        at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:248)
        at org.apache.derby.impl.tools.ij.Main.go(Main.java:215)
        at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:181)
        at org.apache.derby.impl.tools.ij.Main.main(Main.java:73)
        at org.apache.derby.tools.ij.main(ij.java:59)
        at org.apache.derby.iapi.tools.run.main(run.java:51)

> NullPointerException during recovery of database with territory-based 
> collation
> -------------------------------------------------------------------------------
>
>                 Key: DERBY-3302
>                 URL: https://issues.apache.org/jira/browse/DERBY-3302
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.3.1.4, 10.3.2.1, 10.4.0.0
>            Reporter: Knut Anders Hatlen
>         Attachments: npe.sql
>
>
> When logical undo is performed on a database with territory-based collation, 
> you may get a NullPointerException in SQLChar.getCollationKey() because 
> SQLChar.getLocaleFinder() returns null.
> This bug was reported on derby-user: 
> http://thread.gmane.org/gmane.comp.apache.db.derby.user/8253

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