[jira] [Updated] (DERBY-7144) MERGE INSERT failing when target has GENERATED IDENTITY column

2022-08-23 Thread Bryan Pendleton (Jira)


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

Bryan Pendleton updated DERBY-7144:
---
Summary: MERGE INSERT failing when target has GENERATED IDENTITY column  
(was: MERGE INSERT failing when target has GENERATED INDENTITY column)

> MERGE INSERT failing when target has GENERATED IDENTITY 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
> Fix For: 10.15.2.1, 10.16.1.2, 10.17.0.0
>
> Attachments: branches-10.14.diff, bug-demo.zip, bug-demo2.zip, 
> derby-7144-01-aa-reformatTemporaryRowHolderImpl.diff, 
> derby-7144-02-ae-reformat.diff, 
> derby-7144-03-aa-computeRowTemplateAndTrackIdentityColumnsBetter.diff, 
> derby-7144-1.sql, derby-7144-2.sql, derby-7144-3.sql, derby-7144-default.sql, 
> derby-7144.sql, derby.log, svn-merge.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].: 

Re: JDK 19 first Release Candidates!

2022-08-23 Thread Rick Hillegas
Thanks, David. Derby built and tested cleanly with build 36 of Open JDK 
19. See https://issues.apache.org/jira/browse/DERBY-7133


On 8/22/22 6:16 AM, David Delabassee wrote:

Greetings!

I hope you had a chance to take some time off. On our side, and 
despite the summer vacation, everything is on track for the Java 19 GA 
release on September 20th with JDK 19 now in the Release Candidate 
Phase [1]. If you haven't done so yet, it is time to start testing 
your project(s) using the JDK 20 Early-Access builds. Speaking of 
Early-Access builds, there is now a new set of EA builds, i.e., the 
jextract EA builds. jextract is a tool developed under the Project 
Panama umbrella whose goal is to mechanically generates Java bindings 
from native library headers. If you are using the Foreign Function & 
Memory API (Preview Feature in JDK 19), make sure to check jextract 
too (see the jextract section below).


[1] https://mail.openjdk.org/pipermail/jdk-dev/2022-August/006861.html


## Heads-up - New system properties for `System.out` and `System.err` 
in JDK 19


Two new system properties, `stdout.encoding` and `stderr.encoding`, 
have been introduced. The value of these system properties is the 
encoding used by the standard output (`System.out`) and standard error 
(`System.err`) streams. The default values of these system properties 
depend on the platform. The values take on the value of the 
`native.encoding` property when the platform does not provide streams 
for the console. The properties can be overridden on the launcher's 
command line option, with `-D`, to set them to UTF-8 where required. 
For more details see https://bugs.openjdk.org/browse/JDK-8283620



## Heads-up - SSLSocketImpl finalizer implementation removed in JDK 19

The finalizer implementation in SSLSocket has been removed, with the 
underlying native resource releases now done by the Socket 
implementation. With this update, the TLS close_notify messages will 
no longer be emitted if SSLSocket is not explicitly closed. Not 
closing Sockets properly is an error condition that should be avoided. 
Applications should always close sockets and not rely on garbage 
collection. For more details see 
https://bugs.openjdk.org/browse/JDK-8212136



## Heads-up - New providerPath jarsigner option in JDK 19

A new `-providerPath` option has been added to the jarsigner. This 
option is used to specify the class path of an alternate keystore 
implementation, it can be used together with the -providerClass 
option. For more details see https://bugs.openjdk.org/browse/JDK-8281175



## JDK 19 Release Candidate builds

JDK 19 first Release Candidates (builds 36) are now available [2], and 
are provided under the GNU General Public License v2, with the 
Classpath Exception. The Release Notes are available here [3].


[2] https://jdk.java.net/19/
[3] https://jdk.java.net/19/release-notes


## JDK 20 Early-Access builds

JDK 20 Early-Access builds 11 are now available [4], and are provided 
under the GNU General Public License v2, with the Classpath Exception. 
The Release Notes are available here [5].


