I agree should log a JIRA then all the information and suggestions can
go there.  Having a line number would help a lot for exact cause of the
null pointer.

Historically SYSCS_COMPRESS_TABLE has been the most stable of the 2 compression techniques, and is the one I most recommend.

The lowest part of the stack looks kind of wierd, but hard to know
exactly what is going on as part of the stack is missing.  It sort of
looks like it is failing while setting up a connection rather than in
your code.  Can you tell from the line numbers where in your code it
is failing?

Also include full derby.log, sometimes that can give more information.

I can't tell from your program fragment. Is the connection autocommit on or off? If it is on, there might be a problem with your resultset.

On 9/4/2012 7:39 PM, Brett Wooldridge wrote:
This looks like a bug to me, I recommend you open one.  You might also
try SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE.  If you can copy the DB to
your dev environment, reproduce the issue, and run a derby 10.8.2.2
built with line numbers, it would probably help the devs pinpoint the issue.

Brett

On Wed, Sep 5, 2012 at 5:11 AM, Erick Lichtas <[email protected]
<mailto:[email protected]>> wrote:

    Hi Everyone,____

    __ __

    I am having an issue with the SYSCS_UTIL.SYSCS_COMPRESS_TABLE
    operation on a large table in Derby 10.8.2.2.____

    __ __

    Statement stmt = *null*;____

    CallableStatement cs = *null*;____

    *try*{____

            String sql = "select schemaname, tablename from
    sys.sysschemas s, "____

                   + "sys.systables t where s.schemaid=t.schemaid and
    t.tabletype='T'";____

            stmt = con.createStatement();____

            ResultSet rs = stmt.executeQuery(sql);____

            cs = con.prepareCall("call
    SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?)");____

    *while*(rs.next()) {____

                   String schema = rs.getString(1).trim();____

                   String table = rs.getString(2).trim();____

                   log("Compressing "+ schema + "."+ table + "...");____

                   cs.setString(1, schema);____

                   cs.setString(2, table);____

                   cs.setShort(3, (*short*) 1);____

                   cs.execute();____

            }____

    }____

    *finally*{____

    *if*(stmt != *null*) {____

                   stmt.close();____

            }____

    *if*(cs != *null*) {____

                   cs.close();____

            }____

    }____

    __ __

    The above code, successfully runs over 3 of 20 some tables, then
    hits the 4^th table with over 2 million records.  After working on
    this table for about 5 minutes, the process terminates with an
    SQLException wrapping a NPE. ____

    This happened in a production instance and I have not yet set up a
    reproduction in a development environment.  I’m wondering if anyone
    has any thoughts based on the stacktrace below?____

    __ __

    com.linoma.gaservices.upgrader.UpgradeException: Java exception: ':
    java.lang.NullPointerException'.____

                     at
    
com.linoma.gaservices.upgrader.DefaultUpgrader.upgrade(DefaultUpgrader.java:227)____

                     at
    
com.linoma.gaservices.upgrader.UnixUpgrader.upgrade(UnixUpgrader.java:32)____

                     at
    
com.linoma.gaservices.upgrader.UpgradeStarter.startUpgrade(UpgradeStarter.java:25)____

                     at
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)____

                     at
    
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)____

                     at
    
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)____

                     at java.lang.reflect.Method.invoke(Method.java:618)____

                     at my.app.upgrader.Startup.main(Startup.java:72)____

    Caused by: java.sql.SQLException: Java exception: ':
    java.lang.NullPointerException'.____

                     at
    org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
    Source)____

                     at
    org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)____

                     at
    org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)____

                     at
    
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
    Source)____

                     at
    org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
    Source)____

                     at
    org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
    Source)____

                     at
    org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)____

                     at
    org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Unknown Source)____

                     at
    org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)____

                     at
    org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)____

                     at
    java.sql.DriverManager.getConnection(DriverManager.java:572)____

                     at
    java.sql.DriverManager.getConnection(DriverManager.java:218)____

                     at
    
my.app.upgrader.db.DerbyDatabaseUpgrader.closeDB(DerbyDatabaseUpgrader.java:99)____

                     at
    my.app.upgrader.DefaultUpgrader.upgrade(DefaultUpgrader.java:223)____

                     ... 7 more ____

    Caused by: java.lang.NullPointerException____

                     at
    
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(Unknown
    Source)____

                     at
    
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(Unknown
    Source)____

                     at
    org.apache.derby.impl.store.raw.xact.Xact.openContainer(Unknown
    Source)____

                     at
    
org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(Unknown
    Source)____

                     at
    org.apache.derby.impl.store.access.heap.Heap.open(Unknown Source)____

                     at
    org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown
    Source)____

                     at
    org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown
    Source)____

                     at
    
org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndexMinion(Unknown
    Source)____

                     at
    
org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(Unknown
    Source)____

                     at
    org.apache.derby.impl.sql.catalog.DataDictionaryImpl.locateSchemaRow(Unknown
    Source)____

                     at
    
org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(Unknown
    Source)____

                     at
    
org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.initDefaultSchemaDescriptor(Unknown
    Source)____

                     at
    
org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.initialize(Unknown
    Source)____

                     at
    org.apache.derby.impl.db.BasicDatabase.setupConnection(Unknown
    Source)____

                     at
    org.apache.derby.impl.jdbc.TransactionResourceImpl.startTransaction(Unknown
    Source)____

                     at
    org.apache.derby.impl.jdbc.EmbedConnection.checkUserIsNotARole(Unknown
    Source)____

                     at
    org.apache.derby.impl.jdbc.EmbedConnection.checkUserCredentials(Unknown
    Source)____

                     ... 15 more ____

    __ __

    Regards,____

    __ __

    Erick____

    __ __



Reply via email to