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

Derby INSERT Eats Stack Space, Causes java.lang.StackOverflowError

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Duplicate
    • 10.9.1.0
    • None
    • SQL
    • None
    • Ubuntu Linux 12.04.1 64-bit, Sun Java 1.7.0_09, Derby 10.9.1.0
    • Normal

    Description

      Apache Derby 10.9.1.0 causes a java.lang.StackOverflowError with large INSERT statements. Here, "large" means 5000+ rows. I am using Derby in my Java application with the EmbeddedDriver in the following way:

      Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
      Connection connection = DriverManager.getConnection("jdbc:derby:<db path>;create=true;upgrade=true")

      String insertString = buildSQLInsertString();
      Statement stmt = connection.createStatement();
      stmt.execute(insertString); // StackOverflowError

      I have tried calling this in different ways, including with PreparedStatement. I have also tried increasing derby.storage.pageSize, to no effect. If I increase the VM argument -Xss to something insanely big, then after ~30 seconds I get:

      SQL Error: Statement too complex. Try rewriting the query to remove complexity. Eliminating many duplicate expressions or breaking up the query and storing interim results in a temporary table can often help resolve this error.

      My code works fine for smallish inserts, but overflows the stack for anything modestly large. I can't tell if Derby is using an unreasonably large amount of stack space with INSERT, or if the size of what I am inserting is unreasonable.

      I'm a newcomer to database development and also to Apache Derby, so suggestions for details to make this bug report more useful would be welcome.

      EDIT: I updated my code to insert in chunks of at most 1000 rows at a time. This seems to be a viable workaround... but I'm still interested in inserts using a single statement and wondering if there is a bug with Derby's INSERT.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              tdeering Tom Deering
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: