Bug 23825: Koha/Object.t might fail on a backtick
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Fri, 18 Oct 2019 09:31:10 +0000 (09:31 +0000)
committerVictor Grousset/tuxayo <victor@tuxayo.net>
Mon, 22 Jun 2020 23:12:58 +0000 (01:12 +0200)
If the SQL error message contains a backtick instead of a regular quote,
the regex for throwing an exception did not work.
Example:
Incorrect datetime value: 'wrong_value' for column `koha_master`.`borrowers`.`lastseen`
Note the backtics where the regex contains a regular quote.

This patch makes it more flexible: it allows one \W character before the
column name, even optional.

Test plan:
Run Koha/Object.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

(cherry picked from commit 480afea9ddf642fbd6ec499172e5ef6400905424)
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>

Koha/Object.pm

index 5154f24..d1ce135 100644 (file)
@@ -175,11 +175,12 @@ sub store {
                     duplicate_id => $+{key}
                 );
             }
-            elsif( $_->{msg} =~ /Incorrect (?<type>\w+) value: '(?<value>.*)' for column '(?<property>\w+)'/ ) {
+            elsif( $_->{msg} =~ /Incorrect (?<type>\w+) value: '(?<value>.*)' for column \W?(?<property>\S+)/ ) {
+            # The optional \W in the regex might be a quote or backtick
                 Koha::Exceptions::Object::BadValue->throw(
                     type     => $+{type},
                     value    => $+{value},
-                    property => $+{property}
+                    property => $+{property},
                 );
             }
         }