[jira] [Commented] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column
[ https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17573940#comment-17573940 ] Richard N. Hillegas commented on DERBY-7144: Further cleanup. {noformat} CONNECT 'jdbc:derby:memory:db;create=true'; CREATE TABLE targetData (ID BIGINT GENERATED ALWAYS AS IDENTITY); CREATE TABLE sourceData(CATEGORY INTEGER); INSERT INTO sourceData VALUES (10), (20), (30), (40), (50), (60); -- fails with this error: -- -- ERROR XJ001: Java exception: 'ASSERT FAILED row template is null for column[0].: org.apache.derby.shared.common.sanity.AssertFailure'. -- -- kills the connection MERGE INTO targetData target USING sourceData source ON 1 < 2 WHEN NOT MATCHED THEN INSERT (id) VALUES (DEFAULT); {noformat} > MERGE INSERT failing when target has GENERATED INDENTITY column > --- > > Key: DERBY-7144 > URL: https://issues.apache.org/jira/browse/DERBY-7144 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo.zip, bug-demo2.zip, derby-7144-1.sql, > derby-7144-2.sql, derby-7144-3.sql, derby-7144.sql, derby.log, sysinfo.out > > > _TL;DR:_ The following statement fails (most often) when the target table has > a GENERATED BY DEFAULT AS IDENTITY primary key: > {code:sql} > MERGE INTO AGGREGATEDATA target > USING TABLE (AGGREGATE_BULK_DATA()) source >ON target.CATEGORY = source.CATEGORY > AND target.AGGDATE = source.AGGDATE > WHEN MATCHED THEN > UPDATE SET VALUE = target.VALUE + source.VALUE, > ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME > ELSE source.ATTIME END, > AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT > WHEN NOT MATCHED THEN > INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) > VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, > source.AGGCOUNT) > {code} > {noformat} > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(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.ConnectionChild.handleException(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown > Source) > at net.example.derby.BugDemo.mergeData(BugDemo.java:124) > at net.example.derby.BugDemo.run(BugDemo.java:242) > at net.example.derby.BugDemo.main(BugDemo.java:212) > Caused by: ERROR XJ001: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown > Source) > ... 15 more > Caused by: java.lang.NullPointerException > at > org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil.createFormatIds(Unknown > Source) > at org.apache.derby.impl.store.access.heap.Heap.create(Unknown Source) > at > org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderImpl.insert(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MatchingClauseConstantAction.bufferThenRow(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MergeResultSet.collectAffectedRows(Unknown > Source) > at org.apache.derby.impl.sql.execute.MergeResultSet.open(Unknown Source) > at > org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
[jira] [Updated] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column
[ https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Richard N. Hillegas updated DERBY-7144: --- Attachment: derby-7144-3.sql > MERGE INSERT failing when target has GENERATED INDENTITY column > --- > > Key: DERBY-7144 > URL: https://issues.apache.org/jira/browse/DERBY-7144 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo.zip, bug-demo2.zip, derby-7144-1.sql, > derby-7144-2.sql, derby-7144-3.sql, derby-7144.sql, derby.log, sysinfo.out > > > _TL;DR:_ The following statement fails (most often) when the target table has > a GENERATED BY DEFAULT AS IDENTITY primary key: > {code:sql} > MERGE INTO AGGREGATEDATA target > USING TABLE (AGGREGATE_BULK_DATA()) source >ON target.CATEGORY = source.CATEGORY > AND target.AGGDATE = source.AGGDATE > WHEN MATCHED THEN > UPDATE SET VALUE = target.VALUE + source.VALUE, > ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME > ELSE source.ATTIME END, > AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT > WHEN NOT MATCHED THEN > INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) > VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, > source.AGGCOUNT) > {code} > {noformat} > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(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.ConnectionChild.handleException(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown > Source) > at net.example.derby.BugDemo.mergeData(BugDemo.java:124) > at net.example.derby.BugDemo.run(BugDemo.java:242) > at net.example.derby.BugDemo.main(BugDemo.java:212) > Caused by: ERROR XJ001: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown > Source) > ... 15 more > Caused by: java.lang.NullPointerException > at > org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil.createFormatIds(Unknown > Source) > at org.apache.derby.impl.store.access.heap.Heap.create(Unknown Source) > at > org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderImpl.insert(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MatchingClauseConstantAction.bufferThenRow(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MergeResultSet.collectAffectedRows(Unknown > Source) > at org.apache.derby.impl.sql.execute.MergeResultSet.open(Unknown Source) > at > org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown > Source) > ... 7 more > {noformat} > With the debug-version JARs I'm getting: > {noformat} > java.sql.SQLException: Java exception: 'ASSERT FAILED row template is null > for column[0].: org.apache.derby.shared.common.sanity.AssertFailure'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at org.apache.derby.impl.jdbc.Util.javaExc
[jira] [Commented] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column
[ https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17573937#comment-17573937 ] Richard N. Hillegas commented on DERBY-7144: Attaching a further revised version of derby-7144.sql. This script strips the target table down to one column and it strips the source table down to one column which is not involved in the driving join of the MERGE statement. I changed the identity column to ALWAYS rather than BY DEFAULT. The problem still occurs, provided that there are at least 6 rows in the source table. Here is the revised script: {noformat} CONNECT 'jdbc:derby:memory:db;create=true'; CREATE TABLE AGGREGATEDATA ( IDBIGINTGENERATED ALWAYS AS IDENTITY ); CREATE TABLE sourceData ( CATEGORY INTEGER ); INSERT INTO sourceData VALUES (10), (20), (30), (40), (50), (60) ; SELECT * FROM sourceData; -- fails with this error: -- -- ERROR XJ001: Java exception: 'ASSERT FAILED row template is null for column[0].: org.apache.derby.shared.common.sanity.AssertFailure'. -- -- kills the connection MERGE INTO AGGREGATEDATA target USING sourceData source ON 1 < 2 WHEN NOT MATCHED THEN INSERT (id) VALUES (DEFAULT); {noformat} > MERGE INSERT failing when target has GENERATED INDENTITY column > --- > > Key: DERBY-7144 > URL: https://issues.apache.org/jira/browse/DERBY-7144 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo.zip, bug-demo2.zip, derby-7144-1.sql, > derby-7144-2.sql, derby-7144.sql, derby.log, sysinfo.out > > > _TL;DR:_ The following statement fails (most often) when the target table has > a GENERATED BY DEFAULT AS IDENTITY primary key: > {code:sql} > MERGE INTO AGGREGATEDATA target > USING TABLE (AGGREGATE_BULK_DATA()) source >ON target.CATEGORY = source.CATEGORY > AND target.AGGDATE = source.AGGDATE > WHEN MATCHED THEN > UPDATE SET VALUE = target.VALUE + source.VALUE, > ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME > ELSE source.ATTIME END, > AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT > WHEN NOT MATCHED THEN > INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) > VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, > source.AGGCOUNT) > {code} > {noformat} > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(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.ConnectionChild.handleException(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown > Source) > at net.example.derby.BugDemo.mergeData(BugDemo.java:124) > at net.example.derby.BugDemo.run(BugDemo.java:242) > at net.example.derby.BugDemo.main(BugDemo.java:212) > Caused by: ERROR XJ001: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown > Source) > ... 15 more > Caused by: java.lang.NullPointerException > at > org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil.createFormatIds(Unknown > Source) > at org.apache.derby.impl.store.access.heap.Heap.create(Unknown Source) > at > org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.sql.execute.Te
[jira] [Updated] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column
[ https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Richard N. Hillegas updated DERBY-7144: --- Attachment: derby-7144-2.sql > MERGE INSERT failing when target has GENERATED INDENTITY column > --- > > Key: DERBY-7144 > URL: https://issues.apache.org/jira/browse/DERBY-7144 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo.zip, bug-demo2.zip, derby-7144-1.sql, > derby-7144-2.sql, derby-7144.sql, derby.log, sysinfo.out > > > _TL;DR:_ The following statement fails (most often) when the target table has > a GENERATED BY DEFAULT AS IDENTITY primary key: > {code:sql} > MERGE INTO AGGREGATEDATA target > USING TABLE (AGGREGATE_BULK_DATA()) source >ON target.CATEGORY = source.CATEGORY > AND target.AGGDATE = source.AGGDATE > WHEN MATCHED THEN > UPDATE SET VALUE = target.VALUE + source.VALUE, > ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME > ELSE source.ATTIME END, > AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT > WHEN NOT MATCHED THEN > INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) > VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, > source.AGGCOUNT) > {code} > {noformat} > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(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.ConnectionChild.handleException(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown > Source) > at net.example.derby.BugDemo.mergeData(BugDemo.java:124) > at net.example.derby.BugDemo.run(BugDemo.java:242) > at net.example.derby.BugDemo.main(BugDemo.java:212) > Caused by: ERROR XJ001: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown > Source) > ... 15 more > Caused by: java.lang.NullPointerException > at > org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil.createFormatIds(Unknown > Source) > at org.apache.derby.impl.store.access.heap.Heap.create(Unknown Source) > at > org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderImpl.insert(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MatchingClauseConstantAction.bufferThenRow(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MergeResultSet.collectAffectedRows(Unknown > Source) > at org.apache.derby.impl.sql.execute.MergeResultSet.open(Unknown Source) > at > org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown > Source) > ... 7 more > {noformat} > With the debug-version JARs I'm getting: > {noformat} > java.sql.SQLException: Java exception: 'ASSERT FAILED row template is null > for column[0].: org.apache.derby.shared.common.sanity.AssertFailure'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at org.apache.derby.impl.jdbc.Util.javaException(Util.java:2
[jira] [Commented] (DERBY-7145) MERGE UPDATE failing: Restore of a serializable or SQLData object of class , attempted to read more data than was originally stored
[ https://issues.apache.org/jira/browse/DERBY-7145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17573902#comment-17573902 ] Stanimir Stamenkov commented on DERBY-7145: --- {quote} [^bug-demo3.zip] – a revision of [bug-demo2.zip|https://issues.apache.org/jira/browse/DERBY-7144?focusedCommentId=17573279&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17573279] in DERBY-7144. {quote} {code:sql} -- insertNewAggregations INSERT INTO AGGREGATEDATA (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT, TMP) SELECT CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT, 65 FROM TABLE (FAUX_BULK_DATA()) source WHERE NOT EXISTS (SELECT 1 FROM AGGREGATEDATA target WHERE target.AGGDATE = source.AGGDATE AND target.CATEGORY = source.CATEGORY) -- updateExistingAggregations MERGE INTO AGGREGATEDATA target USING TABLE (FAUX_BULK_DATA()) source ON target.CATEGORY = source.CATEGORY AND target.AGGDATE = source.AGGDATE WHEN MATCHED THEN UPDATE SET VALUE = CASE WHEN target.TMP > 63 THEN target.VALUE ELSE target.VALUE + source.VALUE END, ATTIME = CASE WHEN target.TMP > 63 OR source.ATTIME < target.ATTIME THEN target.ATTIME ELSE source.ATTIME END, AGGCOUNT = CASE WHEN target.TMP > 63 THEN target.AGGCOUNT ELSE target.AGGCOUNT + source.AGGCOUNT END, TMP = 2 {code} As given in the description, the TMP column type is changed from BOOLEAN to: {code:sql} TMP BIGINTDEFAULT 1 NOT NULL, {code} > MERGE UPDATE failing: Restore of a serializable or SQLData object of class , > attempted to read more data than was originally stored > --- > > Key: DERBY-7145 > URL: https://issues.apache.org/jira/browse/DERBY-7145 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo3.zip, derby.log, derby2.log, sysinfo.txt > > > _\[May be related to DERBY-7144.\]_ > [^bug-demo3.zip] – a revision of {{bug-demo2.zip}} in DERBY-7144. Extract; > Copy the Derby JARs to a {{lib/}} subdirectory; Compile: > {noformat} > $ mkdir classes > $ javac -d classes src/net/example/derby/*.java > {noformat} > Run to see the problem: > {noformat} > $ java -cp "classes;lib/*" net.example.derby.BugDemo -seed -merge -print > {noformat} > {noformat} > Exception in thread "main" java.sql.SQLException: Restore of a serializable > or SQLData object of class , attempted to read more data than was originally > stored > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:431) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1436) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1709) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(EmbedPreparedStatement.java:320) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:309) > at net.example.derby.BugDemo.mergeData(BugDemo.java:125) > at net.example.derby.BugDemo.run(BugDemo.java:254) > at net.example.derby.BugDemo.main(BugDemo.java:224) > Caused by: ERROR XSDA7: Restore of a serializable or SQLData object of class > , attempted to read more data than was originally stored > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:290) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75) > ... 13 more > Caused by: java.io.EOFException > at > org.apache.derby.iapi.services.io.ArrayInputStream.readLong(ArrayInputStream.java:323) > at > org.apache.derby.iapi.types.SQLLongint.readExternal(S
[jira] [Comment Edited] (DERBY-7145) MERGE UPDATE failing: Restore of a serializable or SQLData object of class , attempted to read more data than was originally stored
[ https://issues.apache.org/jira/browse/DERBY-7145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17573897#comment-17573897 ] Stanimir Stamenkov edited comment on DERBY-7145 at 8/1/22 7:46 PM: --- {quote} _\[May be related to DERBY-7144.\]_ {quote} Doesn't appear affected by the presence or absence of GENERATED AS IDENTITY column – if I remove the ID column from the original demo, and declare instead ({{sqlStatements.properties}}): {code:sql|title=TABLE AGGREGATEDATA} PRIMARY KEY (AGGDATE, CATEGORY) {code} the problem is still observed. was (Author: stanio): {quote} _\[May be related to DERBY-7144.\]_ {quote} Doesn't appear affected by the presence or absence of GENERATED AS IDENTITY column – if I remote the ID column from the original demo, and declare instead ({{sqlStatements.properties}}): {code:sql|title=TABLE AGGREGATEDATA} PRIMARY KEY (AGGDATE, CATEGORY) {code} the problem is still observed. > MERGE UPDATE failing: Restore of a serializable or SQLData object of class , > attempted to read more data than was originally stored > --- > > Key: DERBY-7145 > URL: https://issues.apache.org/jira/browse/DERBY-7145 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo3.zip, derby.log, derby2.log, sysinfo.txt > > > _\[May be related to DERBY-7144.\]_ > [^bug-demo3.zip] – a revision of {{bug-demo2.zip}} in DERBY-7144. Extract; > Copy the Derby JARs to a {{lib/}} subdirectory; Compile: > {noformat} > $ mkdir classes > $ javac -d classes src/net/example/derby/*.java > {noformat} > Run to see the problem: > {noformat} > $ java -cp "classes;lib/*" net.example.derby.BugDemo -seed -merge -print > {noformat} > {noformat} > Exception in thread "main" java.sql.SQLException: Restore of a serializable > or SQLData object of class , attempted to read more data than was originally > stored > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:431) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1436) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1709) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(EmbedPreparedStatement.java:320) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:309) > at net.example.derby.BugDemo.mergeData(BugDemo.java:125) > at net.example.derby.BugDemo.run(BugDemo.java:254) > at net.example.derby.BugDemo.main(BugDemo.java:224) > Caused by: ERROR XSDA7: Restore of a serializable or SQLData object of class > , attempted to read more data than was originally stored > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:290) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75) > ... 13 more > Caused by: java.io.EOFException > at > org.apache.derby.iapi.services.io.ArrayInputStream.readLong(ArrayInputStream.java:323) > at > org.apache.derby.iapi.types.SQLLongint.readExternal(SQLLongint.java:184) > at > org.apache.derby.iapi.types.DataType.readExternalFromArray(DataType.java:276) > at > org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray(StoredPage.java:5676) > at > org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot(StoredPage.java:1514) > at > org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot(BasePage.java:450) > at > org.apache.derby.impl.store.raw.data.CachedPage.fetchFromSlot(CachedPage.java:53) > at > org.apache.derb
[jira] [Updated] (DERBY-7145) MERGE UPDATE failing: Restore of a serializable or SQLData object of class , attempted to read more data than was originally stored
[ https://issues.apache.org/jira/browse/DERBY-7145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Stanimir Stamenkov updated DERBY-7145: -- Attachment: derby2.log > MERGE UPDATE failing: Restore of a serializable or SQLData object of class , > attempted to read more data than was originally stored > --- > > Key: DERBY-7145 > URL: https://issues.apache.org/jira/browse/DERBY-7145 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo3.zip, derby.log, derby2.log, sysinfo.txt > > > _\[May be related to DERBY-7144.\]_ > [^bug-demo3.zip] – a revision of {{bug-demo2.zip}} in DERBY-7144. Extract; > Copy the Derby JARs to a {{lib/}} subdirectory; Compile: > {noformat} > $ mkdir classes > $ javac -d classes src/net/example/derby/*.java > {noformat} > Run to see the problem: > {noformat} > $ java -cp "classes;lib/*" net.example.derby.BugDemo -seed -merge -print > {noformat} > {noformat} > Exception in thread "main" java.sql.SQLException: Restore of a serializable > or SQLData object of class , attempted to read more data than was originally > stored > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:431) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1436) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1709) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(EmbedPreparedStatement.java:320) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:309) > at net.example.derby.BugDemo.mergeData(BugDemo.java:125) > at net.example.derby.BugDemo.run(BugDemo.java:254) > at net.example.derby.BugDemo.main(BugDemo.java:224) > Caused by: ERROR XSDA7: Restore of a serializable or SQLData object of class > , attempted to read more data than was originally stored > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:290) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75) > ... 13 more > Caused by: java.io.EOFException > at > org.apache.derby.iapi.services.io.ArrayInputStream.readLong(ArrayInputStream.java:323) > at > org.apache.derby.iapi.types.SQLLongint.readExternal(SQLLongint.java:184) > at > org.apache.derby.iapi.types.DataType.readExternalFromArray(DataType.java:276) > at > org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray(StoredPage.java:5676) > at > org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot(StoredPage.java:1514) > at > org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot(BasePage.java:450) > at > org.apache.derby.impl.store.raw.data.CachedPage.fetchFromSlot(CachedPage.java:53) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1518) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1487) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderResultSet.getNextRowCore(TemporaryRowHolderResultSet.java:499) > at > org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:148) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.getNextRowCore(UpdateResultSet.java:670) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:656) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:272) > at > org.apache.derby.impl.sql.exe
[jira] [Updated] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column
[ https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Richard N. Hillegas updated DERBY-7144: --- Attachment: derby-7144-1.sql > MERGE INSERT failing when target has GENERATED INDENTITY column > --- > > Key: DERBY-7144 > URL: https://issues.apache.org/jira/browse/DERBY-7144 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo.zip, bug-demo2.zip, derby-7144-1.sql, > derby-7144.sql, derby.log, sysinfo.out > > > _TL;DR:_ The following statement fails (most often) when the target table has > a GENERATED BY DEFAULT AS IDENTITY primary key: > {code:sql} > MERGE INTO AGGREGATEDATA target > USING TABLE (AGGREGATE_BULK_DATA()) source >ON target.CATEGORY = source.CATEGORY > AND target.AGGDATE = source.AGGDATE > WHEN MATCHED THEN > UPDATE SET VALUE = target.VALUE + source.VALUE, > ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME > ELSE source.ATTIME END, > AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT > WHEN NOT MATCHED THEN > INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) > VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, > source.AGGCOUNT) > {code} > {noformat} > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(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.ConnectionChild.handleException(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown > Source) > at net.example.derby.BugDemo.mergeData(BugDemo.java:124) > at net.example.derby.BugDemo.run(BugDemo.java:242) > at net.example.derby.BugDemo.main(BugDemo.java:212) > Caused by: ERROR XJ001: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown > Source) > ... 15 more > Caused by: java.lang.NullPointerException > at > org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil.createFormatIds(Unknown > Source) > at org.apache.derby.impl.store.access.heap.Heap.create(Unknown Source) > at > org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderImpl.insert(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MatchingClauseConstantAction.bufferThenRow(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MergeResultSet.collectAffectedRows(Unknown > Source) > at org.apache.derby.impl.sql.execute.MergeResultSet.open(Unknown Source) > at > org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown > Source) > ... 7 more > {noformat} > With the debug-version JARs I'm getting: > {noformat} > java.sql.SQLException: Java exception: 'ASSERT FAILED row template is null > for column[0].: org.apache.derby.shared.common.sanity.AssertFailure'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at org.apache.derby.impl.jdbc.Util.javaException(Util.java:274) > at
[jira] [Commented] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column
[ https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17573898#comment-17573898 ] Richard N. Hillegas commented on DERBY-7144: Attaching a revised version of derby-7144.sql. This script removes some unnecessary columns, the CASE expression, and the PRIMARY KEY and NOT NULL constraints. The problem still occurs. The problem goes away if I remove the GENERATED BY DEFAULT clause or any of the rows in the source table. Here is the revised script: {noformat} CONNECT 'jdbc:derby:memory:db;create=true'; CREATE TABLE AGGREGATEDATA ( IDBIGINTGENERATED BY DEFAULT AS IDENTITY, CATEGORY INTEGER, ATTIMETIMESTAMP ); CREATE TABLE sourceData ( CATEGORY INTEGER, ATTIMETIMESTAMP ); INSERT INTO sourceData VALUES (1, TIMESTAMP('2022-07-29 01:24:21.336')), (4, TIMESTAMP('2022-07-29 01:24:21.336')), (2, TIMESTAMP('2022-07-31 01:38:24.66')), (1, TIMESTAMP('2022-07-31 01:38:24.66')), (3, TIMESTAMP('2022-07-31 01:38:24.66')), (4, TIMESTAMP('2022-07-31 01:38:24.66')) ; SELECT * FROM sourceData; -- fails with this error: -- -- ERROR XJ001: Java exception: 'ASSERT FAILED row template is null for column[0].: org.apache.derby.shared.common.sanity.AssertFailure'. -- -- kills the connection MERGE INTO AGGREGATEDATA target USING sourceData source ON target.CATEGORY = source.CATEGORY WHEN MATCHED THEN UPDATE SET ATTIME = source.ATTIME WHEN NOT MATCHED THEN INSERT (CATEGORY, ATTIME) VALUES (source.CATEGORY, source.ATTIME); {noformat} > MERGE INSERT failing when target has GENERATED INDENTITY column > --- > > Key: DERBY-7144 > URL: https://issues.apache.org/jira/browse/DERBY-7144 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo.zip, bug-demo2.zip, derby-7144-1.sql, > derby-7144.sql, derby.log, sysinfo.out > > > _TL;DR:_ The following statement fails (most often) when the target table has > a GENERATED BY DEFAULT AS IDENTITY primary key: > {code:sql} > MERGE INTO AGGREGATEDATA target > USING TABLE (AGGREGATE_BULK_DATA()) source >ON target.CATEGORY = source.CATEGORY > AND target.AGGDATE = source.AGGDATE > WHEN MATCHED THEN > UPDATE SET VALUE = target.VALUE + source.VALUE, > ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME > ELSE source.ATTIME END, > AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT > WHEN NOT MATCHED THEN > INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) > VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, > source.AGGCOUNT) > {code} > {noformat} > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(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.ConnectionChild.handleException(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown > Source) > at net.example.derby.BugDemo.mergeData(BugDemo.java:124) > at net.example.derby.BugDemo.run(BugDemo.java:242) > at net.example.derby.BugDemo.main(BugDemo.java:212) > Caused by: ERROR XJ001: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown > Source) > ... 15 more > Caused by: java.lang.NullPointerException > at > org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil.createFormatIds(Unknown > Source
[jira] [Commented] (DERBY-7145) MERGE UPDATE failing: Restore of a serializable or SQLData object of class , attempted to read more data than was originally stored
[ https://issues.apache.org/jira/browse/DERBY-7145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17573897#comment-17573897 ] Stanimir Stamenkov commented on DERBY-7145: --- {quote} _\[May be related to DERBY-7144.\]_ {quote} Doesn't appear affected by the presence or absence of GENERATED AS IDENTITY column – if I remote the ID column from the original demo, and declare instead ({{sqlStatements.properties}}): {code:sql|title=TABLE AGGREGATEDATA} PRIMARY KEY (AGGDATE, CATEGORY) {code} the problem is still observed. > MERGE UPDATE failing: Restore of a serializable or SQLData object of class , > attempted to read more data than was originally stored > --- > > Key: DERBY-7145 > URL: https://issues.apache.org/jira/browse/DERBY-7145 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo3.zip, derby.log, sysinfo.txt > > > _\[May be related to DERBY-7144.\]_ > [^bug-demo3.zip] – a revision of {{bug-demo2.zip}} in DERBY-7144. Extract; > Copy the Derby JARs to a {{lib/}} subdirectory; Compile: > {noformat} > $ mkdir classes > $ javac -d classes src/net/example/derby/*.java > {noformat} > Run to see the problem: > {noformat} > $ java -cp "classes;lib/*" net.example.derby.BugDemo -seed -merge -print > {noformat} > {noformat} > Exception in thread "main" java.sql.SQLException: Restore of a serializable > or SQLData object of class , attempted to read more data than was originally > stored > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:431) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1436) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1709) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(EmbedPreparedStatement.java:320) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:309) > at net.example.derby.BugDemo.mergeData(BugDemo.java:125) > at net.example.derby.BugDemo.run(BugDemo.java:254) > at net.example.derby.BugDemo.main(BugDemo.java:224) > Caused by: ERROR XSDA7: Restore of a serializable or SQLData object of class > , attempted to read more data than was originally stored > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:290) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75) > ... 13 more > Caused by: java.io.EOFException > at > org.apache.derby.iapi.services.io.ArrayInputStream.readLong(ArrayInputStream.java:323) > at > org.apache.derby.iapi.types.SQLLongint.readExternal(SQLLongint.java:184) > at > org.apache.derby.iapi.types.DataType.readExternalFromArray(DataType.java:276) > at > org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray(StoredPage.java:5676) > at > org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot(StoredPage.java:1514) > at > org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot(BasePage.java:450) > at > org.apache.derby.impl.store.raw.data.CachedPage.fetchFromSlot(CachedPage.java:53) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1518) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1487) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderResultSet.getNextRowCore(TemporaryRowHolderResultSet.java:499) > at > org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteR
[jira] [Updated] (DERBY-7145) MERGE UPDATE failing: Restore of a serializable or SQLData object of class , attempted to read more data than was originally stored
[ https://issues.apache.org/jira/browse/DERBY-7145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Stanimir Stamenkov updated DERBY-7145: -- Attachment: sysinfo.txt > MERGE UPDATE failing: Restore of a serializable or SQLData object of class , > attempted to read more data than was originally stored > --- > > Key: DERBY-7145 > URL: https://issues.apache.org/jira/browse/DERBY-7145 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10 , JDK 11, Derby 10.15.2.0; > Windows 10 , JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo3.zip, derby.log, sysinfo.txt > > > _\[May be related to DERBY-7144.\]_ > [^bug-demo3.zip] – a revision of {{bug-demo2.zip}} in DERBY-7144. Extract; > Copy the Derby JARs to a {{lib/}} subdirectory; Compile: > {noformat} > $ mkdir classes > $ javac -d classes src/net/example/derby/*.java > {noformat} > Run to see the problem: > {noformat} > $ java -cp "classes;lib/*" net.example.derby.BugDemo -seed -merge -print > {noformat} > {noformat} > Exception in thread "main" java.sql.SQLException: Restore of a serializable > or SQLData object of class , attempted to read more data than was originally > stored > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:431) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1436) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1709) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(EmbedPreparedStatement.java:320) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:309) > at net.example.derby.BugDemo.mergeData(BugDemo.java:125) > at net.example.derby.BugDemo.run(BugDemo.java:254) > at net.example.derby.BugDemo.main(BugDemo.java:224) > Caused by: ERROR XSDA7: Restore of a serializable or SQLData object of class > , attempted to read more data than was originally stored > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:290) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75) > ... 13 more > Caused by: java.io.EOFException > at > org.apache.derby.iapi.services.io.ArrayInputStream.readLong(ArrayInputStream.java:323) > at > org.apache.derby.iapi.types.SQLLongint.readExternal(SQLLongint.java:184) > at > org.apache.derby.iapi.types.DataType.readExternalFromArray(DataType.java:276) > at > org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray(StoredPage.java:5676) > at > org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot(StoredPage.java:1514) > at > org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot(BasePage.java:450) > at > org.apache.derby.impl.store.raw.data.CachedPage.fetchFromSlot(CachedPage.java:53) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1518) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1487) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderResultSet.getNextRowCore(TemporaryRowHolderResultSet.java:499) > at > org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:148) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.getNextRowCore(UpdateResultSet.java:670) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:656) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:272) > at > org.apache.derby.impl.sql.execute.Matc
[jira] [Updated] (DERBY-7145) MERGE UPDATE failing: Restore of a serializable or SQLData object of class , attempted to read more data than was originally stored
[ https://issues.apache.org/jira/browse/DERBY-7145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Stanimir Stamenkov updated DERBY-7145: -- Environment: Windows 10, JDK 8, Derby 10.14.2.0; Windows 10, JDK 11, Derby 10.15.2.0; Windows 10, JDK 17, Derby 10.16.1.1. was: Windows 10, JDK 8, Derby 10.14.2.0; Windows 10 , JDK 11, Derby 10.15.2.0; Windows 10 , JDK 17, Derby 10.16.1.1. > MERGE UPDATE failing: Restore of a serializable or SQLData object of class , > attempted to read more data than was originally stored > --- > > Key: DERBY-7145 > URL: https://issues.apache.org/jira/browse/DERBY-7145 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo3.zip, derby.log, sysinfo.txt > > > _\[May be related to DERBY-7144.\]_ > [^bug-demo3.zip] – a revision of {{bug-demo2.zip}} in DERBY-7144. Extract; > Copy the Derby JARs to a {{lib/}} subdirectory; Compile: > {noformat} > $ mkdir classes > $ javac -d classes src/net/example/derby/*.java > {noformat} > Run to see the problem: > {noformat} > $ java -cp "classes;lib/*" net.example.derby.BugDemo -seed -merge -print > {noformat} > {noformat} > Exception in thread "main" java.sql.SQLException: Restore of a serializable > or SQLData object of class , attempted to read more data than was originally > stored > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:431) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1436) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1709) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(EmbedPreparedStatement.java:320) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:309) > at net.example.derby.BugDemo.mergeData(BugDemo.java:125) > at net.example.derby.BugDemo.run(BugDemo.java:254) > at net.example.derby.BugDemo.main(BugDemo.java:224) > Caused by: ERROR XSDA7: Restore of a serializable or SQLData object of class > , attempted to read more data than was originally stored > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:290) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75) > ... 13 more > Caused by: java.io.EOFException > at > org.apache.derby.iapi.services.io.ArrayInputStream.readLong(ArrayInputStream.java:323) > at > org.apache.derby.iapi.types.SQLLongint.readExternal(SQLLongint.java:184) > at > org.apache.derby.iapi.types.DataType.readExternalFromArray(DataType.java:276) > at > org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray(StoredPage.java:5676) > at > org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot(StoredPage.java:1514) > at > org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot(BasePage.java:450) > at > org.apache.derby.impl.store.raw.data.CachedPage.fetchFromSlot(CachedPage.java:53) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1518) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1487) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderResultSet.getNextRowCore(TemporaryRowHolderResultSet.java:499) > at > org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:148) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.getNextRowCore(UpdateResultSet.java:670) > at > org.apache.derby.impl.
[jira] [Updated] (DERBY-7145) MERGE UPDATE failing: Restore of a serializable or SQLData object of class , attempted to read more data than was originally stored
[ https://issues.apache.org/jira/browse/DERBY-7145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Stanimir Stamenkov updated DERBY-7145: -- Attachment: derby.log > MERGE UPDATE failing: Restore of a serializable or SQLData object of class , > attempted to read more data than was originally stored > --- > > Key: DERBY-7145 > URL: https://issues.apache.org/jira/browse/DERBY-7145 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10 , JDK 11, Derby 10.15.2.0; > Windows 10 , JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo3.zip, derby.log, sysinfo.txt > > > _\[May be related to DERBY-7144.\]_ > [^bug-demo3.zip] – a revision of {{bug-demo2.zip}} in DERBY-7144. Extract; > Copy the Derby JARs to a {{lib/}} subdirectory; Compile: > {noformat} > $ mkdir classes > $ javac -d classes src/net/example/derby/*.java > {noformat} > Run to see the problem: > {noformat} > $ java -cp "classes;lib/*" net.example.derby.BugDemo -seed -merge -print > {noformat} > {noformat} > Exception in thread "main" java.sql.SQLException: Restore of a serializable > or SQLData object of class , attempted to read more data than was originally > stored > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:431) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1436) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1709) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(EmbedPreparedStatement.java:320) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:309) > at net.example.derby.BugDemo.mergeData(BugDemo.java:125) > at net.example.derby.BugDemo.run(BugDemo.java:254) > at net.example.derby.BugDemo.main(BugDemo.java:224) > Caused by: ERROR XSDA7: Restore of a serializable or SQLData object of class > , attempted to read more data than was originally stored > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:290) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75) > ... 13 more > Caused by: java.io.EOFException > at > org.apache.derby.iapi.services.io.ArrayInputStream.readLong(ArrayInputStream.java:323) > at > org.apache.derby.iapi.types.SQLLongint.readExternal(SQLLongint.java:184) > at > org.apache.derby.iapi.types.DataType.readExternalFromArray(DataType.java:276) > at > org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray(StoredPage.java:5676) > at > org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot(StoredPage.java:1514) > at > org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot(BasePage.java:450) > at > org.apache.derby.impl.store.raw.data.CachedPage.fetchFromSlot(CachedPage.java:53) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1518) > at > org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetch(GenericScanController.java:1487) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderResultSet.getNextRowCore(TemporaryRowHolderResultSet.java:499) > at > org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:148) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.getNextRowCore(UpdateResultSet.java:670) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:656) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:272) > at > org.apache.derby.impl.sql.execute.Matchi
[jira] [Commented] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column
[ https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17573878#comment-17573878 ] Richard N. Hillegas commented on DERBY-7144: Attaching derby-7144.sql, a simpler repro of the problem. This script creates a target and a source table, puts some rows into the source table, and then issues a MERGE statement. The MERGE fails as described by Stanimir and it kills the connection. Here is the script: {noformat} CONNECT 'jdbc:derby:memory:db;create=true'; CREATE TABLE AGGREGATEDATA ( IDBIGINTPRIMARY KEY GENERATED BY DEFAULT AS IDENTITY NOT NULL, CATEGORY INTEGER NOT NULL, VALUE DOUBLENOT NULL, ATTIMETIMESTAMP NOT NULL, AGGDATE DATE NOT NULL, AGGCOUNT INTEGER NOT NULL, UNIQUE(AGGDATE, CATEGORY) ); CREATE TABLE sourceData ( CATEGORY INTEGER, VALUE DOUBLE, ATTIMETIMESTAMP, AGGDATE DATE, AGGCOUNT INTEGER ); INSERT INTO sourceData VALUES (1 , 45.67 , TIMESTAMP('2022-07-29 01:24:21.336' ), DATE('2022-07-29'), 3 ), (4 , 37.15 , TIMESTAMP('2022-07-29 01:24:21.336' ), DATE('2022-07-29'), 3 ), (2 , 123.34 , TIMESTAMP('2022-07-31 01:38:24.66' ), DATE('2022-07-31'), 3 ), (1 , 78.9, TIMESTAMP('2022-07-31 01:38:24.66' ), DATE('2022-07-31'), 2 ), (3 , 1.2 , TIMESTAMP('2022-07-31 01:38:24.66' ), DATE('2022-07-31'), 1 ), (4 , 5.6 , TIMESTAMP('2022-07-31 01:38:24.66' ), DATE('2022-07-31'), 1 ) ; SELECT * FROM sourceData; -- fails with this error: -- -- ERROR XJ001: Java exception: 'ASSERT FAILED row template is null for column[0].: org.apache.derby.shared.common.sanity.AssertFailure'. -- -- kills the connection MERGE INTO AGGREGATEDATA target USING sourceData source ON target.CATEGORY = source.CATEGORY AND target.AGGDATE = source.AGGDATE WHEN MATCHED THEN UPDATE SET VALUE = target.VALUE + source.VALUE, ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME ELSE source.ATTIME END, AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT WHEN NOT MATCHED THEN INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, source.AGGCOUNT); {noformat} > MERGE INSERT failing when target has GENERATED INDENTITY column > --- > > Key: DERBY-7144 > URL: https://issues.apache.org/jira/browse/DERBY-7144 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo.zip, bug-demo2.zip, derby-7144.sql, derby.log, > sysinfo.out > > > _TL;DR:_ The following statement fails (most often) when the target table has > a GENERATED BY DEFAULT AS IDENTITY primary key: > {code:sql} > MERGE INTO AGGREGATEDATA target > USING TABLE (AGGREGATE_BULK_DATA()) source >ON target.CATEGORY = source.CATEGORY > AND target.AGGDATE = source.AGGDATE > WHEN MATCHED THEN > UPDATE SET VALUE = target.VALUE + source.VALUE, > ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME > ELSE source.ATTIME END, > AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT > WHEN NOT MATCHED THEN > INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) > VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, > source.AGGCOUNT) > {code} > {noformat} > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(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.ConnectionChild.handleException(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedState
[jira] [Updated] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column
[ https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Richard N. Hillegas updated DERBY-7144: --- Attachment: derby-7144.sql > MERGE INSERT failing when target has GENERATED INDENTITY column > --- > > Key: DERBY-7144 > URL: https://issues.apache.org/jira/browse/DERBY-7144 > Project: Derby > Issue Type: Bug > Components: SQL >Affects Versions: 10.14.2.0, 10.15.2.0, 10.16.1.1 > Environment: Windows 10, JDK 8, Derby 10.14.2.0; > Windows 10, JDK 11, Derby 10.15.2.0; > Windows 10, JDK 17, Derby 10.16.1.1. >Reporter: Stanimir Stamenkov >Priority: Major > Attachments: bug-demo.zip, bug-demo2.zip, derby-7144.sql, derby.log, > sysinfo.out > > > _TL;DR:_ The following statement fails (most often) when the target table has > a GENERATED BY DEFAULT AS IDENTITY primary key: > {code:sql} > MERGE INTO AGGREGATEDATA target > USING TABLE (AGGREGATE_BULK_DATA()) source >ON target.CATEGORY = source.CATEGORY > AND target.AGGDATE = source.AGGDATE > WHEN MATCHED THEN > UPDATE SET VALUE = target.VALUE + source.VALUE, > ATTIME = CASE WHEN source.ATTIME < target.ATTIME THEN target.ATTIME > ELSE source.ATTIME END, > AGGCOUNT = target.AGGCOUNT + source.AGGCOUNT > WHEN NOT MATCHED THEN > INSERT (CATEGORY, VALUE, ATTIME, AGGDATE, AGGCOUNT) > VALUES (source.CATEGORY, source.VALUE, source.ATTIME, source.AGGDATE, > source.AGGCOUNT) > {code} > {noformat} > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(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.ConnectionChild.handleException(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown > Source) > at net.example.derby.BugDemo.mergeData(BugDemo.java:124) > at net.example.derby.BugDemo.run(BugDemo.java:242) > at net.example.derby.BugDemo.main(BugDemo.java:212) > Caused by: ERROR XJ001: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown > Source) > ... 15 more > Caused by: java.lang.NullPointerException > at > org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil.createFormatIds(Unknown > Source) > at org.apache.derby.impl.store.access.heap.Heap.create(Unknown Source) > at > org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown > Source) > at > org.apache.derby.impl.sql.execute.TemporaryRowHolderImpl.insert(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MatchingClauseConstantAction.bufferThenRow(Unknown > Source) > at > org.apache.derby.impl.sql.execute.MergeResultSet.collectAffectedRows(Unknown > Source) > at org.apache.derby.impl.sql.execute.MergeResultSet.open(Unknown Source) > at > org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown > Source) > ... 7 more > {noformat} > With the debug-version JARs I'm getting: > {noformat} > java.sql.SQLException: Java exception: 'ASSERT FAILED row template is null > for column[0].: org.apache.derby.shared.common.sanity.AssertFailure'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141) > at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252) > at org.apache.derby.impl.jdbc.Util.javaException(Util.java:274) > at > org.apache.derby.i