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

Tom Deering updated DERBY-5981:
-------------------------------

    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 a long 
delay 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 my insert size is actually 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.

  was:
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 a long 
delay I get:

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

This code works fine for smallish inserts, but overflows the stack for anything 
modestly large. 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.

    
> Derby INSERT Causes java.lang.StackOverflowError
> ------------------------------------------------
>
>                 Key: DERBY-5981
>                 URL: https://issues.apache.org/jira/browse/DERBY-5981
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.9.1.0
>         Environment: Ubuntu Linux 12.04.1 64-bit, Sun Java 1.7.0_09, Derby 
> 10.9.1.0
>            Reporter: Tom Deering
>
> 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 a long delay 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 my insert size is actually 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.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to