From 722556c354bc83d256077b303f72bffde5a4c0b9 Mon Sep 17 00:00:00 2001 From: maqroll Date: Wed, 23 Dec 2020 20:10:26 +0100 Subject: [PATCH] [CONJ-852] CmdInformationSingle.isDuplicateKeyUpdate() fails to detect ON DUPLICATE KEY clause if there are newlines in query. Solved by enabling DOTALL mode in regexp. --- .../jdbc/internal/com/read/dao/CmdInformationSingle.java | 2 +- src/test/java/org/mariadb/jdbc/MultiTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/mariadb/jdbc/internal/com/read/dao/CmdInformationSingle.java b/src/main/java/org/mariadb/jdbc/internal/com/read/dao/CmdInformationSingle.java index fa8f9408f..bef24a742 100644 --- a/src/main/java/org/mariadb/jdbc/internal/com/read/dao/CmdInformationSingle.java +++ b/src/main/java/org/mariadb/jdbc/internal/com/read/dao/CmdInformationSingle.java @@ -137,7 +137,7 @@ public ResultSet getGeneratedKeys(Protocol protocol, String sql) { } private boolean isDuplicateKeyUpdate(String sql) { - return sql.matches("(?i).*ON\\s+DUPLICATE\\s+KEY\\s+UPDATE.*"); + return sql.matches("(?s)(?i).*ON\\s+DUPLICATE\\s+KEY\\s+UPDATE.*"); } @Override diff --git a/src/test/java/org/mariadb/jdbc/MultiTest.java b/src/test/java/org/mariadb/jdbc/MultiTest.java index 3ce8f0048..f80a46192 100644 --- a/src/test/java/org/mariadb/jdbc/MultiTest.java +++ b/src/test/java/org/mariadb/jdbc/MultiTest.java @@ -1457,7 +1457,7 @@ public void shouldDuplicateKeyUpdateNotReturnExtraRows() throws Throwable { } try (PreparedStatement pstmt = con.prepareStatement( - "INSERT INTO testMultiGeneratedKey (id, text) VALUES (?, ?) " + "INSERT INTO testMultiGeneratedKey (id, text) \nVALUES (?, ?) " + "ON DUPLICATE KEY UPDATE text = VALUES(text)", Statement.RETURN_GENERATED_KEYS)) { // Insert a row.