[ https://issues.apache.org/jira/browse/DERBY-7134?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17718607#comment-17718607 ]
Dario Lucia commented on DERBY-7134: ------------------------------------ I hit a similar problem, same issue. The table is defined as: {{CREATE TABLE ACK_MESSAGE_TABLE (}} {{ UniqueId BIGINT NOT NULL,}} {{ GenerationTime TIMESTAMP NOT NULL,}} {{ MessageId BIGINT NOT NULL,}} {{ State SMALLINT NOT NULL,}} {{ UserName VARCHAR(32),}} {{ AcknowledgementTime TIMESTAMP,}} {{ AdditionalData BLOB,}} {{ PRIMARY KEY (UniqueId)}} {{)}} I get an exception (same reported by [~tlussnig] ), when my code tries to prepare a statement: {{@Override}} {{protected PreparedStatement createStoreStatement(Connection connection) throws SQLException {}} {{ if(LOG.isLoggable(Level.FINEST)) {}} {{ LOG.finest(this + " - preparing store statement: " + STORE_STATEMENT);}} {{ }}} {{ return connection.prepareStatement(STORE_STATEMENT); // <-- Exception here}} {{}}} {{The }}{{STORE_STATEMENT }}{{is this one:}} {{private static final String STORE_STATEMENT = "MERGE INTO ACK_MESSAGE_TABLE USING SYSIBM.SYSDUMMY1 ON UniqueId = ? " +}} {{"WHEN MATCHED THEN UPDATE SET GenerationTime = ?, MessageId = ?, State = ?, UserName = ?, AcknowledgementTime = ?, AdditionalData = ? " +}} {{"WHEN NOT MATCHED THEN INSERT (UniqueId,GenerationTime,MessageId,State,UserName,AcknowledgementTime,AdditionalData) VALUES (?,?,?,?,?,?,?)";}} The statement works perfectly when Derby is in embedded mode. As soon as I start it in network mode and I connect remotely, I have an exception on my side, as per StackOverflow topic linked in the first post. And on the server, Derby complains about a NullPointerException, as per report: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null > MERGE not Working over Nework > ----------------------------- > > Key: DERBY-7134 > URL: https://issues.apache.org/jira/browse/DERBY-7134 > Project: Derby > Issue Type: Bug > Components: Network Client > Affects Versions: 10.15.2.0 > Environment: Windows , Derby > Reporter: Thomas Lußnig > Priority: Major > > I Receive an error after sending Merge Statement via Netowrk to derby network > server. > The error was first mentioned 5 Years ago: > * > [https://stackoverflow.com/questions/41587515/derby-merge-statement-results-in-insufficient-data-while-reading-from-the-netwo] > And is till now active in derby. > SQL-Fehler: Unzureichende Daten beim Lesen aus dem Netz. Erwartet wurden > mindestens 21.272 Byte, empfangen wurden jedoch nur 0 Byte. Die Verbindung > wurde beendet. > MERGE INTO HUND USING SYSIBM.SYSDUMMY1 ON HUND.name='name' > WHEN MATCHED THEN UPDATE SET zwinger='ZW',zbn='zb' > WHEN NOT MATCHED THEN INSERT (name,zwinger,zbn)VALUES('a','zw','zb') > ; > Tue Mar 08 07:23:32 CET 2022 : Cannot invoke "String.length()" because > "<parameter1>" is null > java.lang.NullPointerException: Cannot invoke "String.length()" because > "<parameter1>" is null > at > org.apache.derby.impl.drda.DDMWriter.maxEncodedLength(DDMWriter.java:1138) > at org.apache.derby.impl.drda.DDMWriter.writeString(DDMWriter.java:1252) > at > org.apache.derby.impl.drda.DRDAConnThread.writeSQLCAGRP(DRDAConnThread.java:6338) > at > org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARD(DRDAConnThread.java:6167) > at > org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARDs(DRDAConnThread.java:6109) > at > org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:836) > at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300) > -- This message was sent by Atlassian Jira (v8.20.10#820010)