Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-428

NetworkClient PreparedStatement.executeBatch() hangs if batch is too large (ArrayIndexOutOfBoundsException in Network Server)

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 10.1.3.2, 10.2.1.6
    • None
    • Linux atum01 2.4.20-31.9 #1 Tue Apr 13 18:04:23 EDT 2004 i686 i686 i386 GNU/Linux
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_03-b07)
      Java HotSpot(TM) Client VM (build 1.5.0_03-b07, mixed mode, sharing)

    Description

      When running

      s.executeUpdate("create table t (i integer)");
      PreparedStatement p = c.prepareStatement("insert into t values");
      for (int i=0; i<N; i++)

      { p.setInt(1,i); p.addBatch(); }

      System.out.println("Ok");
      p.executeBatch();

      If N is 9000
      The server reports:

      524272
      java.lang.ArrayIndexOutOfBoundsException: 524272
      at org.apache.derby.impl.drda.DDMWriter.startDdm(DDMWriter.java:315)
      at org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARD(DRDAConnThread.java:4937)
      at org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARDs(DRDAConnThread.java:4898)
      at org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARDs(DRDAConnThread.java:4888)
      at org.apache.derby.impl.drda.DRDAConnThread.checkWarning(DRDAConnThread.java:7239)
      at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTT(DRDAConnThread.java:3605)
      at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:859)
      at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:214)
      agentThread[DRDAConnThread_3,5,main]

      While the client hangs in executeBatch().

      If N is 8000, the client gets the following Exception:
      Exception in thread "main" org.apache.derby.client.am.BatchUpdateException: Non-atomic batch failure. The batch was submitted, but at least one exception occurred on an individual member of the batch. Use getNextException() to retrieve the exceptions for specific batched elements.
      at org.apache.derby.client.am.Agent.endBatchedReadChain(Agent.java:267)
      at org.apache.derby.client.am.PreparedStatement.executeBatchRequestX(PreparedStatement.java:1596)
      at org.apache.derby.client.am.PreparedStatement.executeBatchX(PreparedStatement.java:1467)
      at org.apache.derby.client.am.PreparedStatement.executeBatch(PreparedStatement.java:945)
      at AOIB.main(AOIB.java:24)

      Attachments

        1. b428.java
          1 kB
          Bryan Pendleton
        2. derby-428.diff
          5 kB
          Bryan Pendleton
        3. derby428_10_1.diff
          5 kB
          Katherine Marsden
        4. derby428_10_1.stat
          0.2 kB
          Katherine Marsden

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            bryanpendleton Bryan Pendleton
            bernt Bernt Johnsen
            Votes:
            2 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment