<!-- 
RSS generated by JIRA (4.4#649-r158309) at Mon May 20 00:55:09 CDT 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://dev.clojure.org/jira/si/jira.issueviews:issue-xml/JDBC-12/JDBC-12.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Clojure JIRA</title>
    <link>http://dev.clojure.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>4.4</version>
        <build-number>649</build-number>
        <build-date>25-07-2011</build-date>
    </build-info>

<item>
            <title>[JDBC-12] exceptions when trying to insert into apache derby</title>
                <link>http://dev.clojure.org/jira/browse/JDBC-12</link>
                <project id="10021" key="JDBC">java.jdbc</project>
                        <description>
&lt;p&gt;java.sql.SQLException: Only executeBatch and clearBatch allowed in the middle of a batch.&lt;br/&gt;
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.ConnectionChild.newSQLException(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.EmbedStatement.checkIfInMiddleOfBatch(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)&lt;br/&gt;
	at clojure.java.jdbc.internal$do_prepared_return_keys_STAR_$fn__84.invoke(internal.clj:272)&lt;br/&gt;
	at clojure.java.jdbc.internal$transaction_STAR_.invoke(internal.clj:185)&lt;br/&gt;
	at clojure.java.jdbc.internal$do_prepared_return_keys_STAR_.doInvoke(internal.clj:272)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:140)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.java.jdbc$insert_values.doInvoke(jdbc.clj:259)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:443)&lt;br/&gt;
	at hiredman.triples$store_triple$fn_&lt;em&gt;471$fn&lt;/em&gt;_472.invoke(triples.clj:39)&lt;br/&gt;
	at clojure.java.jdbc.internal$transaction_STAR_.invoke(internal.clj:174)&lt;br/&gt;
	at hiredman.triples$store_triple$fn__471.invoke(triples.clj:39)&lt;br/&gt;
	at clojure.java.jdbc.internal$with_connection_STAR_.invoke(internal.clj:156)&lt;br/&gt;
	at hiredman.triples$store_triple.invoke(triples.clj:39)&lt;br/&gt;
	at hiredman.clojurebot.factoids$fn__2689.invoke(factoids.clj:139)&lt;br/&gt;
	at clojure.lang.MultiFn.invoke(MultiFn.java:167)&lt;br/&gt;
	at hiredman.clojurebot.factoids$factoid_command_run.invoke(factoids.clj:173)&lt;br/&gt;
	at conduit.core$fn_&lt;em&gt;284$a_arr&lt;/em&gt;&lt;em&gt;285$a_arr&lt;/em&gt;_286.invoke(core.clj:233)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$a_except$a_except__307.invoke(core.clj:350)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:42)&lt;br/&gt;
	at clojurebot.conduit$a_indirect$this_fn__500.invoke(conduit.clj:9)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.irc$reply_fn$irc_reply_fn__350.invoke(irc.clj:22)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$select_fn.invoke(core.clj:148)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.irc$irc_run$handle_msg__421.invoke(irc.clj:166)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:165)&lt;br/&gt;
	at clojure.lang.AFn.applyTo(AFn.java:151)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojure.core$partial$fn__3678.doInvoke(core.clj:2009)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:409)&lt;br/&gt;
	at conduit.core$comp_fn$a_comp__193.invoke(core.clj:45)&lt;br/&gt;
	at conduit.core$a_run.invoke(core.clj:28)&lt;br/&gt;
	at conduit.irc$irc_run$run__424.invoke(irc.clj:175)&lt;br/&gt;
	at conduit.irc$irc_run.doInvoke(irc.clj:179)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:140)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:542)&lt;br/&gt;
	at clojurebot.core$&lt;em&gt;main$fn&lt;/em&gt;_4654.invoke(core.clj:214)&lt;br/&gt;
	at clojure.lang.AFn.call(AFn.java:18)&lt;br/&gt;
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)&lt;br/&gt;
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)&lt;br/&gt;
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)&lt;br/&gt;
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)&lt;br/&gt;
	at java.lang.Thread.run(Thread.java:680)&lt;br/&gt;
Caused by: java.sql.SQLException: Only executeBatch and clearBatch allowed in the middle of a batch.&lt;br/&gt;
	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)&lt;br/&gt;
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)&lt;br/&gt;
	... 185 more&lt;/p&gt;

&lt;p&gt;replacing .executeUpdate with .executeBatch in do-prepared-return-keys* seems to fix the problem and be what was meant in the first place, the result is bound to &apos;counts&apos; and .executeUpdate returns a single count while .executeBatch returns multiple&lt;/p&gt;</description>
                <environment></environment>
            <key id="14530">JDBC-12</key>
            <summary>exceptions when trying to insert into apache derby</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="seancorfield">Sean Corfield</assignee>
                                <reporter username="hiredman">Kevin Downey</reporter>
                        <labels>
                    </labels>
                <created>Sun, 24 Jul 2011 04:23:11 -0500</created>
                <updated>Mon, 25 Jul 2011 16:52:00 -0500</updated>
                    <resolved>Mon, 25 Jul 2011 16:52:00 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26644" author="seancorfield" created="Sun, 24 Jul 2011 15:38:24 -0500"  >&lt;p&gt;Unfortunately .executeBatch had to be changed to .executeUpdate in order to solve &lt;a href=&quot;http://dev.clojure.org/jira/browse/JDBC-10&quot; title=&quot;Attempts to return generated keys on batch inserts fails on PostgreSQL and MS SQL Server&quot;&gt;&lt;del&gt;JDBC-10&lt;/del&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/clojure/java.jdbc/commit/9240d66c9124454187416861a0e2021952eb4f40&quot;&gt;https://github.com/clojure/java.jdbc/commit/9240d66c9124454187416861a0e2021952eb4f40&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MS SQL Server and PostgreSQL both fail on .executeUpdate in that call position.&lt;/p&gt;

&lt;p&gt;Clearly we need as many of these DBs up and running for automated testing as possible before I can attempt to fix this so that I don&apos;t accidentally break something else.&lt;/p&gt;</comment>
                    <comment id="26645" author="seancorfield" created="Sun, 24 Jul 2011 17:26:54 -0500"  >&lt;p&gt;I now have some unit tests for MySQL, HSQLDB and Derby. insert-records fails with the exception reported here, only for Derby. I&apos;ll complete the suite of tests, try to get PostgreSQL and MS SQL Server tests running as well and then I&apos;ll be in a good position to fix things...&lt;/p&gt;</comment>
                    <comment id="26649" author="seancorfield" created="Mon, 25 Jul 2011 16:52:00 -0500"  >&lt;p&gt;The culprit was .addBatch which has now been removed and do-prepared-return-keys now explicitly only has one param-group argument.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                        <customfield id="customfield_10003" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                <customfieldname>Waiting On</customfieldname>
                <customfieldvalues>
                    <customfieldvalue>seancorfield</customfieldvalue>
                </customfieldvalues>
            </customfield>
                            </customfields>
    </item>
</channel>
</rss>