From 1c75486642f7fb66b34548a8d9c8373a496a4eb1 Mon Sep 17 00:00:00 2001 From: Nick Liu Date: Sun, 28 Jan 2018 05:59:51 -0600 Subject: [PATCH] Permissive numeric field validation in db_verify db_verify::diffStructurePermissive() now checks for all MySQL/MariaDB numeric types and permissively allows the expected and actual default values to be strings rather than numerical. Fixes: #3011 Related: #2998 --- e107_handlers/db_verify_class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) mode change 100644 => 100755 e107_handlers/db_verify_class.php diff --git a/e107_handlers/db_verify_class.php b/e107_handlers/db_verify_class.php old mode 100644 new mode 100755 index a90a8cb3a..6418be6bc --- a/e107_handlers/db_verify_class.php +++ b/e107_handlers/db_verify_class.php @@ -147,11 +147,11 @@ class db_verify $expected['default'] = $actual['default']; } - // Loosely typed default value for int-like types - if(1 === preg_match('/[A-Z]*INT/i', $expected['type'])) + // Loosely typed default value for numeric types + if(1 === preg_match('/([A-Z]*INT|NUMERIC|DEC|FIXED|FLOAT|REAL|DOUBLE)/i', $expected['type'])) { - $expected['default'] = preg_replace("/DEFAULT '(\d+)'/i", 'DEFAULT $1', $expected['default']); - $actual['default'] = preg_replace("/DEFAULT '(\d+)'/i", 'DEFAULT $1', $actual['default'] ); + $expected['default'] = preg_replace("/DEFAULT '(\d*\.?\d*)'/i", 'DEFAULT $1', $expected['default']); + $actual['default'] = preg_replace("/DEFAULT '(\d*\.?\d*)'/i", 'DEFAULT $1', $actual['default'] ); } return array_diff_assoc($expected, $actual);