[4] https://jdk.java.net/20/
[5] https://jdk.java.net/20/release-notes

### Recent changes that maybe of interest:

- JDK-8282730: LdapLoginModule throw NPE from logout method after 
login failure

- JDK-8290706: Remove the support for inline contiguous allocations
- JDK-8289551: Conversions between bit representations of half 
precision values and floats
- JDK-8290485: [vector] REVERSE_BYTES for byte type should not emit 
any instructions
- JDK-8289137: Automatically adapt Young/OldPLABSize and when setting 
only MinTLABSize

- JDK-8290034: Auto vectorize reverse bit operations.
- JDK-8290868: NMT: MallocSiteTable statistics improvements
- JDK-8291822: ARM32: Build errors with GCC 11 in 
frame::saved_oop_result [Reported by JaCoCo]

- JDK-8289249: Add methods to Elements for record constructors
- JDK-8283232: x86: Improve vector broadcast operations
- JDK-8288327: Executable.hasRealParameterData should not be volatile
- JDK-8291360: Create entry points to expose low-level class file 
information

- JDK-8290840: Refactor the "os" class
- JDK-8292327: InflaterInputStream.read throws EOFException
- JDK-8155246: Throw error if default java.security file is missing
- JDK-8289332: Auto-generate ids for user-defined headings
- JDK-8292153: x86: Represent Registers as values


## Jextract Early-Access Builds

Early Access Builds 19-jextract+2-3 (2022/7/19) are now available [6]. 
These open-source builds are provided under the GNU General Public 
License, version 2, with the Classpath Exception.


These builds are from the OpenJDK jextract project [7] which is part 
of Code Tools [8]. jextract is a tool developed under the Panama 
umbrealla whose goal is to mechanically generate Java bindings from 
native library headers. These EA builds are intended for advanced 
users, and are provided as a convenience so that they don't need to 
build it from the sources. 

[jira] [Commented] (DERBY-7133) Make it possible to build and test Derby cleanly with OpenJDK 19

2022-08-23 Thread Richard N. Hillegas (Jira)


[ 
https://issues.apache.org/jira/browse/DERBY-7133?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17583830#comment-17583830
 ] 

Richard N. Hillegas commented on DERBY-7133:


Derby built cleanly (including javadoc) with Open JDK version 19+36-2238. Tests 
ran cleanly with that JVM using both the classpath and the modulepath.

> Make it possible to build and test Derby cleanly with OpenJDK 19
> 
>
> Key: DERBY-7133
> URL: https://issues.apache.org/jira/browse/DERBY-7133
> Project: Derby
>  Issue Type: Task
>Affects Versions: 10.16.1.1
>Reporter: Richard N. Hillegas
>Priority: Major
> Attachments: derby-7133-01-aa-fixDeprecationWarnings.diff
>
>
> Builds of JDK 19 can be found at https://jdk.java.net/19/ We should adjust 
> Derby as necessary so that it builds cleanly (including javadoc) and tests 
> cleanly with this version of the platform.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (DERBY-7144) MERGE INSERT failing when target has GENERATED INDENTITY column

2022-08-23 Thread Richard N. Hillegas (Jira)


[ 
https://issues.apache.org/jira/browse/DERBY-7144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17583630#comment-17583630
 ] 

Richard N. Hillegas commented on DERBY-7144:


Thanks again for reporting this bug and for scripting a repro. Unless someone 
objects, I plan to close this issue soon.

> 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
> Fix For: 10.15.2.1, 10.16.1.2, 10.17.0.0
>
> Attachments: branches-10.14.diff, bug-demo.zip, bug-demo2.zip, 
> derby-7144-01-aa-reformatTemporaryRowHolderImpl.diff, 
> derby-7144-02-ae-reformat.diff, 
> derby-7144-03-aa-computeRowTemplateAndTrackIdentityColumnsBetter.diff, 
> derby-7144-1.sql, derby-7144-2.sql, derby-7144-3.sql, derby-7144-default.sql, 
> derby-7144.sql, derby.log, svn-merge.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 
>